反编译 APK

反编译 APK
BambooAndroid逆向
反编译APK
工具介绍
如果只是想拿到apk中的图片资源,只需要将apk后缀改为zip然后解压缩,res目录中就包含了所有的资源文件
classes.dex 则包含了所有的代码,只是还无法查看
AndroidManifest.xml 文件打开会发现无法阅读,都是16进制数
此时就需要用到工具 —— ApkTool
ApkTool
下载
安装
使用
1 | apktool d xxx.apk |
d 表示 decode
还可以加上一些附加参数来控制 decode 行为:
-f :如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)
-o :指定解码目标文件夹的名称(默认使用 APK 文件的名字来命名目标文件夹)
-s :不反编译dex文件,也就是说 classes.dex 文件会被保留(默认会将 dex 文件解码成 smali 文件)
-r :不反编译资源文件,也就是说 resources.arsc 文件会被保留(默认会将 resources.arsc 解码成具体的资源文件)
反编译之后会得到以下内容:
- 1、AndroidManifest.xml:经过反编译还原后的 manifest 文件
- 2、original 文件夹:存放了未经反编译过、原始的 AndroidManifest.xml 文件
- 3、res 文件夹:存放了反编译出来的所有资源
- 4、smali 文件夹:存放了反编译出来的所有代码,只不过格式都是
.smali
类型的
xml文件已经可以看懂了,不过 smali 类型文件我们依然无法阅读
此时,需要用到另一个工具 —— dex2jar + jd-gui
dex2jar
功能
将 dex 转换成 jar 形式文件
下载
使用
将下载的 dex2jar 压缩包解压后,可以看到以下内容
windows上使用dex2jar.bat即可
1 | dex2jar.bat classes.dex路径 |
看到上述console则表示成功
代码都位于 classes-dex2jar.jar 中
现在需要用到另一款工具 jd-gui
jd-gui
下载
根据需要下载对应包即可
使用
解压到本地,双击jd-gui.exe文件即可运行
用jd-gui打开之前解压出来的dex文件即可看到所有的源码
jadx-gui
一个更强大的工具,一款出色的 **反编译工具 **和 代码查看器,但不能直接编辑 APK 文件或内部代码
使用 Jadx-GUI 打开一个apk文件时,它会根据 Dalvik 字节码(DEX文件)反编译成可读的 Java 源代码,然而,这些源代码只是 Jadx 根据字节码猜测出来的,并不是原始的、可变翼德Java源文件,因此,无法直接在 Jadx-GUI 中修改这些反编译出来的 Java 代码。
下载
使用起来也很简单,打开exe文件
然后点击打开文件/打开项目或者将apk文件直接拖拽过来即可查看;