每隔几个月 Reddit 上就会有一个热帖:「我刚 Root 了手机,银行 App 打不开了」。通常是很谨慎的用户,用的是维护得很好的隐藏工具,装的是没有明显篡改的手机。都不重要 —— 就是这么快。
2026 年的「Root 检测」不是单一检查。它是一套五层证明流水线,Root 隐藏工具只能在最外面那层上真的动动手脚。
第 1 层:Play Integrity API(前身 SafetyNet)
SafetyNet Attestation 撑了将近十年,2024 年 Google 全面切到 Play Integrity API。银行 App 调 requestIntegrityToken(),Play Services 对当前设备状态哈希、用服务端 Google 密钥签名,返回一个 verdict 让 App 转发到后端。
关键的三个字段:
deviceIntegrity—— 粗判。MEETS_DEVICE_INTEGRITY、MEETS_BASIC_INTEGRITY、MEETS_STRONG_INTEGRITY,或者空。appIntegrity—— 调用方 App 是否来自 Play Store 且未被修改?accountDetails—— 调用账号是否有有效的 Play 授权?
Root 隐藏工具全部住在这一层。它们钩住 Play Integrity 服务,让响应写成「未 Root」。这一招能撑到 Google 推下一次 Play Services 更新为止 —— 通常是 4-8 周。
第 2 层:硬件绑定密钥证明
自 Android 8 起,每台现代手机都自带 TEE(可信执行环境),多数旗舰还带一颗物理隔离的 StrongBox。App 生成密钥时,可以要求把密钥绑定到这块安全元件。
OS 会签发一条证书链,证明:
- 密钥在真硅片里生成,不是软件。
- bootloader 上锁。
- system 分区未修改。
- 上次开机时 Verified Boot 通过。
证书链由 Google 根 CA 签名,使用的硬件绑定私钥没有任何软件够得到。Root 隐藏工具伪造不了这个。Bootloader 解过一次锁,StrongBox 证明就永远返回失败,堆什么工具都白搭。
第 3 层:Verified Boot 状态
开机时 bootloader 用烧在 SoC 出厂里的公钥核验 system 分区。结果暴露为 ro.boot.verifiedbootstate 和 ro.boot.flash.locked。
verifiedbootstate=green+flash.locked=1—— 官方 OS,完全核验。verifiedbootstate=yellow—— 用户签名的 OS,但 bootloader 仍上锁。verifiedbootstate=orange—— bootloader 已解锁。银行几乎一律拒绝。verifiedbootstate=red—— 核验失败。App 不会启动。
第 4 层:Build 属性交叉核验
银行 App 读 Build.FINGERPRINT、MANUFACTURER、MODEL、HARDWARE,跟 Play Integrity 结果一起送到后端。后端拿这些字段跟 Google 已知合规设备列表 diff(本质上就是 Android Vendor Test Suite 的兼容性数据库)。
假设 Play Integrity 被骗过了,但 build 字段仍然不对头 —— MODEL 说是「Pixel 8」但 SoC 报的是联发科 —— 交叉核验就炸了,会话被拒。
这也是为什么逐个字段伪造一定会被抓:你必须把整个 fingerprint 自洽地一起伪造。我们那篇云手机检测指南把关联逻辑讲清楚了。
第 5 层:Samsung Knox(及 OEM 对应物)
三星设备上还叠了一层 Knox 证明。三星自家的 TrustZone 实现,跟标准 Android TEE 独立,有自己的 API 和自己的 kill switch —— 所谓「Knox 熔断」,bootloader 一解锁就物理熔断。
熔断是单向的。熔了就是熔了,永久。Knox 证明从此永远返回失败,任何依赖 Knox 的 App —— Samsung Pay、几家银行、Samsung Health —— 都用不了。三星把这个当卖点做,叫「Knox Vault」;从反欺诈角度看,确实是卖点。
为什么 Root 隐藏工具永远在输
猫鼠游戏只发生在第 1 层。第 2 到第 5 层依赖硬件层面的密码学保证,任何纯软件方案都动不了。Magisk、Shamiko、LSPosed 之流能骗过随手的字符串检查。银行 App 一旦请求 StrongBox 证明,谎言一句话就崩掉。
更野的方案会用定制内核在加载用户签名 OS 之后重新上锁 bootloader。这能过第 3 层 —— 仍然过不了第 2 层,因为硬件绑定证明里包含 boot 镜像的度量值,Google 根 CA 不会给它不认识的镜像签发。
三条实操结论
- Root 就意味着告别 Samsung Pay、Google Pay、多数银行、Pokémon GO、以及多数 DRM 保护的流媒体。不是暂时的麻烦 —— 是架构层面的。
- 如果你买了台号称「Root 过」的二手机、银行 App 用不了,前任解锁过 bootloader。三星上验证:设置 → 关于手机 → Knox 保修状态。显示「1」或「已跳过」= 永久解锁,回不去了。
- 付款之前先跑一次交叉核验。我们的硬件可信度评分能抓被改过的 Build 字符串、SoC / GPU 不匹配的组合、常见 Root 迹象 —— 远早于你在 ATM 前按下「确认转账」。