win/mac下反編譯Android安裝包-APK文件

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章