注:以下操作假定也设置好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文件。