APK注入,重新编译安卓清单我希望能够做什么到目前为止,我尝试过什么

2022-09-01 21:24:07

我想实现的目标

反编译AndroidManifest.xml以apk形式从二进制形式打包成普通的xml文件,编辑它并将其重新编译回apk可接受的二进制文件。基本上我需要一个AXML文件的驱动程序

短背景

我正在从事一个APK注入项目。我的目标是

  1. 反汇编达尔维克二进制文件
  2. 阅读AndroidManifest xml并对其添加修改,例如更改主要活动和添加权限
  3. 重建并签署apk文件

我使用apktool来组装和拆卸apk。但是,apk工具仅适用于选项,如果apk与资源一起反汇编,则无法重新构建。这是一个描述此错误的github问题--no-res

问题

由于我反汇编了没有res的标志,因此生成的Android清单以二进制形式出现。我可以使用拆卸清单,但无法将其重新组装。apktool d --no-res app-debug.apkapktool

我希望能够做什么

我需要:

  • 找到一种反汇编清单的方法,然后将其组装回二进制形式
  • 找到一种与资源一起使用的方法apktool

到目前为止,我尝试过什么

免責聲明

虽然stackoverflow是一个知识共享的社区,而不是判断它的用途 - 我看到很多人在类似的问题上挑剔其他人,指责非法活动。

我正在做的事情是绝对合法的,不会被用来剥削任何人。


答案 1

安装可能会在以下情况下给出解析错误,看看是否有任何与您一起满足 -

  • 签名后更改包的名称:使用与已签名包完全相同的名称(改为在清单中调整名称)
  • 包。针对更高的 API 级别进行编译:更正清单文件中的 API 级别。
  • 软件包从SD卡执行:从手机内存中运行(安装)apk文件或使用adb命令进行安装。

您可以按照此处的说明手动签署您的apk。


答案 2

我发现使用纯文本androiod清单重新打包应用程序的唯一可靠方法是直接使用重新打包它。aapt

aapt package -f -M ./AndroidManifest.xml -S res1/ -S res2/ ... -I android.jar -F MyProject.apk.unaligned

要创建apk,然后:

aapt add -f MyProject.apk.unaligned classes.dex

将编译的源添加到包中。

然后使用 jarsigner 对包进行签名:

jarsigner -storepass <keystore password> -keystore <keystore filename> MyProject.apk.unaligned <key name>

推荐