如何验证我下载的APK文件的真实性?


62

我的国家/地区不提供Google Maps的最新更新,因此我通过谷歌搜索“ Google Maps 5.4.0 apk”下载了一个版本。我确实找到了它,但是现在我不知道如何分辨它实际上是否与市场上的版本相同。

我如何确定它没有被篡改?应用程序是否以任何方式签名?有什么办法可以检查签名吗?


如果您从手机访问以下页面:m.google.com/maps,它是否提供下载链接或类似内容?
尼古拉斯

@Nicolás:它链接到市场,我无法从中下载它。
内森·费尔曼

毫不奇怪,来自谷歌。顺便说一句,我知道我没有回答您的原始问题,但是您是否测试过MapDroyd
尼古拉斯

@Nicolás:我没有,实际上我在日常导航中使用Waze。Google地图只是一个例子。Google图书是另一个例子,Google Streetview又是另一个例子(实际上,看起来只有Google应用程序给我带来了麻烦……)
Nathan Fellman

1
如果您有另一个来自同一供应商的“真实”应用程序,则可以比较两个应用程序是否使用相同的密钥/身份进行签名:android.stackexchange.com/a/208326/2241
Robert

Answers:


71

避开关于在手机上安装该应用程序的合法性的辩论,验证问题是我一直想理解的一个问题,并且您已促使我尝试找出一种验证谁签名的可能方法。 apk。

Android应用是以.jar文件的常规方式签名的(.apk实际上只是一个特殊的.jar,而这只是一个特殊的.zip),但是除非您有已知的好方法,否则跟踪证书的真实性可能并不容易。相比于。这基本上就是电话本身所做的-验证声称与电话中已有的东西实际上来自同一方的东西-电话不会拒绝安装具有未知签名者的东西,它只能(反对/清除应用程序)当某些新事物与它声称的旧事物不匹配时,就会出现明显的伪造数据。

您将需要jarsigner和keytool。我相信这些来自JDK,这是android SDK的先决条件,而不是SDK本身。

首先,您要尝试验证.apk中包含的公钥。通常这在META-INF / CERTS.RSA中,但可以在另一个文件中-解压缩-l会告诉您。您想看看您能找到什么:

unzip -p suspect.apk META-INF/CERT.RSA | keytool -printcert

这将丢弃很多有关签名者声称是谁的信息。有些证书显然是由已知方自己签名的,但是如果不弄清楚该如何跟踪,我怀疑您可以执行以下操作:

unzip -p suspect.apk META-INF/CERT.RSA | keytool -printcert | grep MD5
unzip -p knowngood.apk META-INF/CERT.RSA | keytool -printcert | grep MD5

如果您有使用相同证书的同一作者的已知受信任apk。我假设具有相同MD5总和的证书就足够了。

假设您已决定信任证书,则可以查看该证书是否已用于对.apk中的每个文件进行签名。

jarsigner -verbose -verify suspect.apk

(如果存档中有多个.RSA文件,则应添加-certs标志以告诉您已使用哪个证书对每个文件进行签名,因此可以确保已验证该证书)


9
有没有办法验证给定的apk与Google Play商店中的官方apk相同?
布莱斯2015年

@布莱斯我有同样的问题。你找到答案了吗?
Kaizer Sozay 2015年

@Chris Stratton是否可以从设备复制Google Maps apk?然后,您可以按照您所说的检查证书。
Kaizer Sozay 2015年

此外,您可以使用以下应用程序从设备中提取APK:play.google.com/store/apps/details?id = com.ext.ui&hl = zh-CN最佳,Paul。[由主持人Firelord编辑]
Spipau

4

(现在)有一个apksigner工具build-tools可以满足您的需求。从文档

检查APK的签名是否有望在APK支持的所有Android平台上被确认为有效:

apksigner verify [options] app-name.apk

1

您也可以尝试将APK上传到免费的VirusTotal.com病毒检查器。它将为APK生成一个唯一的哈希,如果其他人已经上传了该哈希以进行测试(很有可能),那么您将更加了解APK是有效的。

该服务还将使用60多种病毒扫描程序扫描APK,并告知您是否认为它具有与已发现病毒相似的签名。


0

要比较可疑apk文件中的证书,可能的一个想法是在手机的官方Play商店中下载其版本,在计算机上进行备份并进入备份目录,选择相关的apk文件并进行相同的检查。您也可以通过在设备默认应用程序(如com.google.android。* apk)上进行检查来查看Google证书。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.