Table of Contents
Javaのライブラリなどを使用していると、そのライブラリがどのようなソースから出来ているのか知らなければならない状況になったりします。
Javaのソースコードがライブラリに含まれていれば良いですが、コンパイル後のclassファイルしかない場合もあります。
そこで、Javaのclassファイルから元のJavaソースを生成して、中身のメソッドなどを調べる…といういわゆる逆コンパイル(デコンパイル)ができれば、オリジナルに近いソースコードを調べることができます。
今回は、この逆コンパイルを可能にする JAD Java Decompiler のインストールと使い方を紹介します。
JADのダウンロード&インストール
下記のサイトにアクセスします。
以下のような画面が開くので、お使いの環境にあったファイルをダウンロードします。
この記事では、macOS を例として進めます。Jad 1.5.8g for Mac OS X 10.4.6 on Intel platform をクリックすると、zipファイルのダウンロードが始まります。
ダウンロードが終了したら、これを解凍して好きなディレクトリに移動させてください。そのディレクトリをターミナルでカレントディレクトリにします。
解凍した中身は以下のようになっていますが、必要なのは jad という実行ファイルのみです。
上記サイトには、お使いの環境がUnix(macOSを含む)である場合は、下記のコマンドを入力して実行権を与えるように記載されています。
chmod a+x ./jad
これで jad を使用する準備は完了です。
逆コンパイラ JAD の使い方
カレントディレクトリに jad の実行ファイルがあるとします。
ヘルプの表示
以下のコマンドで jad のヘルプが表示されます。
./jad
逆コンパイルを行う
クラスファイルの名前を指定すると、そのファイルを逆コンパイルしてくれます。
./jad classファイル名
例として、ゲーム開発用フレームワーク Cocos2d-x に含まれるclassファイル「Cocos2dxBitmap.class」を逆コンパイルしてみます。
逆コンパイル後のファイルがカレントディレクトリに出力されます。拡張子が .jad となっていますが、テキストエディタで問題なく開けます。
これをテキストエディタで開くと、以下のようにJavaソースコードとなっていることが確認できます。
出力ファイルの拡張子を変更する
逆コンパイル後のファイルの拡張子を .java にできれば、開くのが楽になります。
これを行うためには -s オプションを使います。-s の後に逆コンパイル後のファイルにつけたい拡張子を指定します。
./jad -s 拡張子 classファイル名
.java にする場合は、以下のようにコマンドを入力します。
コマンドを実行した結果、以下のようにjavaファイルが出力されます。
以上、JAD Java Decompiler で逆classファイルを逆コンパイルする方法でした。