JD-GUI で JAR ファイルをデコンパイルする
久々に Java の話。別に新しい話ではないのだが、紹介したことがなかったので。
ソースファイルである .java
ファイルがなく、コンパイル後の .class
や .jar
ファイルしか見当たらないことがあったりする。原則的に、一度コンパイルされたクラスファイルから、元通りのソースコードを復元することはできない。しかし、JD-GUI というアプリを使えば、どんなメソッドやフィールドがあり、おおよそどんな処理をやっているかが復元できる。今回はこのソフトを試してみる。
なお、似たようなことができるアプリに Jad というモノもあるが、個人的に JD-GUI の方が見やすかったのでコチラを紹介する。
目次
その前に jar
コマンド
JD-GUI の前に、JDK 付属の jar
コマンドも紹介しておく。
# JAR ファイルの中にあるファイルを一覧表示する
$ jar tf 【JAR ファイル名】
# JAR ファイルを解凍しファイルを抽出する
$ jar -xvf 【JAR ファイル名】
jar -xvf
は単純に unzip
コマンドで解凍しても良い。
.class
ファイルを直接デコンパイルするには、javap
というコマンドがあったりする。
$ javap HOGE.class
ただ、逆アセンブルされた結果は通常の Java ソースコードとは違い、見づらくて使い物にならない。
JD-GUI を使う
いよいよ JD-GUI を使う。
JD-GUI は Windows・MacOS・Linux 向けにバイナリが存在するので、大抵の OS ですんなり使える。以下の公式サイトからダウンロードできる。
JD-GUI を起動したら、JD-GUI のウィンドウに .jar
ファイルをドラッグ & ドロップしてみる。するとファイルツリーとともに、デコンパイルされたソースコードが確認できる。
Jad と比べて、より自然なソースコードに見えるので、読み解きやすいと思う。