【问题标题】:What are the purposes of files in META-INF folder of an APK file?APK文件的META-INF文件夹中的文件有什么用途?
【发布时间】:2017-01-11 08:37:40
【问题描述】:

MANIFEST.MFCERT.SFCERT.RSA 文件在 android 的 META-INF 文件夹中的用途是什么APK。

【问题讨论】:

    标签: android apk digital-signature


    【解决方案1】:

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

    这些文件的用途如下:

    1. MANIFEST.MF:包含java运行时环境在加载jar文件时使用的各种信息,如要从jar文件中运行的主类、包的版本、内部版本号、创建者包、java applet 和 java webstart 包的安全策略/权限、ja​​r 中的文件名列表及其 SHA1 摘要等。
    2. CERT.SF:其中包含所有文件的列表及其 SHA-1 摘要。
    3. CERT.RSA:这包含 CERT.SF 文件的签名内容以及用于签名内容的公钥的证书链。

    作为示例,请参阅示例 apk 文件here。 如果您使用 7zip 之类的文件解压缩程序将该文件下载并展开到您的桌面,您可以看到这些文件的示例。

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

    文件 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

    【讨论】:

    • 您提到 CERT.SF 包含摘要。 digest 本身不是哈希值吗?
    • 已编辑以澄清您的问题。
    • 是的,我不知道。
    猜你喜欢
    • 2018-03-27
    • 2013-01-24
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2020-11-03
    • 2016-08-10
    • 1970-01-01
    • 2019-09-05
    相关资源
    最近更新 更多