工具
- apktool:用于反編譯apk文件
- dex2jar:用于將反編譯出的class.dex轉(zhuǎn)換成classes-dex2jar.jar
- jd-gui:用于閱讀classes-dex2jar.jar源碼
- signAPK:給重新打包后的apk簽名
安裝apktool
安裝地址:
https://ibotpeaches.github.io/Apktool/install/
根據(jù)教程將apktool安裝好即可。
注意:需要先安裝java sdk。
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html
安裝dex2jar
下載并解壓dex2jar-2.0
下載地址:https://sourceforge.net/projects/dex2jar/
為dex2jar-2.0添加權(quán)限
$ chmod -R 777 dex2jar-2.0
$ chmod +x d2j_invoke.sh
安裝jd-gui
使用brew安裝
$ brew cask install jd-gui
注意:只能運行在jdk 1.8版本下。否則按照此文檔對jdk版本進行更改:http://blog.csdn.net/YoungStunner/article/details/78699864
反編譯流程
使用apktool反編譯apk包
運行如下命令來反編譯:
$ apktool d xxx.apk
用壓縮軟件unzip achiever打開StabilityTest.apk,然后解壓出位于根目錄下的classes.dex
使用dex2jar將classes.dex轉(zhuǎn)換為jar包
運行如下命令來轉(zhuǎn)換:
$ sh d2j-dex2jar.sh classes.dex
使用jd-gui打開classes-dex2jar.jar
如果覺得jd-gui查看代碼不方便,還可以通過File->Save All Sources導出一個classes-dex2jar.src.zip,將classes-dex2jar.src.zip解壓以后,導入到Sublime閱讀代碼。
修改完smali源碼后,使用apktool重新打包生成apk
運行如下命令來打包:
$ apktool b xxx.apk
使用sign.jar進行簽名
運行如下命令來簽名:
$ java -jar sign.jar xxxx.apk