1. 程式人生 > >mac下apk反編譯整合工具jadx

mac下apk反編譯整合工具jadx

在jadx出現之前,我一般是使用apktooldex2jar這兩個Android反編譯工具。這兩個工具也有不同的側重點,如果只是想拿到apk裡的一些圖片或其他資源或是檢視一下佈局的layout檔案,直接使用apktool -d xxx.apk即可。如果是要檢視一下程式碼實現,就使用d2j-dex2jar.sh反編譯一下apk然後使用jd-gui工具檢視反編譯後的.jar檔案。

apktool+dex2jar+jd-gui一直是一個比較流行的Android反編譯組合。
在使用過jadx之後覺得jadx相比上面的組合具有如下兩個優點:

  • 可以直接反編譯出.java檔案
  • 檢視原始碼時直接顯示資源名稱,而不是像jd-gui裡顯示的資源ID

安裝jadx

編譯安裝

  1. git clone https://github.com/skylot/jadx.git
  2. cd jadx
  3. ./gradlew dist

然後將build/jadx/bin加入到環境變數。

直接下載安裝

使用jadx

jadx也有GUI,直接雙擊bin目錄下的jadx-gui,然後選擇要反編譯的apk即可,執行效果如下。
jadx_gui
如果要儲存原始碼,選擇File->Save ALL即可儲存檔案,然後就可以匯入Android Studio等IDE中。
我們也可以直接使用命令列反編譯apk檔案:

  1. jadx -d out classes.dex #直接輸出.java檔案到out目錄
  2. jadx-gui classes
    .dex #使用gui開啟

在反編譯較大的apk時,如果遇到jadx-jui卡頓和假死的情況,可適當優化jvm相關引數,
我直接在~/.bash_profile中加上了如下語句:

  1. export JVM_ARGS="-Xmx4096m -XX:MaxPermSize=1024m"