簡単にJavaのclassファイルを解析(逆コンパイル)する方法

2016年9月19日(更新: 2017年7月26日)

Javaのライブラリなどを使用していると、そのライブラリがどのようなソースから出来ているのか知らなければならない状況になったりします。

Javaのソースコードがライブラリに含まれていれば良いですが、コンパイル後のclassファイルしかない場合もあります。

そこで、Javaのclassファイルから元のJavaソースを生成して、中身のメソッドなどを調べる…といういわゆる逆コンパイルデコンパイル)ができれば、オリジナルに近いソースコードを調べることができます。

今回は、この逆コンパイルを可能にする JAD Java Decompiler のインストールと使い方を紹介します。

JADのダウンロード&インストール

下記のサイトにアクセスします。

http://varaneckas.com/jad/

以下のような画面が開くので、お使いの環境にあったファイルをダウンロードします。

jadのダウンロードサイト

この記事では、macOS を例として進めます。Jad 1.5.8g for Mac OS X 10.4.6 on Intel platform をクリックすると、zipファイルのダウンロードが始まります。

ダウンロードが終了したら、これを解凍して好きなディレクトリに移動させてください。そのディレクトリをターミナルでカレントディレクトリにします。

解凍した中身は以下のようになっていますが、必要なのは jad という実行ファイルのみです。

jadの中身 

上記サイトには、お使いの環境がUnix(macOSを含む)である場合は、下記のコマンドを入力して実行権を与えるように記載されています。

chmod a+x ./jad

これで jad を使用する準備は完了です。

逆コンパイラ JAD の使い方

カレントディレクトリに jad の実行ファイルがあるとします。

ヘルプの表示

以下のコマンドで jad のヘルプが表示されます。

./jad

jadのヘルプ

逆コンパイルを行う

クラスファイルの名前を指定すると、そのファイルを逆コンパイルしてくれます。

./jad classファイル名

例として、ゲーム開発用フレームワーク Cocos2d-x に含まれるclassファイル「Cocos2dxBitmap.class」を逆コンパイルしてみます。 

jadの逆コンパイルのコマンド

逆コンパイル後のファイルがカレントディレクトリに出力されます。拡張子が .jad となっていますが、テキストエディタで問題なく開けます。

逆コンパイル後の.jadファイル

これをテキストエディタで開くと、以下のようにJavaソースコードとなっていることが確認できます。

逆コンパイル後のJavaソース

出力ファイルの拡張子を変更する

逆コンパイル後のファイルの拡張子を .java にできれば、開くのが楽になります。

これを行うためには -s オプションを使います。-s の後に逆コンパイル後のファイルにつけたい拡張子を指定します。

./jad -s 拡張子 classファイル名

.java にする場合は、以下のようにコマンドを入力します。

jadで出力ファイルの拡張子変更

コマンドを実行した結果、以下のようにjavaファイルが出力されます。

逆コンパイルされたjavaファイル

以上、JAD Java Decompiler で逆classファイルを逆コンパイルする方法でした。

コメントを残す

メールアドレスが公開されることはありません。