Java逆コンパイル(Java8以降)

Javaで実装されているWebアプリケーションの挙動を調べることがあり、ソースファイルが提供されていないものについては、これまではEclipseで動かすJadClipseを主として使っている。
marketplace.eclipse.org

jadclipseは開発が10年近く止まっており、ラムダ式などのJava 8以降に追加された機能が含まれていると逆コンパイルに失敗する。未知の機構が含まれているから仕方がない。そこで新たなツールを探すことにした。


なんでもChatGPTに聞いてみると、代表的なツールとして以下の4つを挙げてきた。

  • CFR (Class File Reader)
  • Fernflower
  • Procyon Decompiler
  • JD-GUI (Java Decompiler GUI)

JD-GUI

java-decompiler.github.io

Windows向け単独アプリで、jarファイルを指定するとjar内クラスファイルを逆コンパイルしてくれる。コマンドラインのツール群よりもグラフィカルで直感的。

JD-Eclipse

Eclipseプラグインとしても提供されているので、jadclipseから完全乗り換えでもいいのかもしれない。

ダウンロード

JD-EclipseのDownloadタブからzipファイルをダウンロード


Eclipseへインストール

Help > Install New Software... をクリック

zipファイルをドラッグ&ドロップして、"Java Decompiler Eclipse Plug-in" がチェックされている状態にしてから [Next >]

インストール詳細を確認して [Next >]

ライセンスに同意して [Finish]

署名がないが、[Select All] してから [Trust Selected]

Eclipse IDEの再起動を要求されるので、[Restart Now]


Eclipseへ設定

Window > Preferences

General > Editors > File Associations から、File Types = *.class について "Associated Editors:" を "JD Class File Viewer" を選択して [Default]

File Types = *.class without source について、"Associated Editors:" に "JD Class File Viewer" を [add] してから [Default]



動作確認

任意のjarファイルがビルドパス上にある状態で、任意のclassファイルをダブルクリックして、逆コンパイルされて表示されていることが確認できればOK