Play Integrity Attestation Bypass (SafetyNet Replacement)
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
Play Integrity 的作用
Play Integrity 是 Google 的 SafetyNet 的继任者,用于 app attestation。应用调用 API,Google Play Services 收集软件/硬件信号,并将它们加密后发送到 googleapis.com,Google 返回一个由 Google 签名并加密 的 JWT。应用将该令牌转发到其后端,后端使用 Google 的公钥验证签名、解密负载,并根据判决字段执行策略:
appIntegrity:APK 构建/签名匹配(无重打包/篡改)。deviceIntegrity:真实且认证的设备,bootloader 锁定,无 root/系统篡改。accountDetails:通过 Google Play 安装。
常被强制检查的关键判决标志:
MEETS_BASIC_INTEGRITY:由真实 Play Services 生成的 token(非模拟器/未被篡改的传输)。MEETS_DEVICE_INTEGRITY:真实/认证设备,bootloader 锁定,无 root/系统篡改。MEETS_STRONG_INTEGRITY:需要DEVICE且 所有分区(OS + vendor)具有近期的安全补丁。
绕过模型
不是去伪造 Google 的 JWT,而是伪造 Google 所评估的信号,使它们对应另一个合法的设备配置。攻击链:
- 隐藏 root,使本地检查和 Play Services 探测看不到 Magisk/su。
- 用真实设备的 key attestation certificate chain (
keybox.xml) 替换,这样 Play Integrity 会认为设备已认证/bootloader 已锁定。 - 伪造 security patch level 以满足
MEETS_STRONG_INTEGRITY。
Google 的缓解措施是撤销被滥用的 keyboxes;当 keybox 被封禁时需要轮换。
前提与工具
- Root 隐藏: ReZygisk(或 ZygiskNext)。禁用 Zygisk,启用 Magisk Hide,安装模块,重启。
- Key attestation 伪造: TrickyStore + Tricky Addon(Magisk 模块)。
- UI 辅助: KSU Web UI 用于驱动 TrickyStore。
- 验证: Play Integrity API Checker 和 Key Attestation APK。
- 关于 attestation key 材料的可选背景阅读: https://tryigit.dev/android-keybox-attestation-analysis
达成 MEETS_BASIC_INTEGRITY + MEETS_DEVICE_INTEGRITY
- 安装模块并重启: 在 Magisk 中刷入 TrickyStore 和 Tricky Addon,重启。
- 配置 TrickyStore(通过 KSU Web UI): 选择
TrickyStore→Select All→Deselect Unnecessary→ Save。 - 注入有效 keybox: 在
Keybox中选择 Valid 以下载/应用新的keybox.xml(vendor attestation 凭证)。该文件支撑硬件 key attestation,现在被伪装为来自认证/锁定设备。 - 验证: 运行 Play Integrity API Checker →
MEETS_BASIC_INTEGRITY和MEETS_DEVICE_INTEGRITY应通过。在 Key Attestation 中,bootloader 会显示为 locked,因为 attestation 链已被替换。
达成 MEETS_STRONG_INTEGRITY(补丁级别伪造)
STRONG 会在补丁级别过旧时失败。TrickyStore 可以为所有分区伪造一个较新的 security patch 日期:
- 在 TrickyStore 中,选择 Set Security Patch → Get Security Patch Date → Save。
- 重新运行 Play Integrity API Checker;
MEETS_STRONG_INTEGRITY应该通过。
操作注意事项
- 撤销风险: 使用相同的
keybox.xml反复调用 API 可能会触发封禁。如果被封禁,替换为新的有效 keybox。 - 军备竞赛: 公开共享的 keybox 很快会被封;保留私有副本并关注社区模块更新(XDA/Telegram/GitHub)以获取新的可用链。
- 范围: 此绕过仅伪造 attestation 的输入;后端对签名的验证仍由 Google 成功通过,因为 JWT 本身是真实的。
References
- Play Integrity API: How It Works & How to Bypass It
- ReZygisk
- TrickyStore
- Tricky Addon
- KSU Web UI
- Play Integrity API Checker
- Key Attestation
- Android keybox attestation analysis
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。


