Apktool 实战手册:十分钟从零解包、改资源、重打包 APK
【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool
没拿到源码却想改 APK 里的字符串或权限?Apktool 就是 Android 逆向的标配工具:把二进制包解码成可编辑的资源与 Smali 代码,改完再重新打包、签名。
它到底在干什么
你手上只有一个闭源 APK,但想动里面的文案、权限甚至几行逻辑,Apktool 就是最顺手的解法。它把二进制资源解码回接近原始形态(manifest、res/ 目录、图片),把 dex 拆成可编辑的 Smali 汇编,改完再自动帮你重建整个包。典型用户是做本地化的开发、安全审计人员和 ROM 魔改玩家。边界也要说清:它不会吐出可读的 Java 源码,你拿到的是 Smali;它也明确反对盗版用途。
三步装好 Apktool 并解包你的第一个 APK
⚡ 安装有三条路:macOS 上 Homebrew 直接装;Windows/Linux 拿预编译的 apktool_*.jar,配上启动脚本就能用(仓库 scripts/ 目录里就有 linux、windows 两版的 wrapper);也可以从源码构建:
git clone https://gitcode.com/GitHub_Trending/ap/Apktool装好后先解包。这条命令把一个 apk 摊开成可读的目录结构:
apktool d --output <输出目录> <apk路径> # 示例:apktool d --output my_app_out my_app.apk跑完你就能看到顶部的 AndroidManifest.xml、解码后的 res/,以及装着全部代码逻辑的 smali/ 目录。
一条流水线:解包 → 修改 → 构建 → 签名 → 对齐
先解包,这一步是后面所有动作的地基。再按需改文件——res/ 里换文案、manifest 里加减权限、smali/ 里改逻辑。改完执行 b 重建:
apktool b <解码目录> -o <未签名apk>它会把资源重新编译成二进制 arsc、把 smali 编回 dex,拼成一个完整但未签名的包——直接装不上。所以最后还要走两道关:需要兼容 v1 签名时,先 zipalign 4 做 4 字节对齐,再用 apksigner sign --ks --ks-key-alias <别名> 签名;只走 v2/v3 签名方案则不依赖对齐,直接签即可。
四个马上能用的场景
- 本地化:把 res/values-*/strings.xml 整组翻成目标语言,重打包分发。
- 安全审计:逐段读 Smali,找敏感 API 调用与硬编码密钥。
- 权限调整:在 AndroidManifest.xml 里增删 uses-permission。
- 调试 Smali:打断点观察运行状态,研究混淆后的行为。
⚠️ 两条避坑提醒:改动前备份原包,apktool 不记录你的任何修改;加密加固包别硬上,很可能解包或重打包直接失败。
搭配这些工具效率翻倍
dex2jar 配合 JD-GUI 能把 .dex 转成 .jar 并查看 Java 层级类视图,适合宏观浏览;ProGuard 可对照混淆规则判断应用到底藏了什么;而 apktool 内置的 aapt 调用(见 brut.apktool/apktool-lib 下的 AaptManager)则承担了资源编解码的底层脏活。
官方 wiki 有全部参数的详解,去试吧。
【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考