4

编辑系统 APK 的基本步骤:

  1. 备份 APK。
  2. 反编译工作 APK。
  3. 做出改变。
  4. 重新编译工作 APK。
  5. 将META-INF 文件夹和 AndroidManifest.xml 从备份 APK(从未反编译)复制/粘贴到重新编译的工作 APK 中。完毕!

META-INF 包含签名:这是有道理的。但是,AndroidManifest.xml 保留原始签名的目的是什么?我自己对此进行了测试,Android 不会使用重新编译的 AndroidManifest.xml(即不是原始的 AndroidManifest.xml)加载 APK。

许多指南声明了将 META-INF 和 AndroidManfest.xml 从原始 APK 复制到修改后的 APK 的必要性。

我发现的最接近的答案是重新编译会损坏 AndroidManifest.xml(请参阅http://rootzwiki.com/topic/268-guide-newbies-how-to-port-themes/),但我比较了原始和后期重新编译 AndroidManifest.XML 并且它们是相同的(说 WinMerge 并且它们具有相同的 MD5 和 SHA1 哈希值)。另一个人 ( http://miuiandroid.com/community/threads/q-remove-miui-torch-app.16013/ ) 推测 META-INF 和 AndroidManifest.xml 以某种方式相互关联。

每个人都这样做,但有人知道为什么吗?

4

1 回答 1

1

在验证系统 APK 时,Android 会检查 APK 中文件子集的签名,以确保它们没有被篡改。这些文件包括AndroidManifest.xmlclasses.dex和其他文件。如果原始文件的 SHA-1 摘要(存储在META-INF/MANIFEST.MFMETA-INF/CERT.SF中)与修改后的 APK 中的文件的摘要不匹配,则 Android 将拒绝加载 APK。

于 2013-01-27T03:53:41.377 回答