代码之家  ›  专栏  ›  技术社区  ›  Ben

APK注入,重新编译android清单

  •  24
  • Ben  · 技术社区  · 6 年前

    我想要实现的目标

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

    短背景

    我在做一个APK注射项目。 我的目标是

    1. 拆解dalvik二进制文件
    2. 读取AndroidManifest xml并向其添加修改,如更改主活动和添加权限
    3. 重建并签署apk文件

    我使用apktool来组装和拆卸apk。但是,apk工具仅适用于 --no-res 选项,如果apk已使用资源解除组装,则无法重新构建。 Here's a github issue describing this bug

    问题所在

    自从我拆开 apktool d --no-res app-debug.apk 在没有res标志的情况下,生成的android清单以二进制形式出现。我可以使用 apktool 但我不能断言它会回来。

    我想做什么

    我需要:

    • 找到一种方法来分解清单,然后将其重新组装成二进制形式
    • 找到使用的方法 apktool工具 使用资源

    到目前为止我所尝试的

    免责声明

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

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

    3 回复  |  直到 4 年前
        1
  •  8
  •   karanatwal.github.io    6 年前

    在以下条件下,安装可能会出现解析错误,请查看是否遇到任何问题-

    • 签名后更改包的名称:使用确切的名称 签名的包是(而是调整清单中的名称)
    • 包裹 在更高的API级别上编译:在中更正API级别 清单文件。
    • 从SD卡执行包:运行(安装)apk -文件或使用adb命令安装。

    您可以按照给定的方式手动签署apk here

        2
  •  2
  •   Ben    6 年前

    我发现用纯文本Android清单重新打包应用程序的唯一可靠方法是使用 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>
    
        3
  •  0
  •   Lucas Oliveira    3 年前

    我也遇到过类似的问题,但我很幸运 Easy APK tool

    我打开应用程序,然后导航到 options -> apktool 并已检查 don't decode classes.dex 。然后我成功地重新编译了应用程序。

    另一种选择是使用aapt,如 Ben 已经说过,但这需要更多的知识/努力。