Apktool 完整指南:如何在 10 分钟内跑通第一个 APK 逆向工程
【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool
想用Apktool解包一个安卓 APK、改一两处再重新打包?这份面向新手的安装与上手教程,带你从零把Apktool这套免费的 Android 逆向工程工具跑起来。它能把二进制 APK 里的资源解码成接近原样的可读文件,修改后再重新构建成可用的安装包。
它能帮你做什么
Apktool专攻"第三方、闭源、二进制"的安卓应用逆向。典型场景有三个:把resources.arsc和 XML 资源解码出来方便阅读与修改;把 Dalvik 字节码反编译成Smali(Dalvik 字节码的文本形式)逐步调试;以及在改动后重新打包、签名出新的 APK。项目主体用Java编写,基于Gradle构建,你只需要一个较新的 JDK 就能本地编译出可执行 JAR。
技术栈与核心组件速览
先认识几个关键组件,了解它们在整条流水线里各管一段:
| 组件 / 技术 | 它是什么 | 在这里干什么 |
|---|---|---|
| Smali / Baksmali | Dalvik 字节码的汇编器 / 反汇编器 | 把.dex转成可读 Smali,改完再编回字节码 |
| aapt / 资源解码 | Android 资源打包工具链 | 解析并重建resources.arsc、布局与 values 资源 |
| XmlPullParser | 轻量 XML 拉取式解析器 | 解析与重新序列化 Android 的 XML 资源 |
| Gradle | JVM 项目构建工具 | 组织多模块依赖、打包出apktool.jar |
| JDK 17+ | Java 开发工具包 | 编译与运行的最低运行环境 |
源码按职责拆成多个模块,你可以按下面的入口快速定位:
- brut.apktool/apktool-lib/:核心库,解码、构建、资源与 Smali 处理都在这里
- brut.j.xml/:XML 解析工具,资源序列化与转义逻辑
- brut.j.dir/:目录与文件抽象,管理解包时的落盘结构
- brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java:命令行入口,
d/b等子命令的解析起点
从 0 到 1 跑起来
前置依赖很简单,先确认环境:
| 依赖 | 最低版本 | 检查命令 |
|---|---|---|
| JDK | 17 | java -version |
| 构建工具 | 无需单独安装 | 仓库自带gradlew包装脚本 |
| 源码 | 最新版 | 见下方 clone 命令 |
按顺序执行以下四步,先克隆、再编译、找到产物、最后验证:
克隆仓库到本地,拿到全部源码:
git clone https://gitcode.com/GitHub_Trending/ap/Apktool cd Apktool编译,Gradle 会自动拉取依赖并打包,产物是带主清单的可执行 JAR:
./gradlew build(Windows 上把
./gradlew换成gradlew.bat)定位产物:在
brut.apktool/apktool-cli/build/libs/下找到生成的 JAR,把它和仓库里的启动脚本放在一起(脚本默认查找同目录的apktool.jar):cp brut.apktool/apktool-cli/build/libs/apktool*.jar ./apktool.jar验证安装,直接让 JAR 输出用法说明:
java -jar apktool.jar✅成功时你应看到:一段包含
decode (d)、build (b)等子命令的用法 / 帮助文本,而不是报错堆栈。看到这串帮助信息,就说明Apktool已经能正常跑起来了。🚀
最小可用示例
下面是最短的一条端到端路径:解包 → 改一处 → 重新打包。先解包一个名为test.apk的应用,再随便改一处,最后打包回新 APK:
apktool d test.apk # 解包到 test/ 目录 # 打开 test/res/values/strings.xml,把某个字符串改一下 apktool b test # 重新构建,输出 test.apk打包成功后,test.apk会出现在当前目录,用安卓设备或模拟器装上去,就能看到你的改动。⚠️ 改完资源若报错,多半是引用了不存在的资源 ID,把改动回退再重试即可。
下一步
- 想加参数(比如保留九宫图、指定框架),先看
java -jar apktool.jar打印的完整帮助,或读 brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java 里的子命令定义。 - 资源解码细节集中在 brut.apktool/apktool-lib/src/main/java/brut/androlib/res/,遇到
resources.arsc相关报错优先翻这里。 - 常见坑:目标 APK 用了系统私有框架资源时会提示缺少 framework,解包时需先用
-f或指定框架;打包报签名错误时记得用--force-all重新生成。
【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考