Android Root Atlas/教程库/Play Integrity / SafetyNet

检测绕过与隐藏 / Play Integrity / SafetyNet

Play Integrity 不等于 Root Checker:读 verdict 并定位失败层

区分本地检测、Play 认证与服务端完整性判定,建立证据表,并选择更新、恢复官方系统或停止的合规修复。

本篇完成任务

区分五类完整性信号,定位失败层,并形成可验证的官方修复或停止结论。

本教程不教“过检测”,而是解释为什么一个 App 拒绝运行。你会把 Play 许可、应用识别、设备完整性、Play Protect certification 与本地 Root 检测分开记录,并决定是更新组件、恢复厂商签名系统,还是接受该解锁设备不满足服务策略。

你会完成什么#

  • 正确读取 MEETS_BASIC_INTEGRITYMEETS_DEVICE_INTEGRITYMEETS_STRONG_INTEGRITY 与空结果。
  • 区分 App → Play Integrity → token → App 后端的责任边界。
  • 用官方入口收集认证、构建、补丁、boot 状态与安装来源证据。
  • 不使用 keybox/指纹投喂,给出恢复官方状态或使用未修改设备的结论。

先看结论#

信号它说明什么它不说明什么
本地 Root detector看见文件、包、属性、mount、进程等线索不是 Google attestation,也不能 100% 判定
Play Protect certification设备/构建是否通过 Google 认证登记不是恶意软件扫描开关,也不等于目标 App 放行
BASIC较低保证的基础环境信号不保证 Bootloader 锁定或厂商镜像
DEVICEAndroid 13+ 通常需要硬件证据表明锁定且为认证厂商镜像不代表任何 App 必须接受它
STRONGDEVICE 之外还要求较新的 OS/vendor 安全更新不是所有 App 默认请求的固定“第三关”
空 verdict该标签未满足或请求/环境有问题不能单凭空值断言“就是 Root”

心智模型#

App → Play Integrity API → 加密 token → App 后端验证 → 业务策略
 │          │                   │              │
请求参数   Google 信号      防重放/账号/应用      放行、降级或拒绝
本地 detector ── 另一条客户端信号,不等于上述服务端链路

SafetyNet Attestation 已在 2022 年 deprecated,并于 2025 年 1 月完全关闭;2026 年继续“测试 SafetyNet”没有当前诊断价值。默认 deviceRecognitionVerdict 主要围绕 DEVICE 或空,BASIC 与 STRONG 是开发者可选择接收的附加标签,不应简化为所有 App 必过的三道关。

工具清单#

工具角色什么时候用来源与注意
Play Store 认证页面查 Play Protect certification普通用户第一步和 Play Protect 扫描是不同功能
Play Console test responses开发者测试 verdict 分支自有 App 后端使用分级响应和 remediation dialog
系统/fastboot 只读信息查 build、SPL、lock state归因设备层属性截图不能替代硬件 attestation
开源本地 detector对照本地信号自有测试机checker 结果不等于目标服务后端

项目全景:Play Integrity / SafetyNet的 7 个项目,一个不漏#

七个项目按“先测量、再理解、后评估修复”组织:检测器给出信号,教程解释 SafetyNet 到 Play Integrity 的变化,修复栈只在合规测试机上评估;历史 SuperSU 签名规避单独标为旧机制。

技术路线项目数处理等级在主题任务中的位置
检测器与基线诊断2参考/审计先用 kknd_Root_Detector 与 SecurityKit 一类项目区分本地 Root、模拟器、调试和篡改信号。它们不是 Google Play Integrity 裁决本身,结果只用于建立基线。
完整性修复与隐藏组合栈2参考/审计比较 specter 与 Play-IntegrityFix 等组合栈包含的 Zygisk、属性、证书/Keybox 和自动化层。文章只讲组成、依赖与失败隔离,不分发私钥或承诺 STRONG。
SafetyNet/Play Integrity 教程与政策脉络2参考/审计用两个指南项目解释 DenyList、旧 SafetyNet 术语与银行 App 场景,并要求用当前 Google 文档校正过时内容。教程仓库是经验来源,不是官方政策。
旧式签名检测与 SuperSU 规避1参考/审计把 supersu-patcher 作为历史案例:重命名二进制可绕过简单签名扫描,但不代表通过现代硬件证明。仅讲演进关系和防守测试价值。

1. 检测器与基线诊断 · 2#

先用 kknd_Root_Detector 与 SecurityKit 一类项目区分本地 Root、模拟器、调试和篡改信号。它们不是 Google Play Integrity 裁决本身,结果只用于建立基线。

本组共 2 项:2 个源项目、0 个 Fork,其中 0 项已归档。它们用于对照、诊断或审计,不组成可批量安装的推荐清单。

