首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android APK 反編譯獲取 Java 原始碼:dex2jar + JD-GUI 完整流程

     編輯:程式設計綜合問答

工具鏈準備

標準流程

  1. 將 app.apk 改名為 app.zip 並解壓,取得 classes.dex (或 classes2.dex 等分包)。
  2. 將 classes.dex 放入 dex2jar 目錄,執行:
    d2j-dex2jar.bat classes.dex (Windows)
    ./d2j-dex2jar.sh classes.dex (Linux/Mac)
    產出 classes-dex2jar.jar。
  3. 用 JD-GUI 開啟產出的 JAR,即可瀏覽/匯出 Java 原始碼。
  4. 若有多個 classes*.dex,需全部轉換並合併查看。

進階技巧

  • ProGuard 混淆後代碼:類別/方法名變為 a、b,邏輯仍可閱讀,配合 mapping.txt 可還原原名 (若開發者發布)。
  • Kotlin 代碼:JD-GUI 可顯示反編譯為 Java 的 Kotlin 邏輯,或用 Fernflower (IntelliJ 內建) 獲得更佳還原度。
  • 動態加載 Dex:若 App 使用 DexClassLoader 運行時加載,需在執行時從記憶體 Dump (如 adb shell am dumpheap + jhat)。

常見問題

現象原因對策
JD-GUI 顯示「源碼不可用」類別檔損壞或非標準字節碼嘗試 CFR、Fernflower 等替代反編譯器
資源檔 (layout/xml) 亂碼Apktool 未正確解碼使用 apktool d -r app.apk 保留原始資源
Native 庫 (.so) 無法分析屬機器碼,非字節碼需 IDA Pro、Ghidra 等逆向工具
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved