jad.exe を使って複数の class ファイルを一括デコンパイルする。
スポンサーリンク
Eclipse 3.7.1 (Indigo) で jad.exe と JadClipse を使い、class ファイルをデコンパイルしようとしたら、エラーメッセージが表示された。
パッと見、原因が分からず、調査に時間がかかりそうなので、代わりに jad.exe を再帰的に実行することにした。
コマンドプロンプトで class ファイルのルートディレクトリに移動して、以下のコマンドを実行する。
for /r . %i in (*.class) do (jad -8 -lnc -o -r -s java -t %i)
ちなみに jad.exe のオプションの意味は、以下のコマンドで知ることができる。
jad -help
一応、全ての class ファイルから java ファイルを生成することはできた。
しかし、デコンパイルの途中、"Couldn't fully decompile method *"というエラーメッセージが数多く出ていた。
java ファイルを見てみると、主に以下の箇所でデコンパイルに失敗している。
また、"JVM INSTR"という文字列も大量に出ている。
どうも認識できないバイトコードを数多く含んでいたようだ。
class ファイルを直接修正して、再びデコンパイルする方法もあるようだけど、数が多過ぎてチャレンジする気になれない。
自分でデコンパイラを作ってしまうというのも一つの手だが、気が遠くなる話なので、他のデコンパイラを試す。
参考資料:
- Java解析にはバイトコードの知識が必要かもしれない - KENJI’S BLOG (2007/11/16)
- 碧落 - 知られざるバッチファイル
- コマンドプロンプトを使ってみよう! −バッチファイル−