win/mac下反編譯Android安裝包-APK檔案

Dusan_杜小菜發表於2016-05-16

mac下,對apk進行反編譯主要是用到apktool和dex2jar兩個工具(自行下載),如果只是想拿到apk裡的一些圖片或其他資源或是layout檔案,直接使用apktool -d xxx.apk即可。如果是要檢視程式碼,就使用dex2jar.sh反編譯一下apk,然後使用jd-gui工具檢視反編譯後的.jar檔案即可。今天還將介紹一款新的反編譯神器:Jadx。

一,apktool的使用

用到的命令: java -jar apktool_2.0.2.jar d androidxxx.apk 其中:androidxxx.apk 要進行反編譯的apk包。

1,命令列進入apk檔案所在的目錄:

 cd /Users/....

2,執行命令:

apktool d android.apk

二,反編譯java原始檔

1,獲取classes.dex檔案。

這就用到dex2jar和jd-gui了,將androidxx.apk重新命名改成androidxx.zip,然後利用解壓縮軟體解壓,得到一個androidxx的目錄,我們要拿到裡面的classes.dex檔案。

2,將classes.dex檔案複製到dex2jar-0.0.9.15目錄下

cd /Users/duqian/Downloads/android反編譯/dex2jar-0.0.9.15

3,執行命令:

sh dex2jar.sh classes.dex

4,用jd-gui工具開啟這個jar包就可以看到java原始碼了。

三,反編譯新工具jadx

在jadx出現之前,一般是使用apktool和dex2jar這兩個反編譯工具。

1,下載原始碼或者release包。

skylot/jadx:https://github.com/skylot/jadx/releases

2,使用jadx

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

3,使用命令列反編譯apk檔案

a,把apk改成zip
b,解壓zip獲取class.dex檔案
c,將class.dex檔案放到jadx目錄下
進入該目錄,執行終端命令:

cd path/to/jadx/bin/
jadx -d out classes.dex  #直接輸出.java檔案到out目錄
jadx-gui classes.dex #使用gui開啟

進入該目錄操作後的結果

如果執行命令沒有效果,提示commond not found,或者雙擊開啟jadx,說程式來源不明,配置環境變數即可使用,如下:

open .bash_profile

//此時編輯.bash_profile檔案,加入你的jadx path:

PATH=${PATH}:/Users/duqian/Downloads/android反編譯/jadx-0.6.0/bin

儲存修改即可:

source .bash_profile

然後會提示你選擇要反編譯的apk,dex檔案:

cd /Users/duqian/Downloads/android反編譯/jadx-0.6.0/bin
DuQian-MBP:bin duqian$ jadx-gui

jadx-gui,jadx 執行中

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

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

四,總結

apktool+dex2jar+jd-gui一直是一個比較流行的Android反編譯方式,jadx相比上面的組合具有如下兩個優點:

jadx可以反編譯出.java檔案

原始碼直接顯示資源名稱,而jd-gui裡顯示的是資源ID。


杜乾,Dusan,Q:291902259
微博:http://weibo.com/u/2876301234
微信公眾號:OpenDeveloper
分享不僅限於Android,Web 開發,做開放的完美的開發者。
部落格:http://blog.csdn.net/dzsw0117

相關文章