知名品牌签名比对:识破换壳重打包的应用
为什么签名能辨伪
重打包的完整链条是:拿到原厂 APK → 反编译改动 → 重新打包 → 必须重新签名(原厂私钥不在攻击者手里)→ 分发。链条上任何一步都能做到以假乱真,唯独签名这步做不到"和原厂一样"——它要么是原厂签名(没动过),要么是别的签名(动过)。
安卓安全生态里证书指纹比对是辨伪的标准做法:把包内证书的指纹与官方公布的指纹对一下,一致即原装。专业用户用命令行做这件事,普通用户就需要一个把指纹库内置好的工具。
apk-signer 的做法
它把这套比对做成了开箱即用:验证页说明文字明确写着"验证已安装的应用程序或 apk 文件……是否由某些知名品牌签名"。也就是说应用内置了一份知名品牌的签名名单,验证时自动比对——你不需要自己去收集原厂指纹。
两条验证动线都走这套比对:
识破的典型场景
- 仿冒大牌应用:第三方小站流传的"某大厂应用",验证显示签名对不上该品牌——仿冒实锤。
- 被换壳的更新包:群里流传的"某应用更新版",签名是陌生证书——典型的重签重打包。
- 来路不明的"内测版":签名既不是原厂也不是任何已知品牌——来源可疑,删除处理。
名单的覆盖范围
品牌名单覆盖的范围与应用版本相关,随版本迭代可能增补;不在名单内的小众应用验不出"品牌归属",退回签名有效性判断即可,边界的完整讨论见验证通过的边界。