開発覚え書き

ソフトウェアシステムの開発に関わるさまざまなことの覚え書き

Javaの逆コンパイラの威力を実感

2006-07-05 12:35:53 | Weblog
Javaの逆コンパイラのJadを試してみた。バージョンは v1.5.8g のWindows版。
jarファイルは直接逆コンパイルできないが、展開すればディレクトリ以下をごっそり逆コンパイルできる。
出力されるコードも元のものが分かるくらい近いもののようだ。

簡単なGUIプログラムをJ2SE 1.5.0_07 でコンパイルした後、
Jadで逆コンパイルし、さらにそれをコンパイルしてみた。
問題点は1個だけだった。
内部クラスのコンストラクタで親クラスthisのメンバの設定が入っていて(これは本来は暗黙に含まれるべきもの)、その後 super()が呼ばれており、
super()は最初になければならないというエラーが出た。
親クラスthisのメンバの設定を削除したら問題なくコンパイル・実行できた。

こうも簡単に逆コンパイルできてしまうとは...
かなり衝撃的だ。

Jad は C++ で記述されているとのことだが、逆コンパイラには他にJODEというJavaで書かれたものもあるらしい。

コメントを投稿