微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编辑AndroidManifest.xml以启用调试后无法安装应用程序

如何解决编辑AndroidManifest.xml以启用调试后无法安装应用程序

问题

我正在尝试编辑从Play商店下载的应用的AndroidManifest.xml,以启用调试功能

我可以始终对应用程序的smali文件进行更改,重新编译APK,对齐,签名并重新安装到手机上,而不会出现任何问题。但是,我无法对AndroidManifest.xml进行任何更改。

当我将application:debuggable="true"添加AndroidManifest.xml时,手机尝试在真实硬件上安装后抛出INSTALL_PARSE_Failed_UNEXPECTED_EXCEPTION

apktool的作者认为这是jarsigner中的错误,而不是apktool。 (请参阅https://github.com/iBotPeaches/Apktool/issues/2374

命令:

反编译为:

apktool d src/base.apk -f --force-manifest -r -o src/decoded

编译:

apktool b --force-all -o src/output/base-unaligned.apk src/decoded
zipalign -f 4 src/output/base-unaligned.apk src/output/modified-base.apk
jarsigner -sigalg SHA256withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android src/output/base-unaligned.apk androiddebugkey

已安装:

adb install src/output/modified-base.apk

注意:它成功地反编译/编译。仅在尝试安装APK时才会显示错误

  • 尝试弄乱jarsigner使用的算法,因为其中一些算法会发出有关不安全的警告。我认为这并不重要。

  • 尝试克隆apktool并使用上游版本。

  • 尝试了这些构建命令的许多变体

我的假设:

通常,当使用apktool反编译APK时,AndroidManifest.xml实际上不是XML文件。相反,它采用一种称为AXML的二进制格式。

为了使apktool可以将AndroidManifest.xml从AXML反编译为普通XML,必须使用apktool选项--force-manifest对apk进行反编译。我认为问题在于再次编译APK时AndroidManifest.xml不会转换回AXML。我已经通过解压缩生成的APK并进行检查来验证了这一点。

我会亲自尝试将其转换为AXML,看看是否可以解决,但是将XML转换为AXML并非易事。可以使用aaptaapt2来做到这一点,但是这些并不是世界上最用户友好的程序。还有一个名为axml2xml的项目,但我无法使其正常工作。

问题

  • 是否有更简单的方法可以在逆向工程环境中对应用程序启用调试?

  • 我的假设可以被确认或破坏吗?

  • 此问题的原因是什么,如何调试或修复它?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。