IntelliJ IDEA — .class を開くと自動逆コンパイル
IntelliJ IDEA は Fernflower を内蔵しており、.class ファイルを開くと
自動的に逆コンパイルしてソースとして表示する。何もインストールや設定は不要だ。
# 1. Project ツールウィンドウで .class ファイルをダブルクリック
# 2. 「Decompiled .class file, bytecode is shown」というバナーが表示される
# 3. バナー上の [Choose Sources...] または [Download Sources] を選択可能
# JAR / WAR の場合:
# File → Project Structure → Libraries → + (新規追加) → Java
# → myapp.jar を選択
# → プロジェクトに依存として追加後、クラスを Ctrl+クリックで逆コンパイル表示
💡 ライブラリの .class を Ctrl+クリックしたとき
プロジェクトに含まれるライブラリの任意のクラスを Ctrl+クリック(Mac: Cmd+クリック)すると、
自動的に逆コンパイルされたソースが開く。ソース JAR が Maven Central にあれば「Download Sources」ボタンで正式ソースを取得できる。
IntelliJ — 逆コンパイルソースをプロジェクトに紐付ける
CFR で事前に逆コンパイルしたソースを IntelliJ に紐付けることで、 正式ソースとして扱い、コード補完・ジャンプ・検索が使えるようになる。
# 前提:CFR で逆コンパイル済みソースが ./decompiled/ にある
# 1. ソースをソース JAR として再パッケージ
jar cf myapp-sources.jar -C decompiled/ .
# 2. IntelliJ IDEA で
# File → Project Structure → Libraries
# → 対象ライブラリを選択
# → [+] Sources をクリック
# → myapp-sources.jar を選択 → OK
# 3. これで .class へのジャンプ時に逆コンパイルソースが表示される
# (正式ソースと同様の操作感になる)
IntelliJ で効率よく読むためのテクニック
| 操作 | ショートカット | 用途 |
|---|---|---|
| 宣言に移動 | Ctrl+B / Cmd+B | 変数・メソッドの定義元へジャンプ |
| 使用箇所を検索 | Alt+F7 / Option+F7 | フィールド・メソッドの呼び出し元を全列挙 |
| 全文検索 | Ctrl+Shift+F | 文字列・メソッド名をプロジェクト全体から検索 |
| 構造ビュー | Alt+7 / Cmd+7 | クラスのフィールド・メソッド一覧 |
| クラス階層 | Ctrl+H | 継承ツリーを確認 |
| リネーム | Shift+F6 | 難読化変数をリネームして読みやすくする |
| インライン展開 | Ctrl+Alt+N | 意味不明な変数をインライン化して式を単純化 |
✅ 難読化コードのリネーム活用
難読化されたクラス・メソッド名は Shift+F6 でリネームしながら読み進めるのが効果的。
リネームは逆コンパイルしたソースファイル上で行い、元の .class は変更しない。
VS Code + Java Extension Pack での活用
VS Code の Java Extension Pack(Microsoft 提供)には
Language Support for Java が含まれており、.class を開くと自動で逆コンパイルされる。
# 1. 拡張機能のインストール(コマンドパレットまたは Extensions ビュー)
# Extension ID: vscjava.vscode-java-pack
# インストールされる主な拡張:
# - Language Support for Java (Red Hat)
# - Debugger for Java
# - Java Test Runner
# - Maven for Java
# - Project Manager for Java
# 2. .class ファイルを VS Code で開く
# → 自動的に逆コンパイルされてソースとして表示される
# 3. JAR をライブラリとして追加(Maven プロジェクトでない場合)
# .vscode/settings.json に記述
{
"java.project.referencedLibraries": [
"lib/**/*.jar",
"path/to/myapp.jar"
]
}
VS Code に逆コンパイルソースを紐付ける
# Maven プロジェクトの場合:pom.xml で sources を追加
# (Maven Central にソース JAR がある場合はこちらが最も確実)
mvn dependency:sources
# ソース JAR がない場合は CFR で生成して追加
jar cf myapp-sources.jar -C decompiled/ .
# .vscode/settings.json に source jar を追加
{
"java.project.referencedLibraries": {
"include": ["lib/myapp.jar"],
"sources": {
"lib/myapp.jar": "lib/myapp-sources.jar"
}
}
}
IDE 比較まとめ
| 項目 | IntelliJ IDEA | VS Code |
|---|---|---|
| 自動逆コンパイル | ✅ Fernflower 内蔵 | ✅ Language Support for Java 内蔵 |
| ソース紐付け | ✅ Project Structure で簡単 | ✅ settings.json で設定 |
| 定義ジャンプ | ✅ 非常に強力 | ✅ 対応 |
| リネーム支援 | ✅ リファクタリング機能が充実 | ⚠️ 基本的なもののみ |
| クラス階層ビュー | ✅ 専用ウィンドウあり | ⚠️ 拡張で補完 |
| デバッガ連携 | ✅ ブレークポイントを .class に設定可 | ✅ Debugger for Java で対応 |
| コスト | Community 版は無料(機能制限あり) | 無料 |
💡 どちらを使うべきか
本格的な解析・リファクタリングには IntelliJ IDEA が圧倒的に使いやすい。 軽量に確認するだけであれば VS Code でも十分。 すでにどちらかを使っているならそのままで問題ない。