如何创建一个从 getPackageInfo(<apk>, GET_SIGNATURES) 返回多个签名的 APK?

问题描述 投票:0回答:0

我正在研究 Android 安全性,并确定了一个使用已弃用的

getPackageInfo(<apk>, GET_SIGNATURES)
的当前应用程序。为了充分了解此应用程序如何使用此已弃用的功能,我希望创建一个概念验证 APK,以返回多个签名。

到目前为止,我已经在 Android Studio 中创建了一个基本的 APK,创建了一个 CA 证书和一个由我的 CA 证书签名的叶证书。然后我将它们打包到 PKCS12 文件中,然后将其转换为 Java Keystore。然后,我使用工具 apksigner 使用此 Java Keystore 为我的 APK 签名并安装签名的应用程序。然后我通过将它从手机上拉下来并使用

keytool -printcert -jarfile poc.apk
来验证这两个证书是否与安装的apk相关联。这显示了列出的两个证书(CA 和叶)。

但是,在我的概念验证 APK 上运行

getPackageInfo(<apk>, GET_SIGNATURES)
时只返回一个结果?为什么是这样?我缺少什么才能返回多个签名?

我查看了 Android 文档,了解何时将已弃用的

GET_SIGNATURES
传递给
getPackageInfo
,但不太清楚预期结果应该是什么。我的期望是基于此演示文稿返回链中每个证书的签名:https://www.blackhat.com/docs/us-14/materials/us-14-Forristal-Android-FakeID-漏洞攻略.pdf.

这篇 stackoverflow 帖子指出,用户在他的手机上安装了来自 Verizon 的应用程序,该应用程序具有多个签名:为什么 PackageInfo.signatures 字段是一个数组,什么时候这里只有一个值?。同样,AOSP 代码有代码来说明多个地方的多个签名。

java android security android-source
© www.soinside.com 2019 - 2024. All rights reserved.