講座05 〜逆アセンブラを使ってみる2〜

〜はじめに〜

今回は、逆アセンブラDiswinの使い方の紹介です。

〜Diswin編〜

この逆アセンブラは、16/32ビット両方のプログラムを逆アセンブルすることができます。
ウインドウズ3.1時代の旧作も解析できるので、結構便利ですねぇ。

ただ、最初にちょっとだけ手間がかかります。

APIリストの作成

深い理由は考えずに、とりあえず作っちゃいましょう。
Diswinのアーカイブ(現在はDiswin18.zip)を解凍してファイルを出力したら、とりあえず
Cドライブに DISASM というフォルダを作ります。
その中に展開したファイルをコピーした後、DOS上で C:\DISASM フォルダに移動し、
以下のコマンドを入力してください。
C:\DISASM>MKLIST C:\Windows\system
と入力してENTERを押せばOKです。
なお、Windows2000の場合は C:\Winnt\system32 を指定する必要があります。
※Win2kの方法はSethさんに教えて頂きました。THANKS!
また、インストール時にWINDOWSフォルダ名を変更した場合も、その名前に変える必要があります。

パスを通す

前回はWINDOWSフォルダにコピーすることにより、Disassemをいつでも使えるようにしましたが、
実は単に、WINDOWSフォルダにはもともとパスが通っているということを利用しただけです。
今回は、自分の作成したフォルダにパスを通す方法を紹介します。
ただし、ここではWindows98を対象とさせていただきます。
(自分は、これ以外のOSを持ってないので…)

まず、方法1。
DOS窓を閉じるたびに設定し直す必要がありますが、簡単です。
ひょっとしたら、Windows98以外でも使えるかもしれません。
DOS窓を開いたら、以下のように入力するだけです(パスを通したいフォルダが C:\DISASMの場合)
SET PATH=%PATH%;C:\DISASM
これで C:\DISASM というフォルダにパスが通りますので、その中にDISWINのファイル全てを配置し、
別のフォルダ(C:\Windows など)に移動してからDISWINを実行してみましょう。
それで、
***** DisWin Ver 0.18 (CygWin Win32 Console) *****
Usage: diswin -option filename[.exe .dll]
というふうに表示されたら成功です。

次に、方法2。
こちらは、Windows95/98以外で使えるかどうかは分かりません。
まず、エクスプローラを起動し、「アドレス」のところに C:\ を指定します。
これで、Cドライブの ルート が開きますので、そこにある autoexec.bat というファイルをテキストエディタで開きましょう。
後は、その最終行に上記のコマンドと同じ SET PATH=%PATH%;C:\DISASM を追加すればOKで、
システムの再起動後から、使えるようになります。

そして、方法3(再びSethさんの報告で、以下引用。)
パスの通し方ですが、マイコンピュータからシステムを開いて
詳細 --> 環境変数 を開いて

上の***のユーザの環境変数と書いてあるところのpathを書き換えます。
なかったら作成ですね。

パス自体は変わりません。

だそうです。
私は教えてもらって初めて知りました(爆

逆アセンブルリストを出力する

前回と同じく、Cドライブのフォルダ GAME にあるプログラム START.EXE を対象 という場合、
C:\GAME>DISWIN -s START.EXE
と入力してENTERを押せばOKです。
これで、同フォルダに SEG_01.ASM のように逆アセンブルリストが出力されれば成功です。
なお、コマンド上の-sがファイル出力用の オプション ですが、必ず、小文字で指定しましょう。
大文字で指定してしまうと、正しく実行されません。

リストを覗いてみる

前回紹介したDisassemは、最初に色々と複雑なメッセージが出力されていましたが、
こちらは、すぐにプログラムリストから始まります。
内容は、
00401000 55           push ebp
00401001 8bec          mov  ebp,esp
00401003 81ec54020000     sub  esp,00000254
00401009 c785b4feffff00000000 mov  dword ptr [ebp+fffffeb4],00000000
といった感じで、細部に違いはあるものの、Disassemとほぼ同じです(違ったら困るが…)。

さいごに

前回に引き続き、これで逆アセンブルリストを出力することができました。
では、次回より、このリストを利用して色々とやってみましょう。

>>NEXT STEP