我想要实现的目标
将打包在apk中的AndroidManifest.xml从二进制形式反编译成普通的xml文件,编辑并重新编译成apk可接受的二进制文件。基本上我需要一个 AXML 文件的驱动程序
短背景
我正在开发一个 APK 注入(inject)项目。 我的目标是
- 反汇编 dalvik 二进制文件
- 读取 AndroidManifest xml 并对其进行修改,例如更改主要 Activity 并添加权限
- 重建并签署 apk 文件
我使用 apktool 来组装和反汇编 apk。但是,apk 工具仅适用于 --no-res
选项,如果 apk 与资源一起反汇编,则无法重新构建。 Here's a github issue describing this bug .
问题
由于我将 apktool d --no-res app-debug.apk
分解为没有 res 标志,因此生成的 android list 以二进制形式出现。我可以使用 apktool
反汇编 list ,但我无法将其组装回来。
我想做什么
我需要:
- 找到一种方法来反汇编 list ,然后将其组装回二进制形式
- 找到一种将
apktool
与资源一起使用的方法
到目前为止我所尝试的
- 将二进制
AndroidManifest.xml
替换为纯文本版本,然后构建。apktool
将构建。但是,将应用安装到设备失败并显示“解析包时出现问题解析错误”。 - 使用不同版本的
apktool
:v2.3.2
,v2.3.1
,v2.3.0
,v2.2.0
、v2.2.1
、v2.2.2
- 使用以下项目编译 axml:https://github.com/rednaga/axmlprinter ; https://github.com/ZaratustraN/axml-parser ; https://github.com/shazam/axmlparser
免责声明
虽然 stackoverflow 是一个知识共享社区,而不是评判它的用途 - 我看到很多人在类似的问题中挑剔其他人,指控他们从事非法 Activity 。
我的所作所为绝对合法,不会被用来剥削任何人。
最佳答案
安装在以下情况下会出现解析错误,看看有没有遇到过 -
- 签名后包的名称被更改:使用确切的名称作为 签名的包是(改为在 Manifest 中调整名称)
- 包。 在更高的 API 级别上编译:更正 API 级别 list 文件。
- 从 SD 卡执行包:运行(安装)apk - 手机内存中的文件或使用 adb 命令安装它。
您可以按照给定的 here 手动签名您的 apk .
关于java - APK注入(inject),重新编译android manifest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49931372/