迅维网

查看: 1045|回复: 1

什么是SafetyNet?如何通过SafetyNet验证?

  [复制链接]
发表于 2023-3-30 19:36:30 | 显示全部楼层 |阅读模式 来自: 湖南 来自 湖南

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
之前在公众号的粉丝问答中,有人问到有关SafetyNet的相关问题,今天大概和大家说一下。
简单来说,如果你的设备没有通过谷歌GTS测试,也就意味它没有进行SafetyNet验证,直接导致的问题就是无法出厂预装GMS;后期,即使用户后期自己手动安装了GMS,但是仍然无法下载一些应用。比如Netflix、一些游戏、应用等。它们会告诉你,您的设备与此版本不兼容
v2-c31e37aeb9e7828e797cfe8b55024b7f_720w.jpg
据谷歌 Android 开发者官方网站上的官方文档描述,SafetyNet 全名为:SafetyNet Attestation API ,它是一种反滥用 API,让应用开发者能够评估运行其应用的 Android 设备。该 API 应该用作滥用检测系统的一部分,以帮助确定您的服务器是否与在真实 Android 设备上运行的真实应用互动。[1]

SafetyNet Attestation API 提供采用加密签名的证明,用于评估设备的完整性。为了创建证明,该 API 会检查设备的软件和硬件环境,以查找是否存在完整性问题,并将相应数据与已获批 Android 设备的参考数据进行比较。生成的证明会绑定到调用方应用提供的 Nonce。该证明还包含生成时间戳以及发起请求的应用的元数据。[1]
SafetyNet Attestation API 使用以下工作流程[1]:
(1)SafetyNet Attestation API 收到您的应用发起的调用。该调用包含一个 Nonce。
(2)SafetyNet Attestation 服务评估运行时环境,并向 Google 的服务器请求已签名的评估结果证明。
(3)Google 的服务器将已签名的证明发送给设备上的 SafetyNet Attestation 服务。
(4)SafetyNet Attestation 服务将此已签名的证明返回给您的应用。
(5)您的应用将已签名的此证明转发给您的服务器。
(6)服务器会验证响应,并将其用于反滥用决策。您的服务器会向您的应用传达其发现的结果。

