逆向 APK 文件

解包工具 apktool

apk 包本身是个 zip 包,包里面的 xml 资源等都转换为二进制数据无法阅读。

使用 apktool 能对 apk 进行解包,如果有修改后,还能重新打包。

工具下载:https://apktool.org/

使用命令:

1
apktool d xxx.apk

解包命令可以加额外参数:

-f :如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)

-o :指定解码目标文件夹的名称(默认使用 APK 文件的名字来命名目标文件夹)

-s :不反编译dex文件,也就是说 classes.dex 文件会被保留(默认会将 dex 文件解码成 smali 文件)

-r :不反编译资源文件,也就是说 resources.arsc 文件会被保留(默认会将 resources.arsc 解码成具体的资源文件)

后面直接反编译 Java 的源码, 我常用的命令是:

1
apktool d -s -r xxx.apk

解包后的目录结构:

AndroidManifest.xml:经过反编译还原后的 manifest 文件

original 文件夹:存放了未经反编译过、原始的 AndroidManifest.xml 文件

res 文件夹:存放了反编译出来的所有资源

smali 文件夹:存放了反编译出来的所有代码,只不过格式都是.smali类型的

转换工具 dex2jar

将安卓的 dex 文件转换为 class 文件

工具下载:https://sourceforge.net/projects/dex2jar/

使用方法:

d2j-dex2jar classes.dex

反编译工具 jd-gui

反编译 class 显示 Java 代码

工具下载:http://java-decompiler.github.io/

启动图形界面,文件-> 打开 classes-dex2jar.jar

songfei 支付宝支付宝
songfei 微信微信
0%