Skip to Content Java Solaris コミュニティ パートナー 開発者 マイ・アカウント ご購入について (0120-33-9096) Japan Worldwide

Feed Feed RSS 1.0 Feed RSS 2.0 Feed ATOM 1.0
Solaris超特急・デベロッパだヨ奥さぁーん!(1)「Cのシの字も知らないワタシがソルデベでバイナリハッキング」
  前号へ  
Steps

デスクトップは攻略した!ことにした!

次はいよいよソルデベの「デベ」な部分を探求していく。まずは「探」さなくてもドババーンと現れているSun Studioと、そのソバにある怪しげなツールを見つけた。それはヘッ....

ページ1 [1]
ページ1
ページ2 [2]
ページ2
ページ3 [3]
ページ3
ページ4 [4]
ページ4
    

ワタシは、「一方的な被害者」になるのが大嫌いだ。

大学にいたころ、みんながタバコを吸ってて、受動喫煙させられるのにムカときて、「チキショーワタシだって吸ってやる」と同居していた親にも隠れてタバコを吸い始めた。でも1年もしないうちに、口はヤニヤニするし、ドラマの女優さんのようにフワーと吹かせずハナケムリになるので、自分には向かないのだと大変納得してやめた。おかげで今はそれほど気にならない。

また、同じころ住んでいた地域はまだスパイクタイヤが規制されておらず、粉塵公害が蔓延していた。車に乗らないワタシは「チキショーワタシだってスパイクしてやる」と、そのころ流行っていた防寒運動靴「スノトレ」のスパイク付きのを履いて歩き回った。

もちろん婦人靴でそんなのはなくて、デカい男児用だった。両のつま先に「4WD」と書いてあったのが「なにがどう4WD」と周囲に大変ウケた。

そんなワタシだからUNIXを勉強しようと思ったのも、いわゆる「悪徳ハッカー」が問題となりはじめた時期、テレビのニュースで「こうしたハッカーは多くがUNIXという基本ソフトを使う高度なユーザで」みたいな(みたいだヨ。ハッキリ覚えてないヨ)ことを言うのをきいて、「チキショーワタシだって悪いことはしないけどそういう高度なユーザになってやる」と思ったからであった。

ところがUNIXといえばやっぱSolarisデショ(※1)とそれを勉強してみたら、NetBeansとかGnomeデスクトップとか、GUIの便利さをとことんまで追求するほうに大いに入れこんでしまった。今では「SDC SQUARE」さんで書かせてもらっている「COOL TOOLS」でも、「がッと落としてばッと展開してちゃちゃッとダブルクリックして動く」ものをつとめて選び、マニュアルに「依存パッケージの導...」とか出てきたところでもう「難しすぎる(※2)」と、決めつけてしまっている。

でもそんなワタシでも、もう初夏かと思わせる日差しの中を時折駆け抜ける冬の名残のようなひんやりする風に桜吹雪がいなせに舞うような春の午後などは(※3)、「でもやっぱり、Cとかアセンブリ?ラ?とかこうシステムにザックザック噛んでくるようなコードをいじって『遊んでみました(笑)』とか言えたらカッコイイだろうナ」などと、思ってみることもあるのだ。

その「そんなワタシでも」に述べたところのワタシが、そんなある日、ソルデベの起動メニューの「開発者ツール」をなんとなく開けてみて、ふと見つけたものがあった。それは、ヘッヘッヘエックショイええィまだチッと花粉症かなではなくて、「Hexエディタ」というものだ。

バイナリエディタ!それはいくつかの本で読んだことがある。バイナリファイル、例えばCでコンパイル済みのファイルを開いて、「00 AA」とか記号がズラリと書いてあるのをチョクで編集してしまうという、とてもカッコよさそうなツールだ。
ゼヒ使ってみたい!開けてみた。

「どぉーしろっつーんじゃアッ」と思った。

図1:ヘッヘッヘッヘェックスエディタというもの
図1:ヘッヘッヘッヘェックスエディタというもの
図2:開いた
図2:開いた

そのときワタシのアタマに以前読んだことのある本(※4)のサワリが思い浮かんだ。「コドモのころ(※5)、バイナリエディタを使ってゲームのデータをいじったことが...」みたいな。

それを探してきてもう一回読むと、「つまり、ゲームをちょっとだけ進めてその前後のセーブデータを比較し、どこに変更が加えられたかをつきとめれば、逆もまた真」のようなことが書いてあった。

なるほど。ということは自分でバイナリを作って遊べばいいんだ。

  1. 「A」を出力するプログラムをCで書いてコンパイルする。
  2. 「B」を出力するプログラムを同様に作る。
  3. 二つをバイナリエディタで開いて、どこが違うかを探す。
  4. 2. のバイナリを編集して、「B」の代わりに「A」を出力するように書き換えることができたら、
    あなたもバイナリハッカー!

