針對沒有混淆的android應用,我們可以很方便的做到反編譯查看源代碼以及修改源代碼,主要用到工具爲apktool,dex2jar和jd-gui。
1. apktool
下載地址:https://code.google.com/p/android-apktool/
主要作用爲反編譯apk爲res文件和smali文件,通過修改smali文件然後打包會apk再簽名,我們可以做到修改原apk的資源文件和代碼邏輯。
用法爲
apktool d Settings.apk
可以看到在Settings.apk目錄生成一個新的目錄,包含該apk的所有res文件,manifest文件,smali文件。
2. dex2jar
下載地址:https://code.google.com/p/dex2jar/
主要作用爲反編譯apk爲jar文件,之後可以通過jd-gui工具看到源碼。
用法爲
./d2j-dex2jar Settings.apk
該命令會在Settings.apk目錄生成Settings_dex2jar.jar文件。
3. jd-gui
下載地址:http://jd.benow.ca/
主要作用爲查看jar文件對應的源碼。
用法爲
jd-gui Settings_dex2jar.jar
之後就可以看到源碼。
在ubuntu 14.04 64位系統下,可能會提示找不到找不到libgtk-x11-2.0.so.0 ,安裝方式如下:
sudo apt-get install libgtk2.0-0:i386
針對具體需求,使用的工具會有所不同。
a. 查看apk的res文件,用apktool解包即可
b. 查看源碼實現,用dex2jar工具轉化爲jar文件,再用jd-gui工具查看jar文件即可
c. 修改源apk,則一般會通過apktool解包爲smali文件,同時用dex2jar和jd-gui查看源碼邏輯,方便修改smali文件,之後再通過apktool將修改後的res和smali文件打包回apk,再利用其它工具簽名。