记录一下自己学习Android反编译的过程。
贴出来仅供大家研究,自己在家捣鼓捣鼓就算了,不要做不道德的事,毕竟大家都不容易。
先说下我的环境:
- 操作系统:windows xp
- Apktool:1.5.2
- dex2jar:0.0.9.15
- jd-gui:0.3.5
简单说一下步骤:
1. java -jar apktool.jar d dangdang.apk
该命令会在当前文件夹下生成dangdang目录,里面包含assets、res、smali、AndroidManifest.xml、apktool.yml等文件。
2. 从apk文件里提取出classes.dex,执行dex2jar classes.dex
apk本质上是一个zip压缩文件,用解压缩软件打开apk文件,将classes.dex提取出来,用dex2jar将该文件转为classes_dex2jar.jar
3. 打开jd-gui,将步骤二得到的jar包导入,会看到一些经过混淆的java文件。
到了第三步,你会发现java源代码基本没法看,都是一些a、b、c、ab之类经过混淆的名字。
个人认为突破口主要集中在第一步中的AndroidManifest.xml、xml资源文件和smali文件,结合grep命令进行查找。
推荐下看雪论坛出的书《Android 软件安全与逆向分析》,作者写的很用心。