此流程的图形描述如图 1 所示:
v2-ed7875c6ce6bf4cb8324e6baef1517f9_720w.jpg
对于国内这些OEM厂商来说,要想预装谷歌服务,必须通过谷歌的GTS验证。
v2-f6c73572db4eb79a7b4c20fa5f55ab10_720w.jpg
通过验证之后的手机硬件信息会记录在Google的服务器当中,用户购买新机之后,在如果安装了谷歌框架, 在Google Play Store的Play保护机制认证设置当中,就可以看到「该设备已通过认证」的显示。
v2-bef208ad2fd88cced2f5dfad00ad6311_720w.jpg
这些情况下,你的设备将无法通过SafetyNet验证检查
(1)你的手机在出厂时并未通过谷歌的GTS验证(2)你的手机通过了谷歌GTS验证,但是你解除了BootLoader锁(3)开启了root(4)刷入了非官方ROM(5)其他一些情况(Xposed、太极等)
那么如何知道自己的设备是否通过SafetyNet验证呢?有一种方法如下:(1)安装并打开「Magisk Manager」软件(2)点击 「点按启动SafetyNet检查」 右边的刷新按钮
v2-fd60934636b75dc5efebb982c99da849_720w.jpg
(3)等待检查完成;注:检测过程可能需要科学上网工具检测完成之后,下方会有两个参数,分别是「 cstProfile」和「basicIntegrity」,只有当二者均为「true」的时候,才意味着你的设备正常通过了SafetyNet验证。
v2-99b59ab5eb0d812e70534dfb961389e2_720w.jpg
对于玩机爱好者来说,解锁和root是必须的;但同时也希望保留SafetyNet通过验证,可以正常安装和使用一些软件和服务。那么,有没有两全其美的办法呢?
在完成上述的检测操作之后,会有两种可能的情况。[2]情况1:cstProfile 显示为 false,basicIntegrity 显示为 true。
v2-3de6674fc9786328ba272e2fdcd12fcf_720w.jpg
这种情况下,可以通过刷入Magisk模块「MagiskHide Props Config」,来解决问题,使得cstProfile 显示为 true。(注:如果不生效,建议安装一下BusyBox Magisk 模块,在Magisk里面同样搜索即可)
v2-83debeb8ba6063e3726deaf8e4bb2123_720w.jpg
情况2:cstProfile 显示为 false,basicIntegrity 显示为 false。
v2-d0841aba3c5c55620c7bb794a2e9f2fd_720w.jpg
这种情况下,一般是ROM固件的问题。如果想要使其显示为 true,可以先尝试「开启Magisk核心功能模式」,或者「卸载掉所有的模块」;如果仍然是 false,那么就需要更换你的ROM固件了。需要注意的是,小米的一些机型可能会出现开发版固件无法通过SafetyNet验证的情况,因此建议换稳定版固件。
当cstProfile 和 basicIntegrity 二者均显示为 true的时候,就可以将谷歌服务框架的相关应用(包括Google Play Store、Google Play 服务等)添加到「Magisk Hide」当中。这样,就可以骗过Google Play Store,从而正常的下载一些需要验证SafetyNet的应用了。
v2-8a83685222f9d3aeee8ed8cab8c6ef7e_720w.jpg
而随着谷歌不断加强安卓系统服务的整体安全性,Magisk框架的作者表示,其无法在最新版本的Google Play服务上通过任何类型的SafetyNet(包括basicIntegrity )。尽管低版本的Google Play服务目前仍然可用,但是在将来,其最终还是会被替代。到了那时候,可能通过SafetyNet验证就困难得多,甚至根本无法通过了。
v2-14193c4451f191864cca13d40645e498_720w.jpg
[1] 引用自谷歌 Android Develoer,Android 开发官方文档,SafetyNet Attestation API ,https://developer.android.com/training/safetynet/attestation?hl=zh-cn
[2] 引用自少数派,路中南,Magisk Manager详解,https://sspai.com/post/53809


v2-f3903199ed8057c5aec17122aec4acb6_720w.jpg

发表于 2023-3-30 19:38:05 | 显示全部楼层 来自: 湖南 来自 湖南
面具root后如何解决SafetyNet不通过-SafetyNet API错误解决办法

本文只针对需要SafetyNet的小伙伴们,如果你不懂SafetyNet或者不会玩谷歌相关内容

可不需要进行学习操作。SafetyNet是否通过都和面具root权限无关,仅部分谷歌相关内

容依赖SafetyNet通过。下面ROM乐园就教大家正确的通过SafetyNet验证


首先你的系统必须有谷歌套件,你需要知道自己为什么要SafetyNet通过,并且你的系统

已经刷好面具root。需要模块下载:微信公众号:ROM乐园 回复关键字:SafetyNet


步骤1:面具里面打开Magisk hide功能,将play服务勾选进入Hide模式

05589c4578ac4d81a7b7fa402eacf290.jpg

步骤2:然后时候面具模块功能,手动刷入SafetyNet验证模块,模块功能我们选择本地安

装,完成后重启手机,开机后在模块按钮检查是否刷入成功

47fd89449c474ff59fdc68f853b54237.jpg

步骤3:回到到应用管理,把play商店和服务都清楚全部数据,然后等待play更新。最后

检查SafetyNet,发现成功通过验证

d2ba44caa4084409860e1792f2ba16d4.jpg

注意点:Play更新联网等,我们需要自行想办法连接外网,更新之前必须情况手机全部数

据,才能成功。如小米红米MIUI机型,还需要单独刷1个CTSPASS模块才会成功。以上教程

仅分享给需要的用户,正常root用户无需研究SafetyNet验证



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长提醒 上一条 /1 下一条

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图


芯片搜索

快速回复