ああ、バイナリハッキングしているカッコイイ自分の姿が早くも目に浮かびポーとなってしまう。さっそく「A」を出力する簡単なCプログラムを作ってみよう。でもどう書くんだっけ。

自慢じゃないが(※6)ワタシCは一度基礎本を一冊やったこたぁやったが、もうすっかり忘れてしまっている。今からその本を探すか?いや。

ソルデベにはあるじゃないか、CとかC++、FORTRAN(※7)までコンパイルできるSun Studioが。

そこには簡単なサンプルがあるに違いない。以前Sun Studioといえば、庶民ユーザにはその存在すらも謎と言われた高級商用ツール。それが今はソルデベにバンドルされていて、メニューからヒョイと立ち上げられる状態になっている。使わないのは宝の持ち腐れというものだ。NetBeans, Hexエディタと同じ「ヘルメットアイコン」の「開発者ツール」メニューにある。立ち上げるゼ。

図3:ご存じ(と威張るほど知らないけど)Sun Studioだッ。
図3:ご存じ(と威張るほど知らないけど)
Sun Studioだッ。
図4:開いた(クリックすると、わりと拡大します)
図4:開いた(クリックすると、わりと拡大します)

Sun StudioのインターフェイスはNetBeansのちょい古いバージョンとほぼ同じだ。これはだいたいNetBeans4か5かというところで、メニューから「File」そして「New Project」を開くのはもうおなじみの操作といってよいだろう。

図5のようなプロジェクトの作成ウィザードで、左側のリストから「Samples」を開いて「C/C++/Fortran」を選ぶ。

右側に、相応するプロジェクトのリストが現れるので、「Args」を選ぶ。下に表示される「Description」の内容からすると、コレがCで書かれたもっとも簡単なプログラムと推察される。

図5で「Next」をクリックすると、プロジェクトの名前とか作成場所が提案されるが、エエもうワタクシのような駆け出し者がカスタマイズなどトテモトテモ、どうぞ御随意にとやり過ごしてフィニッシュする。

するとできるぞプロジェクト。ただし図6はこの実験のためにすでに一度この「Args」プロジェクトを作ったり失敗したりしてるので、プロジェクト名が「Args_1」になっている。

この「Source Files」というノードを開くとargs.cというファイルが見つかる。

図6:「Args_1」となっているプロジェクト名に、サンプルプロジェクトでさえうまく扱えなさぶりが現れているがそれは気にしないでargs.cというソースが見つかったッ!
図6:「Args_1」となっているプロジェクト名に、サンプルプロジェクトでさえうまく扱えなさぶりが現れているが
それは気にしないでargs.cというソースが見つかったッ!

これを見てみれば簡単なCプログラムの書き方もわかるだろう。ダブルクリックして編集画面に表示させた瞬間はギャッと思うかも知れないが、図7のそれは使用上の注意などを書いた「コメント」なので恐るるに足らず。

図7:なにせCは知らないから、何が出てきてもビックリだ
図7:なにせCは知らないから、何が出てきてもビックリだ

図7をスクロールしていくと、下に目的のソースコードが見つかる。

図8:これがCのソースコードだ
図8:これがCのソースコードだ

これでもなんかめんどくさそーだ。でもいーのさ。ここで一番知りたかったことは

「なにか(改行込みで)出力しようと思ったら、printf("ナニナニ\n")て書きゃいいのか」

ということなんだから。だからこのサンプルを実行さえせずにさっさとマイファーストオリジナルメモリアルCプログラムプロデューストバイSunStudioを作ってしまう。

今度はプロジェクトの新規作成ウィザードで、左側は「C/C++/Fortran Development」を選び、右側に現れたリストから「C/C++/Fortran Application」を選ぶ。ちと名前が長い。

図9:新しいプロジェクトは「C/C++/Fortran Application」
図9:新しいプロジェクトは「C/C++/Fortran Application」

今度は、名前を自分で決めるとともに、自分のプロジェクトがどこに保存されるのかをしっかり見ておく。ホームフォルダの下に「SunStudioProjects」というフォルダがあって、そこに保存されることがわかる。

図10:「HelloA」というプロジェクト名を作った。ホームフォルダの下のSunStudioProjectsというところにできるとある
図10:「HelloA」というプロジェクト名を作った。
ホームフォルダの下のSunStudioProjectsというところにできるとある

プロジェクトができたら今度はファイルだ。ちょっと気をつけなければならないのは、NetBeansみたくこれはもうJavaのことなら全てわかりますどんなファイルをどこに作ればいいかもエエ全部心得ておりますからどうぞ万事お任せをというのとはチョイと違って、きっちりと「Source Files」ノードを狙い定めて(※9)右クリックし「new」>「main C File」を選ばないと、どこにでもできてしまう。

