IWM Utilities:disw32
- 書式
- disw32 [option...] exefile [asmfile]
- 説明
- 32ビットWindows実行可能プログラムを逆アセンブルして標準出力またはファイルに出力する.
- --analyse-linear 線形解析を行う
- --analyse-referer 参照されているサブルーチンを解析する
- --analyse-data データ領域を解析する
- -a, --analyse-all 線形解析と参照されているサブルーチンを解析する
- --display-export エクスポートテーブルを表示する
- --display-import インポートテーブルを表示する
- --display-resource リソース領域を表示する
- --display-reloc リロケーションテーブルを表示する
- -d, --display-all すべて表示する
- 例
- disw32 sample.exe sample.asm
標準ではエントリーポイントおよびエクスポートされているサブルーチンをエクスポートテーブルの順番で強制逆アセンブルをする. 強制逆アセンブルでは,たとえそのサブルーチンで逆アセンブルが正常に終了しなくても逆アセンブルを行う. 次にここでサブルーチンと思われるコードの逆アセンブルを試みる. 相対アドレス指定は分岐命令しかありえないので,相対アドレス指定の場合には強制逆アセンブルをする. 即値アドレス指定の場合には(正常終了した場合のみ)逆アセンブルをする. オフセット値指定の場合にはそのアドレスがまだ未解決のときに,そのアドレスにある値が示すアドレスに対してサブルーチンのcallならば強制逆アセンブル,それ以外ならば逆アセンブルをする. 32ビットの配列指定の場合にはそのアドレスにある値が示すアドレスに対して逆アセンブルが可能な限り繰り返す. 逆アセンブルの優先順位はこの順番であり,同じならばアドレスが小さい方を優先する. 強制逆アセンブルを除いて,逆アセンブルができなかった場合にはデータ参照として扱われる.
データ参照では即値アドレス指定の場合には,そのアドレスが文字列として有効かどうか調べる. オフセット値指定の場合にはそのアドレスに8~32ビットのデータがあると仮定する. また32ビットのときにはその値が示すアドレスが文字列として有効かどうか調べる. 32ビットの配列指定の場合には,そのアドレスにある値が示すアドレスが文字列として有効かどうか調べる. これを文字列が有効な限り繰り返す.
--analyse-linearが有効ならば,アドレスの下位から順番に逆アセンブルを試みる. 逆アセンブルが可能ならば,そのアドレスをエントリーポイントやエクスポートと同様に扱う.
--analyse-refererが有効ならば,アドレスの下位から順番にその32ビットの値が示すアドレスの逆アセンブルを試みる. 逆アセンブルが可能ならば,そのアドレスを32ビットのデータとし,値が示すアドレスをエントリーポイントやエクスポートと同様に扱う.
--analyse-dataが有効ならば,未定義の領域をデータとして扱う.
連絡先iwm@maid.org