apk 的反编译
1. 得到 dex 文件
用winrar 可以直接打开apk 文件, 看到文件结构,并可看到一个.dex 文件, 用winrar 解压缩
2. 得到 jar 文件
用dex2jar 可将dex 文件变成jar 文件。
2.1: 下载工具。dex2jar-0.0.9.13.zip
dex2jar.bat classes.dex // 就会生成一个classes.jar
用winrar 可以解开得到所有class 文件
3. 得到java 文件
方法1: 用 jad 从class 得到 java 文件。 具体见前述文章
方法2: 不用解压jar 文件, 用 JD gui 工具直接打开jar 文件
2.2: 下载apktool,
我的是apktool1.5.2.tar.bz2 2.4 MB, 解压后是一个jar 文件
apktool-install-windows-r05-ibot.tar.bz2 380 KB, 解压后有一个bat 和 exe 文件
把两个文件解压后放在一起。 运行apktool 可以看到帮助
apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC
在解压后的文件夹中可以得到apk的xml配置文件
将“得到的class文件和得到的xml文件组合成一个android工程,即可得到完整的apk源码
问:
编译后的.class文件名中的$是什么意思
答:
存在匿名内部类编译后就出现这种情况
非匿名内部类
D:\gmate\Gmate-android2.0-1.9.14_dex2jar\com\simo\db\Tableinfo$account_table.class
D:\gmate\Gmate-android2.0-1.9.14_dex2jar\com\simo\db\Tableinfo$attachment_table.class
匿名内部类
D:\gmate\Gmate-android2.0-1.9.14_dex2jar\com\simo\phone\DialingCall$1.class
D:\gmate\Gmate-android2.0-1.9.14_dex2jar\com\simo\phone\DialingCall$2.class