注:以下操作假定也設置好PATH
1. APK文件介紹
*.apk實際是一個rar格式的壓縮包。
內容:
classes.dex : 所有的*.class字節碼被重新編譯,並組合成了classes.dex文件。可以由Dalvik虛擬機執行。
resources.arsc :資源的索引文件。
2. 資源->APK
圖表 1源文件與APK對應關係
APK中的*.XML文件都是經過壓縮加密的,只有在raw文件夾下的文件纔不會加密。此外圖標類資源也不會被壓縮加密。
3. dex->smali->java
3.1. SDK自帶的工具dexdump
作用:從*.dex中生成對類的完整描述,以smali語言表示。無目錄結構。
dexdump -d filename.dex > file.txt
結果截圖:
3.2. apktool
作用:將apk文件反編譯爲smali語言文件,並保留源程序的組織結構,反編譯XML文件。
語法:apktool d *.apk [<dir>] 意爲:decode *.apk to dir.
4. dex->jar->class->java
4.1. dex->jar
工具:dex2jar
4.2. jar - > java
核心JDCore
工具:jd-gui,圖形化工具。可以將class文件反編譯爲java文件。