项目上游定位与识别信号状态与采用前检查
juanma0511/kknd_Root_Detector主题用途:将 juanma0511/kknd_Root_Detector 放在「检测器与基线诊断」中作对照或审计参考,使用 Kotlin 判断它与当前任务的边界。 上游自述(保留原文):A tool to detect root on Android.未归档源项目 · ★ 69 · MIT · 2026-07-14。参考条目:用于防御性观测、概念对照或实验室审计;不是可直接照搬的安装方案。
mirajabi/SecurityKit-Android主题用途:将 mirajabi/SecurityKit-Android 放在「检测器与基线诊断」中作对照或审计参考,使用 Kotlin 判断它与当前任务的边界。 上游自述(保留原文):AndroShield – A comprehensive Android security toolkit for detecting root, emulator, tampering, debugging, VPN, MITM, and more. Fully configurable with modern architecture and runtime protections.未归档源项目 · ★ 7 · MIT · 2025-09-18。参考条目:用于防御性观测、概念对照或实验室审计;不是可直接照搬的安装方案。

2. 完整性修复与隐藏组合栈 · 2#

比较 specter 与 Play-IntegrityFix 等组合栈包含的 Zygisk、属性、证书/Keybox 和自动化层。文章只讲组成、依赖与失败隔离,不分发私钥或承诺 STRONG。

本组共 2 项:2 个源项目、0 个 Fork,其中 0 项已归档。它们用于对照、诊断或审计,不组成可批量安装的推荐清单。

项目上游定位与识别信号状态与采用前检查
dpejoh/specter主题用途:将 dpejoh/specter 放在「完整性修复与隐藏组合栈」中作对照或审计参考,使用 TypeScript 判断它与当前任务的边界。 上游自述(保留原文):Unified Play Integrity and root hiding stack for Android未归档源项目 · ★ 428 · GPL-3.0 · 2026-07-17。参考条目:用于防御性观测、概念对照或实验室审计;不是可直接照搬的安装方案。
FBIVIP/Play-IntegrityFix主题用途:将 FBIVIP/Play-IntegrityFix 放在「完整性修复与隐藏组合栈」中作对照或审计参考,使用 仓库名、README 与发布记录 判断它与当前任务的边界。 上游自述(保留原文):Bypass Play Integrity & SafetyNet on Android 10–16 with Keybox, Zygisk & full automation by Root Phantom Fateh.未归档源项目 · ★ 249 · 协议未声明 · 2026-06-03。参考条目:用于防御性观测、概念对照或实验室审计;不是可直接照搬的安装方案。

3. SafetyNet/Play Integrity 教程与政策脉络 · 2#

用两个指南项目解释 DenyList、旧 SafetyNet 术语与银行 App 场景,并要求用当前 Google 文档校正过时内容。教程仓库是经验来源,不是官方政策。

本组共 2 项:2 个源项目、0 个 Fork,其中 0 项已归档。它们用于对照、诊断或审计,不组成可批量安装的推荐清单。

项目上游定位与识别信号状态与采用前检查
K3V1991/Passing-SafetyNet-with-Magisk-Zygisk-and-DenyList主题用途:将 K3V1991/Passing-SafetyNet-with-Magisk-Zygisk-and-DenyList 放在「SafetyNet/Play Integrity 教程与政策脉络」中作对照或审计参考,使用 android · certification · checker 判断它与当前任务的边界。 上游自述(保留原文):Passing SafetyNet with Magisk's Zygisk and DenyList未归档源项目 · ★ 135 · 协议未声明 · 2024-04-12。参考条目:用于防御性观测、概念对照或实验室审计;不是可直接照搬的安装方案。
SunshineYou-Enigma/-Detailed-Guide-Play-Integrity-FIX-Use-Banking-Apps-on-Rooted-Android-主题用途:将 SunshineYou-Enigma/-Detailed-Guide-Play-Integrity-FIX-Use-Banking-Apps-on-Rooted-Android- 放在「SafetyNet/Play Integrity 教程与政策脉络」中作对照或审计参考,使用 仓库名、README 与发布记录 判断它与当前任务的边界。 上游自述(保留原文):未提供仓库简介未归档源项目 · ★ 45 · NOASSERTION · 2025-11-23。参考条目:用于防御性观测、概念对照或实验室审计;不是可直接照搬的安装方案。

4. 旧式签名检测与 SuperSU 规避 · 1#

把 supersu-patcher 作为历史案例:重命名二进制可绕过简单签名扫描,但不代表通过现代硬件证明。仅讲演进关系和防守测试价值。

