apk 的反编译

来源:互联网 发布:2016开淘宝店卖什么好 编辑:程序博客网 时间:2024/06/08 11:35
apk 的反编译
1.  得到 dex 文件
    apk 文件是zip 压缩的。
    windows 下,用winrar 可以直接打开apk 文件, 看到文件结构,并可看到一个.dex 文件, 用winrar 解压缩
    linux 下,可用unzip 来解压. 例如, 解压xxx.apk 到abc 目录 : unzip xxx.apk -d abc
2.  得到 jar 文件
    用dex2jar 可将dex 文件变成jar 文件。
       2.1: 下载工具。dex2jar-2.0.zip  // 目前是2.0
    它包含windows 及 linux 下的工具
    windows: dex2jar.bat classes.dex        // 就会生成一个classes.jar
    linux: d2j-dex2jar.sh classes.dex

    .jar 文件是class 的zip 压缩包, 用步骤1提到的工具可解压缩
3.  得到java 文件
    方法1: 用 jad 从class 得到 java 文件。 具体见前述文章
    方法2: 不用解压jar 文件, 用 JD gui 工具直接打开jar 文件

第二种方法: 下载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