通过ADB Shell获取应用列表后,如何校验签名并验证应用是否为原版?
检查安卓应用签名并验证原版性的方法
一、获取已安装应用的签名信息
你已经通过pm list packages拿到了所有包名,接下来针对目标包名执行以下操作:
获取应用APK路径
执行命令:adb shell pm path <目标包名>示例输出:
package:/data/app/com.google.android.gms-2/base.apk提取签名指纹(两种方式)
方式1:直接通过ADB Shell读取(无需拉取APK)
执行命令提取签名哈希:adb shell dumpsys package <目标包名> | grep -E "Signing Fingerprints|signingKey"输出会直接显示应用的SHA1/SHA256签名指纹。
方式2:拉取APK后用keytool提取(需JDK环境)
先把APK拉到本地:adb pull /data/app/com.google.android.gms-2/base.apk再用JDK的
keytool命令提取签名:keytool -printcert -jarfile base.apk输出中的
SHA1或SHA256字段就是签名指纹。
二、获取官方渠道的原版签名
自有应用:直接查看你上传到Google Play Console时使用的发布密钥指纹,执行命令:
keytool -list -v -keystore <你的发布密钥库文件>注意:如果开启了Google Play App Signing,要对比的是Play Console中显示的发布密钥指纹,而非你本地的上传密钥。
第三方应用:从Google Play下载原版APK,用上述同样的方法提取其签名指纹,作为对比基准。
三、判断应用是否被篡改
- 若本地应用的签名指纹与官方渠道的指纹完全一致,说明是原版未篡改的应用;
- 若指纹不一致,要么是安装了非官方渠道的修改版,要么是应用被恶意篡改过。
内容的提问来源于stack exchange,提问作者Kezern
相关产品推荐
相关产品推荐

