Apktool — Android APK 解码与重打包的标准工具

2026/06/08 sec apktool · apk · smali · android-reverse-engineering · repackage 1642 字 · 约 5 分钟 阅读
Apktool 是 Android APK 逆向工程的核心工具,支持将 APK 解码为 Smali + 资源文件,修改后可重打包并签名,是 Android 安全测试和汉化的标准工具。

项目简介

Apktool 是 Android APK 逆向工程的标准工具,可以将 APK 解码为 Smali 汇编代码、资源文件和 Manifest 清单,方便研究人员分析和修改。最核心的是,修改完成后可以重打包(Rebuild) 回 APK 文件并签名,是唯一能完整实现「解码 → 修改 → 重打包 → 签名」全流程的开源工具。

该项目最初由 brut.all 于 2010 年创建,现由 iBotPeaches 维护。GitHub 仓库位于 github.com/iBotPeaches/Apktool,是 Android 逆向生态中不可或缺的基础设施。

GitHub 数据

指标数据
Stars24,722
LicenseApache-2.0
主要语言Java
最新版本v3.0.2(2026-06 活跃)
创建时间2010 年(原版)/ iBotPeaches 维护

核心功能

  • APK 解码(Decode):将 APK 解包为 Smali 代码、资源文件和 AndroidManifest.xml
  • 重打包(Build):将修改后的 Smali/资源重新打包为 APK
  • APK 签名:配合 apksignerjarsigner 完成重打包后的签名
  • Smali 调试:可在 Smali 级别进行调试分析
  • 框架安装:安装系统框架(framework-res.apk)以解码系统应用
  • 资源反编译:将二进制 XML 反编译为可读的文本 XML
  • aapt2 支持:v3.0+ 全面支持 Android 最新的资源打包工具 aapt2
  • 插件机制:支持自定义插件扩展功能

技术栈

层次技术
核心引擎Java
汇编层Smali(Dalvik 虚拟机汇编语言)
资源处理aapt / aapt2(Android SDK)

安装与使用

方式一:直接下载 Jar 包

GitHub Releases 页面 下载最新版的 apktool.jar

方式二:macOS 通过 Homebrew 安装

brew install apktool

方式三:Windows 下载 wrapper 脚本

从官网下载 apktool.batapktool.jar,放入同一目录即可命令行使用。

基本使用流程:

# 1. 解码 APK
apktool d target.apk -o output_dir

# 2. 修改 Smali 代码或资源文件
# vim output_dir/smali/com/example/MainActivity.smali

# 3. 重打包
apktool b output_dir -o patched.apk

# 4. 签名(需安装 Android SDK Build Tools)
apksigner sign --ks my.keystore patched.apk

# 安装系统框架(解码系统应用时需要)
apktool if framework-res.apk

适用场景

  • APK 汉化与本地化修改
  • APK 去广告、功能破解
  • Android 安全测试(Smali 级调试与分析)
  • 资源文件提取与替换
  • 绕过签名校验
  • Android 恶意软件分析(检查修改后的行为)
  • 自动化 App 修改流水线(CI/CD 集成)

竞品对比

竞品类型特点局限
jadx反编译器将 DEX 反编译为 Java 源码不能重打包
Android Studio APK Analyzer系统工具直观查看 APK 结构只读,不支持修改和重打包
Bytecode Viewer逆向工具多合一浏览反编译结果偏向浏览,不适合修改重打包

核心优势:

  • 唯一能完整实现「解码 → 修改 → 重打包 → 签名」全流程的开源工具
  • 自 2010 年起持续维护超过 15 年,Android 逆向生态的基石工具
  • 被 Kali Linux 等安全发行版内置,行业公认标准
  • 支持最新 Android API 级别的资源格式(aapt2)

参考资料

文档信息

加载评论…