Apktool 使用教程:5 步完成 APK 解包、修改、重新打包与签名

【免费下载链接】Apktool A tool for reverse engineering Android apk files 【免费下载链接】Apktool 项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool

如果你想拆开一个 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 逆向的工程化理解就真正落地了。

【免费下载链接】Apktool A tool for reverse engineering Android apk files 【免费下载链接】Apktool 项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