APK文件中META-INF文件夹中的文件有什么目的?

16
在Android APK的META-INF文件夹中,MANIFEST.MFCERT.SFCERT.RSA文件有什么作用?
1个回答

16

安卓 APK 文件实际上是一个 JAR 文件(Java 归档文件),它只是一个普通的 ZIP 文件,可以有压缩或不压缩。JAR 文件被所有类型的 Java 应用程序使用,它们具有特定的结构——META-INF 文件夹包含有关 JAR 文件携带的 Java 包的清单信息和其他元数据。

这些文件的目的如下:

  1. MANIFEST.MF:它包含各种信息,当加载 JAR 文件时,由 Java 运行时环境使用,例如从 JAR 文件运行的主类是哪个,包的版本、构建号、创建者,Java Applets 和 Java Webstart 包的安全策略/权限,以及 JAR 中文件名及其 SHA1 摘要的列表等。
  2. CERT.SF:它包含所有文件及其 SHA-1 摘要的列表。
  3. CERT.RSA:它包含 CERT.SF 文件的签名内容以及用于签署内容的公钥的证书链。

例如,参考样例 APK 文件here。如果您通过像 7zip 这样的文件解压缩程序将其下载并扩展到桌面上,您可以看到这些文件的样例。

在提取的目录中,进入子目录 META-INF 并查看文件 manifest.mf 和 *.sf 的内容。以下是这些文件的前几行:

File MANIFEST.SF:

Manifest-Version: 1.0
Created-By: 1.7.0_60 (Oracle Corporation)

Name: res/drawable-xxhdpi-v4/common_plus_signin_btn_text_dark_pressed.9.png
SHA1-Digest: Db3E0/I85K9Aik2yJ4X1dDP3Wq0=

Name: res/drawable-xhdpi-v4/opt_more_item_close_press.9.png
SHA1-Digest: Xxm9cr4gDbEEnnYvxRWfzcIXBEM=

Name: res/anim/accessibility_guide_translate_out.xml
SHA1-Digest: dp8PyrXMy2IBxgTz19x7DATpqz8=

MCTN.SF 文件包含 MANIFEST.MF 文件列表的摘要以及一个空行:

Signature-Version: 1.0
SHA1-Digest-Manifest-Main-Attributes: Sen4TNWb3NQLczkzN1idKh81Rjc=
Created-By: 1.7.0_60 (Oracle Corporation)
SHA1-Digest-Manifest: NAWTDC05HK+hfNtQ91J4AoL9F7s=

Name: res/drawable-xxhdpi-v4/common_plus_signin_btn_text_dark_pressed.9.png
SHA1-Digest: pvIZkdVTEuilCdx8UkrlY6ufPlw=

Name: res/anim/accessibility_guide_translate_out.xml
SHA1-Digest: XeX9Q2w41PRm3KiZ5p07x3CY6hc=

文件MCTN.RSA包含基于文件MCTN.SF生成的base64编码签名。

有关如何验证APK软件包签名的详细信息,请参见此参考链接 - http://theether.net/kb/100207


1
您提到CERT.SF包含摘要的哈希值。摘要本身不就是哈希值吗? - Live Seven
编辑以澄清您的问题。 - Sandeep S. Sandhu
是的,我不知道那个。 - Live Seven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接