如何用 Apktool 解包并重建 APK:从解码到签名的实用实操教程

发布时间:2026/10/20 13:03:13

如何用 Apktool 解包并重建 APK:从解码到签名的实用实操教程 如何用 Apktool 解包并重建 APK从解码到签名的实用实操教程【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/ApktoolApktool 是一款逆向 Android APK 的命令行工具它能把 APK 里的代码和资源解码成你能直接阅读和修改的形态再重新打包成可安装的新 APK。本文带你在一条完整流程上走完「解码 → 修改 → 重建 → 签名」。它解决什么问题想改一个 App 的某句文案或者查看它到底申请了哪些权限时会卡在两道坎上。其一APK 是个密封的二进制包里面的 AndroidManifest.xml 是二进制格式文本编辑器打开就是一堆乱码程序逻辑则以 .dex 字节码形式存在人眼读不动。其二就算你改到了文件手工把它重新装回一个可安装的 APK资源重编译、打包、签名、对齐很容易漏步骤最后往往装不上。Apktool 把这两件事一次解决它负责解码也负责重建你只需要改中间那些文本。五分钟上手Mac 用户用 Homebrew 直接装其他系统克隆源码构建需要 JDK 17 及以上brew install apktool这条命令从 Homebrew 源安装 apktool装完终端里就能直接调用。git clone https://gitcode.com/GitHub_Trending/ap/Apktool cd Apktool ./gradlew build shadowJar第一条把仓库克隆到本地第二条进入项目目录第三条构建出一个包含全部依赖的单 jar产物在 brut.apktool/apktool-cli/build/libs/apktool-cli-all.jar。你可以用java -jar运行它也可以把 scripts/linux/apktool 这个启动脚本拷到 jar 旁边之后直接敲apktool即可。最后验证环境并解码第一个 APKapktool v apktool d sample.apk -o sample_out第一条打印已安装的版本号确认环境没问题第二条把 sample.apk 解码到 sample_out 目录从此里面都是能直接打开的文本文件。核心工作流第一步如何解包 APKapktool d解码是每次任务的第一步基本形态apktool d apk文件路径 -o 输出目录 # 示例 apktool d /path/to/app-release.apk -o app_decoded这条命令把 apk 里的资源和代码反编译回磁盘不指定输出目录时默认在与 apk 同名去掉 .apk 后缀的目录下生成。常用参数参数什么时候用-s只想看资源不解码代码更快-r不解码资源只要 Smali 代码--only-manifest只解包清单文件速度最快-f输出目录已存在强制清空后重新解码表里的 Smali 是 Android 的文本化字节码类似 Java 字节码但人可以直接阅读和编辑apktool 把 .dex 还原成 .sm 文件用的就是它。第二步读懂解码出来的目录解码后目录结构是固定的记住一次就够用AndroidManifest.xmlApp 的「户口本」权限、组件、版本都写在这里。res/布局、图片、字符串等资源全部文本化。smali/还可能有 smali_classes2/ 等Smali 代码一个 dex 对应一个目录。apktool.yml解码记录写着包 ID、密度等信息重建时必需别删。第三步改哪里文案、权限、Smali按需挑一处修改改文案打开 res/values/strings.xml搜到对应字符串直接改。改权限打开 AndroidManifest.xml删掉或修改对应的uses-permission行。改逻辑打开 smali/ 下目标类的 .sm 文件。Smali 偏汇编级需要先定位到具体类和方法配合下文提到的工具定位会快很多。解码目录和原始 APK 是两回事改坏也不影响原始包删掉重来即可。第四步如何完成重建apktool bapktool b 解码目录 -o 输出.apk # 示例 apktool b app_decoded -o app_rebuilt.apk这条命令重新编译资源、把 Smali 装配回 .dex再打包成新 APK。它默认按 apktool.yml 做增量构建只重建你改动的文件想强制全量重建就加 -fapktool b app_decoded -o app_rebuilt.apk -f此时 APK 还是「裸包」没有签名不能直接安装。第五步如何完成签名打包apksignerAndroid 只认带签名的 APK。先生成一个 keystore可以理解为存着「私章」的文件再用 apksigner 签名keytool -genkeypair -v -keystore my.keystore -alias mykey -keyalg RSA -validity 10000 apksigner sign --ks my.keystore --ks-key-alias mykey app_rebuilt.apk adb install app_rebuilt.apk第一条生成 keystore中途会让你设密码第二条为 APK 签名第三条把它装到已连接的手机上。注意重建包与原应用签名不同需要先卸载原应用否则安装会报签名冲突。典型场景实战场景一本地化或修正应用文案场景描述你想改 App 里的某句提示语或把部分文案翻译成另一种语言官方又没提供入口。具体做法解码后在 res/values/strings.xml其他语言在对应 values-xx 目录里搜到目标句子改掉再重建签名apktool d app.apk -o app_l10n apktool b app_l10n -o app_l10n.apk实际效果App 内文案变成你的版本不用等官方发版想回滚就删掉解码目录重新解码一次。场景二调整应用权限场景描述App 申请了一个你不想要的权限比如读取电话状态你希望去掉它。具体做法解码后打开 AndroidManifest.xml删除或修改目标uses-permission android:name.../行再重建签名。实际效果系统权限弹窗里不再出现该权限。但要注意如果 App 功能依赖这个权限对应功能可能不可用所以建议先备份解码目录再动手。场景三排查 Smali 代码场景描述App 在某个场景崩溃或你想在某处注入调试输出需要定位到问题类。具体做法先用能生成 Java 视图的反编译工具找到「哪个类哪个方法」再打开 smali/ 下对应的 .sm 文件做细改。想上真机调试的话重建时加 --debuggableapktool b app_decoded -o app_debug.apk --debuggable这条命令会在清单里写入 android:debuggabletrue让应用可以被调试器连接。实际效果不需要原始源码也能逐步阅读和修改程序逻辑代价是 Smali 语法接近汇编改动要格外小心。避坑与最佳实践 几条来自真实踩坑的经验改之前备份原始 APK 和解码目录用独立工作目录存放别和原包混在一起。别手工删改 apktool.yml重建靠它找回原始资源 ID动它等于给重建埋雷。加了壳、加密的应用别硬解加固过的包可能直接解码失败或重建后装上是白屏。改完资源重建后没生效先试 -f 强制全量重建增量构建默认只重编它认为有变化的文件。3.x 版本不支持 32 位系统装 64 位 JDK 再构建。配套工具与延伸阅读apksigner随 Android SDK 提供Apktool 只管重建签名这最后一棒交给它支持 v2/v3 签名方案。jadx能把 .dex 读成 Java 层视图先用它定位要改哪个类再回到 Smali 细看效率会高很多。zipalign同在 build-tools 里给重建后的 APK 做对齐部分系统上能改善内存映射效率。想看全部参数说明随时在终端敲 apktool h所有命令行参数都定义在源码 brut.apktool/apktool-cli/src/main/java/brut/apktool/Main.java 里遇到不认识的参数翻这个文件最直接。【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/19 16:06:12

