デコンパイリングJava ―逆解析技術とコードの難読化 (Art Of Reversing)

  • Godfrey Nolan

Javaバイトコードインタプリタで稼働し、アプレットというバイトコードをさらす形での運用を前提としていたことから、Javaの登場の直後から逆コンパイラと逆コンパイラの動作を難しくするための難読化ツールが公開され、発達してきた。

いまは、アプレットはすっかり廃れてしまい、ソースコードそのものが飛んでくるAJAXが一般的になってしまったのでちょっと外しているような気がしないでもない。JavaScriptの圧縮されたコードも大変なことになっているが。。言語仕様から言っても難読化しやすいし。

この本は、難読化とデコンパイルの双方をバランスよく説明している。実際に動作するコードが提示されていて参考になる。が、デコンパイラの実装に、一度XML化したクラスファイルを読み込んでるのはどうなんだ?しかも、XMLのパースならXMLパーサ使えばいいのにLEXもどきのものを使って読み込んでるのもちょっと理解しがたい。クラスファイル解析ツールライブラリはたくさんあるんだからそれらを直接使うべきだろう。まあ、逆コンパイラは一種のコンパイラだ!ということで、コンパイラを作るための標準的な技術を使って見せている、ということなのかも知れないが。

あと、この本ちょっと古くていまどきJDK1.5が対象。原著は2004年なので無理もないが、なぜこの本がこのタイミングで翻訳されたのか、理解に苦しんだり。

初期の逆コンパイラと難読化器として有名なMochaとCremaの作者 Hanpeter Van Vliet 氏は、両者の発表直後に癌でなくなったとのこと。ご冥福をお祈りします。


ちょっと以外だったのは、この本、原著はO'reillyじゃないこと。APressだ。オライリージャパン、やるなあ。

Decompiling Java
Decompiling Java
posted with amazlet at 10.08.01
Godfrey Nolan
Apress
売り上げランキング: 171785