ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Apktool 反编译 APK:从改一行字符串到重新打包

Apktool 反编译 APK:从改一行字符串到重新打包 Apktool 反编译 APK从改一行字符串到重新打包【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool想改一个 APK 里的字符串资源但 zip 解出来的AndroidManifest.xml和resources.arsc全是二进制smali 字节码更读不下去。Apktool 就是为这个场景做的把二进制 Android 包解码成可读、可编辑、可重新打包的项目。它解决什么问题Apktool 的输入是一个闭源、二进制的 APK 文件输出是一个带完整目录结构的项目可编辑的AndroidManifest.xml、解码后的res/资源目录以及由 baksmali 生成的smali/代码目录。它替代的是手工解析resources.arsc和逐个反汇编 dex 的重复劳动核心工作流就两个子命令apktool d解码、apktool b重打包见 brut.apktool.apktool-cli.Main。核心能力拆解只改资源不动逻辑本地化翻译、换图标、调布局这类需求只需要碰资源层。apktool d app.apk会把res/下的 XML 和图片还原成接近原始的形态改完文本或图片后直接apktool b app重新生成 APK。注意它默认也会解码 smali如果只想看资源可以加-s跳过源码解码、-r跳过资源解码按需裁剪输出。阅读与修改 smali 代码当改动必须落到代码层比如给AndroidManifest.xml的debuggable打补丁、改 dex 里的常量解码后的smali/目录是可读的汇编文本可以直接编辑再用apktool b编回 dex。解码逻辑在 brut.androlib.ApkDecoder它对classes.dex、classes2.dex等按顺序拆分输出到smali/、smali_classes2/。限制是 smali 是逐行汇编改动范围一大就很难维护适合定点修补而不适合大段重写。处理框架依赖与动态特性模块一些 APK尤其是 Play 动态特性模块依赖宿主应用的框架资源直接解码会报FrameworkNotFoundException。这类情况先用apktool if framework.apk安装框架再配合-f框架参数解码和构建-l package:file参数则用来声明共享库依赖。这是多模块应用和 OEM 定制 ROM 场景下的常规步骤普通单体 APK 用不到。最短上手路径以下以源码构建为例也可直接使用官方发布的预编译 jar步骤 2、3 换成java -jar apktool.jar ...git clone https://gitcode.com/GitHub_Trending/ap/Apktool进入目录。准备 JDK 17 环境构建要求产物是 Java 8 字节码运行预编译 jar 用 JDK 8 即可。./gradlew build shadowJar构建完成后可在brut.apktool/apktool-cli/build/libs/下找到 fat jar。java -jar apktool-*.jar v能打印版本号即工具链正常。java -jar apktool-*.jar d app.apk看到Using Apktool ... on app.apk且生成app/目录即解码成功改完后java -jar apktool-*.jar b app产物默认输出到dist/app.apk。边界与常见坑它不处理加固壳。带壳 APK 的逻辑藏在 native 壳里解码出来的 smali 只是壳的加载代码改了也起不到作用重打包出来的包基本不能跑。构建产出的 APK 没有签名也不能直接安装到设备。需要先用zipalign对齐再用apksigner签名这一步 Apktool 本身不做。不支持 32 位平台且对 zip 结构的校验做了宽松处理以兼容部分应用的反制手段遇到解码报错Invalid resource config detected之类的提示可以用--keep-broken-res保留问题资源再手工修而不是直接放弃。相关资源README.md项目定位、分支说明main为 3.x 分支2.x为维护分支与安全漏洞报告方式INTERNAL.md版本发布流程与构建 aapt2 二进制的内部文档CONTRIBUTORS.md贡献者列表命令行选项全集见apktool help即h子命令构建脚本入口在 scripts/ 目录下按平台分发的启动脚本社区交流入口为 libera.chat 上的#apktool频道与它互补的工具是 jadx看 Java 级反编译代码和 apksigner/zipalign签名与对齐Apktool 适用于对自己拥有合法处置权的包进行操作例如本地化自有应用、调试或兼容性问题排查。修改他人闭源应用并重新分发涉及法律与授权风险使用前请确认操作对象在你有权处理的范围内。【免费下载链接】ApktoolA tool for reverse engineering Android apk files项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表