如何解决编辑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并非易事。可以使用aapt
或aapt2
来做到这一点,但是这些并不是世界上最用户友好的程序。还有一个名为axml2xml
的项目,但我无法使其正常工作。
问题
-
是否有更简单的方法可以在逆向工程环境中对应用程序启用调试?
-
我的假设可以被确认或破坏吗?
-
此问题的原因是什么,如何调试或修复它?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。