3步搞定APK解包与重打包:Apktool实战
2026/8/22 11:38:34 网站建设 项目流程

3步搞定APK解包与重打包:Apktool实战

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

你有没有过这种时候:想看看某个 App 的界面文案到底写的是什么、它申请了哪些权限、某个按钮背后的逻辑怎么实现的,结果打开 APK 只看到一堆二进制和一个混淆过的 classes.dex?Apktool 做的就是 APK 解包与逆向工程,它把应用拆成"可读、可改、可重新打包"的形态,让你改完资源或 smali 代码后,再打包回一个新的 APK。

前提只有一条:只在自有应用或已获授权的场景下使用。

安装与环境配置

预编译包在 Java 8+ 上即可运行;如果你要从源码构建,则要求 JDK 17 及以上。按你的系统挑一条最快的路:

  • Homebrew(macOS):走包管理器直接装好,省去手动配置
    brew install apktool
  • 官网预编译包:从官方发布页下载最新的apktool_*.jar,免编译直接跑
    java -jar apktool_3.1.0.jar
  • 源码编译:想尝鲜或魔改时,克隆仓库用 Gradle 打出可执行 fat jar
    git clone https://gitcode.com/GitHub_Trending/ap/Apktool ./Apktool/gradlew -p Apktool shadowJar proguard

编译产物落在 apktool-cli 模块的 build/libs 目录下,java -jar起来即可用。

从解包到重打包的完整工作流

解包就像把 APK 这个黑盒拆开,看看里面的零件长什么样——Apktool 会把二进制资源解码成接近原始形态,把 dex 反编译成一行行可读的 smali。

1. 解包:把 APK 拆成资源与 smali 都可编辑的项目目录。

apktool d app.apk -o app_decoded

结束后你会得到一个app_decoded目录,里面是解码后的资源与 smali 代码。

2. 查看目录结构:先认清里面有什么,再决定改哪个文件。

ls app_decoded

能看到AndroidManifest.xmlres/smali_*/(多 dex 时)以及assets/

3. 修改:改文案、调权限或改 smali 逻辑,直接编辑文本。

vim app_decoded/res/values/strings.xml

文本资源改完即生效,保存后这些改动会被下一步重新编码回去。

4. 重打包:把资源和 smali 反向编码回二进制,生成新 APK。

apktool b app_decoded -o app_rebuilt.apk

看到Build completed即表示 apk 重打包成功,产物就在-o指定的路径。

5. 签名与对齐:重打包出的 APK 尚未签名,装到设备上前必须完成 apktool 签名对齐这一步。

zipalign -p 4 app_rebuilt.apk app_aligned.apk apksigner sign --ks debug.keystore app_aligned.apk

先用 zipalign 对齐文件偏移,再用 apksigner 就地签名,之后才能正常安装。

高频实战场景与踩坑指南

最常见的起步场景是 🌏多语言本地化:给一个原生没带某语言的 App 补上翻译,只需解包后找到res/values/strings.xml,复制到values-<lang>/下逐条翻译,再重打包。操作要点:只改文本内容、别动name属性,否则资源引用会断。

顺手的第二件事是 🔍安全漏洞审计:解包后重点翻smali*/AndroidManifest.xml,看有没有硬编码的敏感数据、导出的组件是否暴露过度、申请了哪些权限。操作要点:用检索工具 grep 密钥、token 之类的字符串,别靠肉眼一行行刷 smali。

第三类是权限调整:想给某个 App 减负或做隐私向改动,就在AndroidManifest.xml里删掉多余的<uses-permission>再重打包。操作要点:有些权限是 App 的硬依赖,删了可能直接闪退,务必上真机验证。

几条避坑提醒,等你真用到时不慌:

  • 改前先备份:保留原始 APK,改坏了就重新解包,别在唯一副本上硬改。
  • 加密或加固的 APK 可能解包失败:遇到壳或强加密,Apktool 会报错或解不出资源,别在这上面死磕。
  • 用独立工作目录:解包目录、重打包产物、keystore 都放进专门文件夹,避免和原文件混在一起。

搭配工具与深入资源

  • dex2jar:把 dex 转成可读的 class 文件,和 Apktool 的 smali 互补,想在"Java 源码视角"下看 App 时它最顺手。
  • ProGuard:Apktool 负责把应用拆开看,ProGuard 负责发布前混淆加固,一个拆、一个装,刚好配成一对。
  • apksigner:就是工作流里负责签名的那一步,处理 v2/v3 签名方案,给重打包后的 APK 一个能过系统校验的身份。

想再往下挖时,直接看仓库根目录的README.md与构建脚本,重点跟 apktool-cli 入口模块读db两个子命令的实现,比任何二手资料都直接。

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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询