一、反编译 APK 的主要步骤
解压 APK 文件
- APK 本质上是一个 zip 压缩包,可以直接用
unzip或者 7zip 打开。 - 里面主要包含:
classes.dex:Dalvik/ART 字节码AndroidManifest.xml:清单文件res/:资源文件(布局、图片等)META-INF/:签名信息
- APK 本质上是一个 zip 压缩包,可以直接用
资源文件反编译
工具:
apktool命令示例:
1
apktool d app.apk -o app_decoded
可以得到可读的
AndroidManifest.xml和res/values/strings.xml等文件。
字节码转 Java 代码
classes.dex转为 Java 源码:先用
dex2jar转成 jar:1
d2j-dex2jar.sh classes.dex -o classes.jar
再用 JD-GUI / JADX 打开 jar,得到 Java 反编译代码。
更简便的工具:
- JADX:直接打开 APK,一键浏览 Java 源码和资源。
Smali 代码查看
- 如果需要精确分析,可以用 baksmali 将
dex文件转为 smali 汇编。 - smali 更接近虚拟机字节码,适合研究底层逻辑或混淆后的代码。
- 如果需要精确分析,可以用 baksmali 将
二、常用工具
- Apktool:资源文件反编译/回编译
- dex2jar:DEX → JAR
- JD-GUI / JADX:Java 代码反编译器
- Baksmali/Smali:DEX ↔ smali 汇编
- Android Studio + JADX 插件:方便调试
三、常见用途
- 学习他人 App 的实现思路
- 例如查看某些 UI 布局、网络请求逻辑。
- 安全分析
- 检查是否存在明文存储密码、未加密的 API Key。
- 二次开发 / 汉化
- 修改资源文件,重新打包签名。
四、注意事项
- 反编译仅用于 学习和安全研究,
- 大部分商业 App 都会用 混淆 / 加壳 技术,反编译代码可能会非常难读。





