Apktool 使用教程:5 步完成 APK 解包、修改、重新打包与签名
Apktool 使用教程:5 步完成 APK 解包、修改、重新打包与签名
如果你想拆开一个 APK 看看里面装着哪些资源和 Smali 代码,或者想改几处文案、调整几个权限后放出修正版,那正是该拿出 Apktool 的时候——它能将 APK 中的二进制资源解码为接近原始形态的可编辑文件,并在修改后帮你重新构建出可安装的 APK。本地化翻译、安全审计、功能增强都是它的常见用武之地;请把它用在正当目的上,而非盗版或其他不当用途。
快速安装:拿到 Apktool 的 3 种方式
macOS 用户可以直接用 Homebrew 一条命令装好;其他平台既可以从官网下载页拿预编译的 jar 包,也可以把源码克隆下来用 Gradle 自己构建。
# macOS:Homebrew 一行安装
brew install apktool
# 从源码构建(需要 JDK 17+ 与 Gradle)
git clone https://gitcode.com/GitHub_Trending/ap/Apktool
cd Apktool
./gradlew build
构建完成后,brut.apktool/apktool-cli 目录下会产出带全部依赖的可执行 jar(入口为 brut.apktool.Main);不想手动敲 java -jar 的话,仓库 scripts/linux、scripts/osx、scripts/windows 里的包装脚本能帮你把 apktool 变成一条直接可用的命令。
核心工作流:从解包到可安装 APK 的 5 步
整个流程按「解包 → 修改 → 重新打包 → 签名 → 对齐」推进,每一步做完都能立刻验证结果。
第 1 步:用 apktool d 解包 APK
apktool d --output my_app_output_dir my_app.apk
这条命令会解出 AndroidManifest.xml、按类型分好类的 res/ 资源目录和存放字节码的 smali/ 目录——你会看到一个像普通项目一样的文件树。
第 2 步:修改资源与 Smali
- 改文案:编辑
res/values/strings.xml里的字符串; - 改权限:在
AndroidManifest.xml中增删<uses-permission>条目; - 改逻辑:直接修复
smali/下的.sm文件,配合调试工具可以逐行定位。
第 3 步:用 apktool b 重新打包
apktool b my_app_output_dir -o rebuilt_app.apk \
--key ~/.android/debug.keystore --keyalias androiddebugkey
--key / --keyalias 指向你的 keystore 文件(可用 keytool 生成),让 apktool 在打包时顺手完成签名;不带这两个参数则产出未签名的 APK。成功后终端会打印出新包的路径。
第 4 步:用 apksigner 签名
apksigner sign --key ~/.android/debug.keystore --keyalias androiddebugkey rebuilt_app.apk
apksigner 是官方签名工具,支持 v2、v3 签名方案,新版 Android 安装的 APK 基本都要求走这套方案。
第 5 步:用 zipalign 对齐
zipalign 4 rebuilt_app.apk aligned_rebuilt_app.apk
对齐把未压缩数据调整到 4 字节边界,aligned_rebuilt_app.apk 现在可以直接装到真机或模拟器上验证你的修改了。✅
实用场景:解包之后还能做什么
- 本地化:把
res/values/下的字符串整套翻译成目标语言,重新打包即是多语言版; - 权限调整:删掉不想要的
<uses-permission>或补充自定义权限,改完即可重打包; - 安全审计:在
smali/里排查硬编码密钥、可疑网络调用与潜在漏洞; - 逆向学习:借由项目式的目录结构,完整观察一个应用的资源组织与字节码实现。
避坑指南:上手前先看这 4 个常见问题
- 改坏了找不回原始内容 → 动手前先备份原始 APK 和解包目录,保留一份未动的对照样本;
- 加密 / 加固过的 APK 解包失败 → ⚠️ 不要硬啃,这类包可能直接报错或资源残缺,先确认应用未受保护,否则走正规渠道拿源码;
- 原始文件与解包产物混在一起 → 为每个应用建专用工作目录,输出目录单独命名,避免覆盖和混淆;
- 重装后提示「应用未安装 / 签名冲突」 → 始终用同一个 keystore 签名,换 keystore 前需先卸载旧版本。
搭档工具:与 Apktool 常配合的组合
- ProGuard:对 Java 代码做混淆、优化与压缩,打包后让反编译更难读;
- dex2jar:把
.dex转换成.jar,方便以类结构查看字节码; - JD-GUI:图形化打开反编译后的类,逐行读 Java 源码;
- apksigner:官方签名器,负责 v2/v3 签名方案。
更完整的命令参考与版本变更说明,可以在项目 README 和 apktool.org 文档站中查阅。
解包一次、重打包一次、装进手机跑通一次,你对 Android 逆向的工程化理解就真正落地了。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)