|
| Japan Worldwide |
Steps
スタジオ外からお伝えします このコンパイル生成物は、さっきしっかり見ておいたSunStudioProjectsの中を探すと、そこのHelloAフォルダのさらにdist/Debug/Sun12-Solaris-x86という結構深い階層にある。「helloa」ファイルだ。
このhelloaファイル、調べてみるとちゃんとプログラムとしての実行権限もついている。
そこで、これをSun Studio以外の場所で使ってみよう。別の場所にmyhexというフォルダを作って、そこにhelloaファイルをコピーする。 ソルデベでは、今そこに開いているそのフォルダからターミナルを立ち上げることができる。それをやると、わざわざコマンドでそのフォルダに行く手間が省けるのだ。
図22で、左はデスクトップから立ち上げた端末だ。ホームフォルダにいる状態で開くので、myhexフォルダの中に行くのに「cd」コマンドを打ってやらなければならない。そうしてはじめて、「ls」コマンドによりmyhexフォルダにあるファイル名を表示させることができる。 一方右は図21のように、「myhex」フォルダから立ち上げた端末だ。いきなり「ls」コマンドで、中のファイルを表示できる。
今はすぐ下のフォルダに移動すりゃいいんであんまりありがたみがないが、もっとワソ長いパスやふかーいフォルダのファイルを実行したりなんだりという場合はタイヘン助かる。 さてそこで図21のようにして立ち上げた端末から、以下のように実行してみた。
ちゃんと「A」と表示された。独立に動作するわけである。 相方hellobを作成
デハ全く同じように、「HelloB」プロジェクトで「hellob.c」というソースファイルに「printf("B\n");」と書いてコンパイルして、その生成物「hellob」を「myhex」フォルダにコピーし、そこからターミナルで実行して「B」と表示されることを確かめるまでする。 これやっとかないと、最初っから間違って「A」と表示されるファイル2つ作ってたらとんだぬか喜びになっちまいやすからね、しっかり確認しておきましょう。 これで、今回のSun Studioの役目は終わりだ。でもまたゼヒ使いたい。 いよいよHexエディタで御開帳だ このように準備した「Cのバイナリファイル」をいよいよ、Hexエディタで開く。まずエディタのほうを開いて、前編の図2のような真っ灰色(※12) の画面を出したら、その土手っ腹(※13)にファイルブラウザからhelloaのアイコンをドラッグドロップで食らわせてやればいい。
ほほー見事じゃの、これが余の作りしバイナリファイルの姿か。恐れながら殿、このデータのほとんどはSun Studioが作りしものにございます。そっそんなことは存じておるわ戯れに申してみただけじゃブツブツ。という感じだ。 見つけたゾ 右手にある欄には、ところどころ英数字が書いてある。これは、ASCⅡ文字として表現できるところは表現してくれている姿のようである。やはり、数値や文字列のデータを修正する目的で出しているのかも知れない。 全体を眺めてみると、コンパイルされたプログラムの中には文字列情報もたくさん入っていることがわかる。
スクロールバーを少しずつ引っ張って見ていくと、こんな部分があった。
「これかな?」 つついてみる。そして左側のバイナリ表示を見たら、「41」が選択されていた。
ではhellobファイルも開いてみよう。Hexエディタのメニューからファイルを選んで開くと、別のウィンドウに表示されるから両者を並べて比べてみることもできる。 やっぱり同じような場所があった。そしてこっちは「B」と書いてあるッ!
バイナリエディタだってのにASCII文字の方ばっかり見て似てるだ似てないだ言っているが、ちなみに「B」に相当する16進表示は「42」だった。 「これだナ...」 いよいよバイナリハッキング(※14)だ 要はヤッてみりゃあいい。「hellob」の表示画面を扱う。Hexエディタのメニューの「編集」から「置換」を選ぶ。
これは「GHex」という名前のGnomeツールだが、この「置換」ウィンドウ、「検索」と共用なので、慣れないうちは使い勝手がよくないっていうかホントにちゃんとできるのか怖い。 でも図29のように、書き換えたい「B」の字がしっかり選択されていることを確かめたら、「検索する文字列」のところに自分で「42」と16進表示のほうを入れる。 これも「GHex」のGUIの問題か、マウスで欄をクリックすると左側では「0」という数値、右側ではそれに対応して「.」記号が挿入されてしまう。でも、自分で入れた数値42を直接クリックすると消える。
一方、「置換する文字列」のほうには「41」と入れる。上・下段のそれぞれの右側に「42」「41」、左側に「B」「A」と、置換前後の対応がキレイに表示されているのを見届けたら、運命の「置換」ボタンを押すッ!
瞬間、右側の画面が別の場所に切り替わってギャッと思うが、要するに我々が選択していた場所の置換作業が終わったので次の「B」を探しに行ったのだ。ああびっくりした。スクロールアップして、目的の場所がちゃんと「A」に変換されていることを確かめたら「保存」する。
ハーイできちゃいましたー
さて、ハクったhellobファイルをもう一度端末から実行だ。 あっらーのに子さん、ヤッちゃいましたねー。「バイナリいじっちゃったよアハハハー、まかり間違えばコアダンプだヨーヤバぃよー」とかフカせますねー。 でも市販の製品とかのバイナリファイルは、「バイナリ編集やリバースエンジニアリングをしちゃいけません、ライセンスのお約束」というものもあるから、自分で作ったファイルで学習するだけにしておきましょう。
本記事は、サンのユーザ様自らの体験をお寄せいただいたものであり、サン・マイクロシステムズ社としての公式情報ではありません。 | Sun Fun Times
|
||||||||||||||||||||||||||||||||||||||||||