図11:「Source Files」をきっちり狙って「Main C File」を作成
図11:「Source Files」をきっちり狙って「Main C File」を作成
図12:「helloa」と入力するとhelloa.cというファイルができる
図12:「helloa」と入力するとhelloa.cというファイルができる

このhelloa.cファイルの中身は速攻で編集画面に現れる。すると「stdio.h(※11)」などの必要なヘッダファイルの参照からmainメソッドまでちゃんとできている。

図13:枠組みをちゃんと書いてくれている
図13:枠組みをちゃんと書いてくれている

コレ!コレなのヨ、ワタシが求めていたものは。めんどくさいところは全部書いてくれてあるので、あとは図8で納得した通り、return文の前にリスト1のように一文書き加える。

リスト1:この「Cのバイナリハッキング」ネタで唯一示されたソースコード
printf("A\n");
図14:一筆書いてしまいました
図14:一筆書いてしまいました

あとはプロジェクト名を右クリックして「Run」を選ぶだけだ。

図15:右クリック、それは実行のためにあるようなものだ(うそだ)
図15:右クリック、それは実行のためにあるようなものだ(うそだ)

下のウィンドウに現れる出力はえらくものものしい。ちなみに図16に現れる「dev-shiroko」とは、我がソルデベマシンのうち今度はホワイトボデーのCore2Duoマシン通称「シロ子さん」のホスト名だ。

図16:たったこれだけをコンパイルするのに
図16:たったこれだけをコンパイルするのに

と思っていると突如小さいウィンドウが開いて「A」そして「ウィンドウを閉じるにはEnterを押してください」というメッセージが表示される。

図17:結果より「閉じ方の説明」のほうが長い
図17:結果より「閉じ方の説明」のほうが長い

しかしこれで大成功だ!実は、この「HelloA」プロジェクト、コンパイルと実行のためのMakefileまで自動作成されている。「Important Files」というノードの下に見えるのがそれだ。

図18:Makefileまで自動で作ってくれる
図18:Makefileまで自動で作ってくれる


   やっぱSolarisデショ:と言ったのは実はダソナです。
   難しすぎる:でも実は別途自分で挑戦して楽しんでいるものがいくつもあり、月刊のに子マガジンなどでも紹介しています。
   もう初夏かと...春の午後などは:この文の中で一カ所そぐわない表現があります。どこでしょう。
   以前読んだことのある本:「ハッキング対策マニュアル」David R.Mirza Ahmed他著、上浦倫人訳、ソフトバンク パブリッシング(現ソフトバンク クリエイティブ)発行、ISBN4-7973-2145-8
   コドモのころ:これがハッカーなんだヨ。だから注7のようなやつぁダミなんだヨ。
   自慢じゃないが:ホントに自慢できねえよ。
   FORTRAN:大学で初めてコンピュータというものにさわったのが端末演習室のFORTRANだった。でも演習が全然わかんなくてうちでゆっくり勉強したいと思ったワタシは「FORTRANの入ってるパソコン」をマジ本気で探した。結局「今はBasicが入ってますけど将来的にはFORTRANに書き換えることもできますヨ、でもソフトのお値段はかなりしますが」というSHARP MZというパソコンをバイト代はたいて買った。それで勉強したが自分がツマっていたのはFORTRANなど持ち出すまでもないBasicで十分ツマれる箇所であることがわかった。でも数年後にそれを売って代わりにワープロを買ってしまったところでワタシのパソコン人生は一度完全に壊滅していたことが今更のように思い出される。
   丸裸にせよ:別に最初から見えてるっていうかまあ「蛙を丸裸にせよ」と言うようなものだ。
   狙い定めて:ワタシのマウス選択の精度はタイヘン低い。いつも目的の隣のファイルアイコンをクリックしてしまったり、右クリックして「名前の変更」を選ぼうとするのにいつも「削除」が選ばれてしまい、「本当に削除しますか」「ちげーつってるだろムキキー」などといつも無駄なエネルギーを使っている。
   善意の庄屋さんを陥れる悪徳商人のセリフを思い出しつつお読みください。
   stdio.h:以前Cを勉強したときかなり長い間「ストゥディオ」だと思っていた。

本記事は、サンのユーザ様自らの体験をお寄せいただいたものであり、サン・マイクロシステムズ社としての公式情報ではありません。


  前号へ  
ご意見・ご感想をお聞かせください
この記事は参考になりましたか?
     

コメントがございましたらご記入ください


ページ先頭へ

Sun Fun Times


 

お問い合わせ 会社情報 ニュース 採用情報 プライバシー 利用規定 商標 Copyright  Sun Microsystems, Inc.