Javaの逆コンパイラのJadを試してみた。バージョンは v1.5.8g のWindows版。
jarファイルは直接逆コンパイルできないが、展開すればディレクトリ以下をごっそり逆コンパイルできる。
出力されるコードも元のものが分かるくらい近いもののようだ。
簡単なGUIプログラムをJ2SE 1.5.0_07 でコンパイルした後、
Jadで逆コンパイルし、さらにそれをコンパイルしてみた。
問題点は1個だけだった。
内部クラスのコンストラクタで親クラスthisのメンバの設定が入っていて(これは本来は暗黙に含まれるべきもの)、その後 super()が呼ばれており、
super()は最初になければならないというエラーが出た。
親クラスthisのメンバの設定を削除したら問題なくコンパイル・実行できた。
こうも簡単に逆コンパイルできてしまうとは...
かなり衝撃的だ。
Jad は C++ で記述されているとのことだが、逆コンパイラには他にJODEというJavaで書かれたものもあるらしい。
jarファイルは直接逆コンパイルできないが、展開すればディレクトリ以下をごっそり逆コンパイルできる。
出力されるコードも元のものが分かるくらい近いもののようだ。
簡単なGUIプログラムをJ2SE 1.5.0_07 でコンパイルした後、
Jadで逆コンパイルし、さらにそれをコンパイルしてみた。
問題点は1個だけだった。
内部クラスのコンストラクタで親クラスthisのメンバの設定が入っていて(これは本来は暗黙に含まれるべきもの)、その後 super()が呼ばれており、
super()は最初になければならないというエラーが出た。
親クラスthisのメンバの設定を削除したら問題なくコンパイル・実行できた。
こうも簡単に逆コンパイルできてしまうとは...
かなり衝撃的だ。
Jad は C++ で記述されているとのことだが、逆コンパイラには他にJODEというJavaで書かれたものもあるらしい。
※コメント投稿者のブログIDはブログ作成者のみに通知されます