本组共 1 项:1 个源项目、0 个 Fork,其中 0 项已归档。它们用于对照、诊断或审计,不组成可批量安装的推荐清单。

项目上游定位与识别信号状态与采用前检查
arbitraryrw/supersu-patcher主题用途:将 arbitraryrw/supersu-patcher 放在「旧式签名检测与 SuperSU 规避」中作对照或审计参考,使用 android · bypass · mobile · Python 判断它与当前任务的边界。 上游自述(保留原文):Patches the popular rooting framework SuperSU to evade common root detections. This is done by renaming binaries / references to break signature based checks.未归档源项目 · ★ 49 · GPL-3.0 · 2021-07-24。参考条目:用于防御性观测、概念对照或实验室审计;不是可直接照搬的安装方案。

开始前#

只使用自有测试 App、测试账号和无支付/2FA/公司资料的备用机。记录 exact model/build/fingerprint、Android 版本、SPL、bootloader 状态、ROM 来源、Play Store/Play services 版本、App 包名/安装来源和错误发生时间。开发者还要保存 requestHash/nonce 设计、后端解密日志和 Play Console 配置,但不要记录完整 token 到公开 issue。

以下语义按 Google 官方资料于 2026-08-09 核验。Android 13+ 的 DEVICE 与 STRONG 要求和较老 Android 不完全相同,且 App 后端可按自身风险选择哪些标签、频率与响应;checker 一次绿色不能推断长期兼容。

操作步骤#

1. 先区分错误属于哪一层#

记录错误原文、网络状态、App 来源和账号状态。检查 Play Store → 设置 → 关于 → Play Protect certification;再确认 App 是官方渠道安装、Play Store/Play services/系统均已更新。若只有一个 App 失败而同设备其他官方服务正常,先考虑 App 许可、签名或服务端策略,不先归因 Root。

2. 读取 verdict,而不是只看红绿灯#

开发者用 Play Console test responses 与后端日志分别触发 app integrity、account/licensing、device recognition 和 environment 分支;普通用户只能把可信 checker 当辅助截图。将返回标签、空值、时间、build 与网络记在同一行,不把 BASIC/DEVICE/STRONG 当固定等级条。

3. 按官方顺序修复可修复项#

更新系统、Play Store 和 Play services,清除明显的网络/时间问题,从 Play 官方渠道重装 App,并按 Google 的认证排错入口处理未认证设备。若 ROM/bootloader 是原因,先获取 exact-build 厂商完整包,恢复全部被修改分区并成功启动,只有确认全为厂商签名后才考虑重锁。

4. 形成可审计结论#

复测同一请求三次,记录变化。结论应写成“App recognition 修复”“Play certification 仍失败”“解锁状态无法满足 DEVICE”“STRONG 因更新时效不满足”或“服务端策略未知”,而不是“Root 隐藏失败”。开发者应采用分级功能、可恢复对话框和人工支持,不把一个客户端布尔值变成永久封禁。

验证#

证据验收方式
App/许可官方安装、包签名/版本和账号测试结果修复后 app recognition/licensing 分支变化
Play 环境certification、Play 组件版本、网络/时间官方页面显示一致且可重复
Devicebuild、SPL、lock/ROM 与返回标签结论与 Google 当前语义一致
服务策略后端实际响应与 remediation不以 checker 截图代替生产后端

若普通用户无法看到后端 token,只能给出“证据支持/不支持某原因”的诊断,而不是伪造确定性。恢复官方状态后仍失败,应联系服务支持并提供脱敏的构建与错误信息。

排错#

现象常见原因安全处理
certification 显示未认证非认证 ROM、组件/账号异常或厂商登记问题按 Google 支持页更新/恢复并联系厂商
verdict 为空请求配置、网络、安装来源、重放或设备层分层查看后端错误,不直接归因 Root
BASIC 有而 DEVICE 无解锁、未验证或非认证镜像等低保证环境目标服务需要 DEVICE 时使用锁定官方设备
DEVICE 有而 STRONG 无SPL/关键分区更新时效或配置更新官方系统;不投喂第三方证书
checker 通过但 App 拒绝App 后端还有账户、签名、风控或本地检测以目标服务支持渠道为准,不承诺绕过

完成清单#

  • 已注明 2026-08-09 核验日期,并知道 SafetyNet Attestation 已关闭。
  • 已分开记录本地检测、Play certification、app/account/device/environment 信号。
  • 已保存 exact build、SPL、boot 状态、Play 组件与安装来源。
  • 已按官方更新、认证与厂商恢复顺序排查。
  • 未下载或分享 keybox、私钥、证书、指纹或使用真实金融账号实验。
  • 结论写明证据层与未知项,没有承诺一次通过永久有效。

一手资料#