JAD (Java Decompiler) 是經典反編譯工具,雖停止更新但仍輕量好用。假設 jad.exe 在 C:\Java。
jad Example1.class # 生成 Example1.jad → 改名 .java
jad *.class # 批次處理
| 選項 | 功能 | 範例 |
|---|---|---|
-o | 不提示直接覆蓋輸出檔 | jad -o *.class |
-s <ext> | 指定輸出副檔名 | jad -sjava Example.class → Example.java |
-p | 輸出到標準輸出 (可重導向) | jad -p Example.class > Example.java |
-d <dir> | 指定輸出目錄 | jad -d output -sjava *.class |
-a/-af | JVM 位元碼註解 / 完整名稱註解 | |
-b | 輸出多餘括號 (如 if(a){b();}) | |
-dead | 嘗試反編譯死代碼 | |
-disass | 反組譯模式 (不生成 Java 源碼) | |
-f/-ff | 輸出完整類/方法名 / 成員前置 | |
-i | 輸出變數預設初始值 | |
-lnc | 輸出行號註解 | |
-noinner | 關閉內部類支援 | |
-nocode | 不生成方法源碼 |
# 批次反編譯到指定目錄,輸出.java,覆蓋不提示
jad -o -d decompiled -sjava *.class
# 查看位元碼與行號對應
jad -a -lnc -p Example.class | less
建議:日常開發用 IDE 內建 (Fernflower) 或 JD-GUI;舊版 Class 檔 (Java 1.3-) 可嘗試 JAD。