【问题标题】:Modifying system apps: original AndroidManifest.xml required, but why?修改系统应用程序:需要原始的 AndroidManifest.xml,但为什么呢?
【发布时间】:2013-01-27 01:01:58
【问题描述】:

编辑系统APK的基本步骤:

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

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

许多指南指出有必要将 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 以某种方式相互关联。

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

【问题讨论】:

  • 阅读问题回答了我的问题! +1

标签: android apk code-signing meta-inf


【解决方案1】:

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

【讨论】:

  • 感谢您的回答! :) 但是,我检查了原始 AndroidManifest.xml 和我重新编译后的 SHA1:它们是相同的!我看过的许多要求复制 AndroidManifest.xml 的指南都没有明确修改 AndroidManifest.xml。您是否理解即使用户不直接打开它也可以对其进行修改(即更改其 SHA1 摘要)?
  • 如果您在重新编译之前和之后看到相同的摘要(但行为不同),那么差异肯定在其他地方。您是否尝试过将 META_INF 的原始内容与修改后的 APK 中的内容进行比较?当您重建 APK 时,您的工具是否会自动更新 CERT.SF 中的摘要?
  • 两个 META-INF 文件夹是相同的:CERT.SF、CERT.RSA 和 MANIFEST.MF。 :/ 压缩时,两者的哈希值不同——但这可能是归档时字典单词的差异。我不确定 CERT.SF 中的摘要是否正在更新,但它们应该是相同的,对吧?无论哪种方式,它们都是……我正在使用 IDE,Virtuous Ten Studios。目前,它只添加了原始的 META-INF 文件夹,但这还不够。让我尝试手动将 AndroidManifest.XML 添加到我修改后的 SystemUI.apk 并确认这正是问题所在。
  • 哼!我自己替换了 AndroidManifest.XML 和 META-INF 文件夹,效果很好! APK 加载完美……这是什么?!
  • 你的理解是完美的。不过,我昨天发现了这个! AndroidManifest.XML is modified! 不知道怎么改,这里修改的日期不一样!有时会发生吗?我不确定哈希是否考虑了不同的修改日期。 -- 我检查了 META-INF 文件夹:所有三个文件的哈希值相同。 :( 当压缩为整个文件夹时,它会有所不同,但这可能是压缩中的字典单词选择差异。非常感谢您的帮助;它对我帮助很大。我也将此信息发送给了 VTS 开发人员! :)
猜你喜欢
  • 1970-01-01
  • 2012-02-06
  • 2019-06-06
  • 2011-04-29
  • 2019-02-07
  • 2011-08-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多