[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2gzufntt9sbi8":3},{"code":4,"message":5,"data":6,"timestamp":38},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":22,"summary_md":23,"topic":24,"github_topics":27,"license":34,"homepage":35,"updated_at":36,"history":37},"iBotPeaches\u002FApktool",7,"A tool for reverse engineering Android apk files","Java",26651,4141,1003,5332,[16],{"id":17,"title":18,"points":19,"comments":20,"posted_at":21},30828630,"Apktool – A tool for reverse engineering Android APK files",1,0,"2022-03-28","把闭源 Android APK 解码成可读资源与 smali，并能改后重新打包。","## 解决什么问题\n拿到一个编译好的 APK，资源被压进二进制 XML 和 `resources.arsc`，代码是 Dalvik 字节码，想看清它到底在做什么，或者改一点点东西，第一步就卡住。Apktool 把 APK 拆成接近工程结构的目录，资源和 smali 可读可改，改完还能重新打包。\n\n## 有什么不同\n多数二进制工具的终点是「解出来」，Apktool 强调的是往返：解码、修改、重建，还支持对 smali 逐步调试。它懂 Android 的资源和 manifest 格式，而不是像通用解包或十六进制工具那样原样倾倒字节。与 jadx 这类反编译器相比，后者目标是把代码还原成可读 Java 供阅读，Apktool 停留在 smali 与资源层，重点在重新组装。与 Android 官方构建链相比，它面向别人已经发布的包，而不是你自己的源码。代价是保真度换可读性：smali 冗长难跟，遇到混淆、split APK 或异常资源布局时重建也可能失败。\n\n## 适合谁\n安全研究、恶意样本分析、本地化团队、ROM 与 Mod 开发者，需要读取或改动已发布 APK 里的资源。调试自己 release 包的 Android 开发者也用得上。只想读反编译 Java 的人应该用反编译器；做应用发布的人不该把它当成分发或加固手段。README 明确声明不用于盗版，合法使用由使用者自己负责。\n\n## 上手成本\n它是 Java 工具，需要 JVM 和平台对应的启动脚本，安装方式见 README，这里不重复。仓库同时维护 2.x 分支和 3.x 的 `main`，选错版本可能和老脚本不兼容。Apache-2.0 许可宽松。项目历史很长，但 README 对内部机制着墨很少，实际要依赖官网文档和 issue。真正的成本在知识：不熟悉 smali、`resources.arsc` 和 Android 签名，重建出的 APK 大概率装不上或跑不起来。\n\n## 点评\n这是一个成熟项目，不是新面孔：2012 年创建，约 26.6k stars，2.x 与 3.x 双分支说明维护是有意为之。HotRepo 榜单显示它在 Java 分类里持续上升（本周 +660、第 2；本月 +1,003、第 7），更像是重新受到关注，而不是发布即巅峰的短期热度。成熟度是它值得信任的理由，但工具价值的上限取决于你愿不愿意学 smali 和 Android 打包。建议先拿一个目标 APK 实测，再决定是否围绕它搭工作流。",{"slug":25,"name":26},"security","安全",[28,29,30,31,32,33],"9patch","android","apk","apktool","arsc","reverse-engineering","Apache-2.0","https:\u002F\u002Fapktool.org","2026-10-24T19:06:33Z",[],1792883062]