APK反编译工具
APK反编译工具
反编译工具
apktool + dex2jar+ jadx 三件套
- ApkTool:是一款应用在 Apk 上的逆向工程的工具,它有编译、反编译、签名等功能,可利用 ApkTool 查看 apk 的 xml 文件、AndroidManifest.xml 和图片等。
- dex2jar:顾名思义,这款工具的作用主要是将 dex 文件转换成 jar 文件,转换成 jar 后我们才好借助 JD-GUI 来查看反编译 dex 后的代码;
- enjarify: 替代 dex2jar?
- jadx:一款 Java 反编译器,通过它我们能查看到反编译后的 dex 的代码,通常需要配合 dex2jar 使用;
apktool 提取 apk 资源
安装
Mac homebrew 安装:
brew install apktool
参数 CLI Parameters
Decoding Options 反编译
apktool d(decode) file.apk _{options}_
- -f, –force 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)
- -s, –no-src 不反编译 dex 文件,也就是说 classes.dex 文件会被保留(默认会将 dex 文件解码成 smali 文件)
- -r, –no-res
apktool decode app-release-agp4.1.0.apk –force
APkTool 只能将资源文件提取处理,对于.dex 类型的文件是无法查看的,这里就需要用到 dex2jar 了
Building Options 重新打包
- -o :指定解码目标文件夹的名称(默认使用 APK 文件的名字来命名目标文件夹)
- -r :不反编译资源文件,也就是说 resources.arsc 文件会被保留(默认会将 resources.arsc 解码成具体的资源文件)
示例:使用 apktool 将我们反编译的 app-debug.apk.zip.out 文件夹重新打包成 apk
apktool b app-debug.apk.zip.out -o new_app_debug.apk
dex2jar
安装
https://sourceforge.net/projects/dex2jar/files/
使用
sh d2j-dex2jar.sh classes.dex
问题:不支持 Android8 及以上
现象:安卓 8 以上的 apk 需要修改版本号才能识别到,否则反编译会报错,有些类反编译不出
解决 2:
支持Android8的dex2jar
jadx
https://github.com/skylot/jadx
mac homebrew 安装:
brew install jadx
ClassyShark
下载:
https://github.com/google/android-classyshark/releases
jar -jar ClassyShark.jar -open apk 路径
其他工具
TTDeDroid
一键反编译工具 (不需要手动安装 Python) One key for quickly decompile apk/aar/dex/jar, support by jadx/dex2jar/enjarify.
本文由作者按照 CC BY 4.0 进行授权