標籤:android class code java c http
Android反編譯的目的無非就是為了看到APK的xml、資源和代碼:
得到代碼的方式:直接解壓APK檔案 --> 得到classes.dex檔案 --> 使用 dex2jar classes.dex classes.jar產生jar檔案 --> [可選的解壓jar檔案] -->使用XJad或者JDCompiler查看原始碼
得到XML的方式:
方式1:直接解壓APK檔案 --> 通過axmlprinter工具查看XML檔案(這種方式查看的XML檔案的id都是數字--即R檔案中id對應的值)
方式2:使用APKTool工具解壓APK檔案可以直接查看XML檔案
Android反編譯常常使用如下的一些工具:
1、反編譯命令:
apktool d D:\\Developer\androidDecode\Test0201.apk D:\\Developer\androidDecode\test0201
D:\\Developer\androidDecode\Test0201.apk:要反編譯的APK檔案
D:\\Developer\androidDecode\test0201:反編譯檔案的儲存目錄,必須為空白目錄
2、從反編譯的檔案編譯成APK apktool b D:\\Developer\androidDecode\test0201 D:\\Developer\androidDecode\test020101.apk
D:\\Developer\androidDecode\test0201:儲存編譯後檔案的目錄
D:\\Developer\androidDecode\test020101.apk:產生的新的APK檔案的儲存的絕對路徑
3、簽名APK檔案:
singedAPK.bat檔案
java -jar "%~dp0signapk.jar" "%~dp0testkey.x509.pem" "%~dp0testkey.pk8" %1 signed.apk
執行singedAPK.bat命令
singedAPK D:\\Developer\androidDecode\test020101.apk 產生一個singed.apk檔案和test020101.apk在同一個目錄
4、使用baksmali.jar把一個dex檔案轉換為一個smali檔案
java -jar D:\\Developer\ApkTool\baksmali.jar -o D:\\Developer\androidDecode\baksmaliout D:\\Developer\androidDecode\Hello.dex
D:\\Developer\ApkTool\baksmali.jar:baksmali.jar檔案所存在的全路徑
D:\\Developer\androidDecode\baksmaliout:產生的smali檔案的儲存目錄
D:\\Developer\androidDecode\Hello.dex:要轉成smali檔案的路徑
5、使用ddx.jar把一個dex檔案轉換為ddx檔案
java -jar D:\\Developer\ApkTool\ddx.jar -d D:\\Developer\androidDecode\ddxout D:\\Developer\androidDecode\Hello.dex
D:\\Developer\ApkTool\ddx.jar:ddx.jar檔案的絕對路徑
D:\\Developer\androidDecode\ddxout:要儲存ddx檔案的路徑
D:\\Developer\androidDecode\Hello.dex:要轉換的dex路徑
6、Android內建dexdump工具:dex檔案轉為smali檔案 dexdump -d xxxx.dex > xxxx.smali
7、dex2jar.jar:dex2jar XXX.dex YYY.jar
說明:
apktool項目地址:https://code.google.com/p/android-apktool/
baksmali項目地址:https://code.google.com/p/smali/
dex2jar項目地址:https://code.google.com/p/dex2jar/downloads/list
java Decompiler(JD)項目地址:http://jd.benow.ca/
XJAD百度網盤:http://pan.baidu.com/share/link?shareid=406366626&uk=3558809438&fid=881236853
axmlprinter項目地址:https://code.google.com/p/android4me/downloads/detail?name=AXMLPrinter2.jar&can=2&q=