Apktool 逆向指南:一条命令解包 APK,重打包、Smali 调试一次讲清
【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool
想改 App 里的一句文案,难道只能对着反编译出来的字节码干瞪眼?不一定。Apktool 是 Android APK 逆向工程的标准工具,能把包里的资源与代码还原成你用文本编辑器就能改的形式,改完一条命令重新打包出可安装的 APK,甚至还能对 Smali 代码逐行单步调试。
先跑通一次:把解码命令跑起来
安装很简单,把 apktool 可执行文件放进系统 PATH 就能用,仓库里 scripts/ 目录给 Linux、macOS、Windows 各备了一份启动脚本。
然后对着一个 APK 敲:
apktool d app.apk
旁边立刻多出一个 app 文件夹:res/ 里是图片、样式、文案等资源,AndroidManifest.xml 变成了纯文本 XML,代码按类拆成一个个 Smali 文件。它长得和你亲手建的 Android 工程几乎没有区别。
能改什么、怎么改
改文案:改字符串就完事
按钮文字、提示信息,都在 res/values/ 下的字符串资源里,找到对应条目直接换字。多语言应用每种语言各占一个目录,改中文不影响英文。
换图标:直接替换图片
把 res/drawable-*/ 下的 ic_launcher 换成你的图,文件名保持原样,分辨率跟原图一致就稳了,其余交给重新打包处理。
查逻辑:读 Smali 找位置
想知道某个行为在哪段代码里触发,翻 Smali 即可:类名、方法名、调用处都是明文,编辑器里直接全局搜索,比盲猜代码块位置快得多。
比预期强的两个地方
Smali 单步调试
多数反编译器只能"看"代码,想确认运行时走到哪个分支,只能加打印或反复试。Apktool 可以把产物标记为可调试,然后真机上逐条指令执行,寄存器内容一个一个看。"资源没问题、问题出在代码"这类情况,不用瞎猜。
逆向产物直接当工程用
解码出来的目录就是标准工程布局:res、清单、Smali 各就各位,用惯常的 IDE 打开就能编辑,也能写脚本批量操作。逆向产物能直接进日常开发流程,这一点大多数同类工具给不了。
最近这版变了什么
- 资源解码更稳:解码链路有改进,资源还原度更高,重打包后的 APK 更不容易被设备拒绝安装。
- Smali 调试更顺:调试稳定性优化,单步排查逻辑时意外中断变少,排查过程更连贯。
- 重打包提速:构建流程简化,一轮"改完再打"的等待变短,快速迭代试错不被拖节奏。
- 安全漏洞修复:堵上了此前发现的已知问题,处理来路不明的 APK 时风险更低。
去哪看源码
- 命令行入口在 brut.apktool/apktool-cli/,主程序就一个 Main.java。
- 解码、重打包核心逻辑在 brut.apktool/apktool-lib/,其中 ApkDecoder.java 管解码,ApkBuilder.java 管重新打包。
想自己编译,克隆 https://gitcode.com/GitHub_Trending/ap/Apktool 后直接用仓库自带的 gradlew 构建即可,依赖版本集中在 gradle/libs.versions.toml。
【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考