路由器工作原理深度解析:从选路转发到故障排查实战指南

你有没有想过,为什么家里的Wi-Fi能让你同时刷视频、打游戏,而办公室的网络却能精准地把数据送到成百上千台电脑?这个看似简单的“转发”动作,背后是路由器这个网络“交通警察”在默默工作。对于很多初学者、网络工程师备考者&…

2026/10/19 3:11:10

Ollama-UI:本地大模型的一个简洁聊天界面

Ollama-UI:本地大模型的一个简洁聊天界面 【免费下载链接】ollama-ui Simple HTML UI for Ollama 项目地址: https://gitcode.com/gh_mirrors/ol/ollama-ui Ollama 是本地跑大模型的工具,但默认只能在终端里敲命令交互,每次还得记参数…

2026/10/20 12:58:49

2026电路设计笔试高频考点全拆解:从运放到状态机的应对策略

每年到了这个时候,总有准备跳槽和秋招的同学来问我同一个问题:硬件方向的笔试题到底该怎么刷?市面上的题库不是太老就是太杂,尤其是电路设计这块,感觉每个公司考的重点都不一样,抓不住规律。我翻了近三年各…

2026/10/20 12:58:49

context-mode:用上下文工程给AI工具装上“任务地图”

这段时间在重构内部的工具链,我一直在被同一个问题折磨:明明模型能力不差,提示词也写得很细,但让AI助手处理某个具体模块时,它还是会给出"看似合理但完全跑偏"的方案。后来我意识到问题不在模型,…

2026/10/20 12:58:49

context-mode:一套显式建模的上下文模式管理机制

1. 项目全貌:这个 “context-mode” 到底在解决什么问题1.1 初见 context-mode:一段让所有写业务逻辑的人眼熟的场景如果问我最近一年多最值得沉淀下来的技术经验是什么,我会毫不犹豫地说:一套叫 “context-mode” 的上下文模式管…

2026/10/20 12:58:49

智慧供应链赛题实战:需求预测与分仓规划完整链路

简介:这是一份天池大数据竞赛“菜鸟需求预测与分仓规划”赛题的实操代码包,面向参加数据挖掘竞赛或关注供应链预测的开发者,解决从数据清洗、特征工程到分仓建模与融合预测的完整链路。压缩包共68个文件,包含58个Python脚本、6个S…

2026/10/20 12:58:49

Context上下文模式:从组件传参到请求链路透传的实践指南

前一阵子帮某团队重构业务页面,他们要完成一个很常见的需求:把登录后拿到的用户标识,从页面顶部一路传到最底层的详情卡片。这个标识要经过五层组件、三个配置文件,中间还有两次接口回调要带上它。改着改着,最深的那个…

2026/10/20 12:53:48

从零安装RockyLinux 8.6:核心命令实战指南(1/2)

前一阵子给一台新机器做系统选型,翻了一圈发行版之后,还是决定把生产环境定在RockyLinux 8.6上。很多朋友问为什么不用更新的版本,其实 8.6 这个版本在整个 8 系列里属于仓库最成熟、生态兼容性最好的节点之一,用来学习 Linux 核心…

2026/10/19 18:06:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/20 1:05:37

单片机C运行时从启动到多任务:中断安全与共享资源冲突

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

GCC编译四步详解:预处理、编译、汇编、链接实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:05:37

FIW线是什么?FEP注塑线与普通氟塑料线的区别及应用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