news 2026/9/5 17:52:07

5 分钟跑通 Apktool:APK 逆向工程最短上手路径

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5 分钟跑通 Apktool:APK 逆向工程最短上手路径

5 分钟跑通 Apktool:APK 逆向工程最短上手路径

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

APK(安卓应用的安装包)看不懂、改不动?Apktool 就是干这个的:把 APK 拆成能直接编辑的目录,你改完资源或代码,再一条命令打回成新的 APK。全程不用写代码,装好 Java 就能跑。下面从安装到解包回包,每步都给好现成命令,照着敲就行。

它是什么

说白了,Apktool 相当于给 APK 做了个"可编辑的解压包"。APK 本来是压得死死的二进制文件,它给你还原成 AndroidManifest.xml、res 图片、smali 代码(安卓程序的字节码,相当于 Java 编译后的中间产物)这样的目录结构。它能帮你做三件事:拆包看清里面有什么、直接改资源和文本、改完重新打包成能装回手机的 APK。整个工具用 Java 写,产物就一个 jar 包,没有别的依赖要伺候。

🚀 一条命令装好 Apktool

准备就一件事:装个 JDK 17 及以上(java -version能看到版本号就行),其他什么都不用装。

先拉源码:

git clone https://gitcode.com/GitHub_Trending/ap/Apktool && cd Apktool

再打出一个能直接跑的 jar,-x test会跳过测试,快很多:

./gradlew clean shadowJar -x test

把构建产物改个顺手的名字,顺便验证装没装成功:

mv brut.apktool/apktool-cli/build/libs/apktool-cli-all.jar apktool.jar java -jar apktool.jar --version

执行完会打出 3.1.x 的版本号,看到就说明 Apktool 安装完成。嫌构建慢的话,也可以直接用官方发布渠道下的 apktool.jar,放哪都行,java -jar跑起来是一样的。

解包回包各一行

把 APK 拆开看看

想知道一个 APK 里到底有啥,一行就够:

java -jar apktool.jar d test.apk

跑完当前目录多出test.apk/,manifest、图片资源、smali 全在里头,随便翻。

改完资源打回去

在解出来的目录里改完文字或配置后,回包:

java -jar apktool.jar b test.apk/

成功后dist/下会生成新的 APK,拿去装机验证。

只看代码不碰资源

只关心 smali 代码的话,加个-s跳过资源解析,包越大省得越多:

java -jar apktool.jar d test.apk -s

出来的目录里只有 smali 和 manifest,翻起来快。

⚠️ 避坑提示

  • Gradle 报 Java 版本不对:提示需要 JDK 17 或出现Unsupported class file之类字样,九成是 Java 太老。java -version看一眼,不够就升级,别瞎调参数。
  • 解包提示目录已存在:上次的解包目录没删干净时会直接报错拒解。加-f强制覆盖:java -jar apktool.jar d test.apk -f

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 17:51:36

core-js@3 如何让 Babel polyfill 不再踩坑?一份完整选型指南

core-js3 如何让 Babel polyfill 不再踩坑?一份完整选型指南 【免费下载链接】core-js Standard Library 项目地址: https://gitcode.com/GitHub_Trending/co/core-js babel/polyfill 弃用后,入口文件里那行 import 该换成什么?core-j…

作者头像 李华
网站建设 2026/9/5 17:48:14

Unity WebGL为何不能用Socket?WebSocket联机方案与实战

上周帮一个朋友排查 WebGL 联调问题,他把一整套基于 TcpClient 的通信代码从 PC 端直接搬进了 WebGL 构建包,在 Editor 里跑得风生水起,发布到浏览器就彻底完蛋:服务器看不到连接进来,游戏里也不报错,像一拳…

作者头像 李华
网站建设 2026/9/5 17:46:05

基于SpringBoot+Vue的博客创作中心实战:草稿到发布的状态管理

很多人做博客系统,容易把重心全放在“文章列表页”和“详情页”的展示效果上,等做到“创作中心”时反而会犹豫:这不就是一个富文本编辑器加一个保存按钮吗?但实际上,创作中心才是一个博客系统里用户停留时间最长、状态…

作者头像 李华