必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法

必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法

作者

梓沐啊_(KylinDemons)

版权声明

Copyright © 2021 KylinDemons. All rights reserved.

本文将在CSDN由作者KylinDemons、在酷安由@梓沐啊_、在QQ空间由1240193326授权发布

未经许可,不得转载

免责声明

本教程仅适用于学习研究用途。您的设备因本文出现的任何结果作者概不负责。请您注意数据备份并具有修复系统崩溃无法开机的能力。作者并不能保证该教程对于每个设备完全有效,该教程也具有时效性,请关注作者后期更新版本,恕不通知。作者提供的软件及工具均来自互联网,不对其版权及安全性等问题负责。

写在前面

您需要明白一点,通过SafetyNet校验只有对出厂预装有GMS套件的设备才比较有意义。本教程的适用对象是那些本来有能力通过SafetyNet的设备,由于刷写了第三方ROM*(例如本文的实例:红米K30S的MIUI稳定版SafetyNet校验能通过,开发版却无法通过)*或者操作不当等原因造成的无法通过校验问题。对于那些在仅中国大陆发行且未预装GMS套件的设备来讲,本教程并不适用,不过您可以尝试刷写海外版固件等预装有GMS套件的ROM后尝试本教程。需要注意的是,对于没有第三方预装有GMS套件的ROM来说,您当然也可以尝试手动刷写GMS套件,但是您需要通过Magisk模块来更改您的手机型号才有可能通过SafetyNet校验。

教程整个过程看似简单,但由于干扰因素太多,达到最终效果可能会很麻烦。如果您不清楚通过SafetyNet 校验的意义与重要性,或者用不到,可以查询后决定自己的需求,如果SafetyNet 对您无所谓,您可以浏览此文作为消遣;如果您需求很大,还请您耐心阅读耐心操作。

教程原理

首先您应该明白,MIUI开发版由于一天一更新或者一周一更新的特性,就决定了它无法通过SafetyNet 校验(Google Play商店的设置中的“Play保护机制认证”显示为:设备未通过验证)。

这是因为 SafetyNet 校验需要两个条件满足才能通过:第一是要确保系统文件的完整性,不能被篡改,这一点既是关键又是前提*(这里的“系统文件”可能不单单指System 分区中的文件,最近我发现,有些设备的校验好像比较严格,相同操作条件下,使用了第三方Recovery 就无法通过校验,此时System 分区并没有解锁,并没有修改)*,第二是要通过CTS(Compatibility Test Suite 兼容测试)认证,其过程可以简单理解为设备的系统指纹(fingerprint)信息必须提交给Google方面审核,Google审核通过后他们的服务器才会添加上这个设备的系统指纹信息。设备在进行SafetyNet 校验时会对比此时设备的系统指纹信息与Google 认证服务器上所存储的信息是否一致,如果一致则可以通过CTS认证,反之则不能通过。MIUI开发版更新迭代太快,系统指纹一天一变,根本来不及送给Google认证,所以Google认证服务器没有开发版的系统指纹信息,导致CTS认证不通过,是其SafetyNet不通过的根本原因。其他设备的ROM也是如此,如果开发者/OEM厂商因为某些原因(高昂的认证测试授权费等)未将设备的新系统相关信息提交给Google方面审核认证,CTS认证就无法通过。这也就是部分第三方ROM一直采用设备原固件系统指纹的原因,利于通过CTS认证。

图示部分为该设备原有指纹信息
图示部分为更改后的设备指纹

手机还没解锁的条件下,MIUI开发版的SafetyNet极可能也是不通过的,通过Magisk Manager进行检查的伙伴们可能会发现,虽然校验不通过,但是basicIntegrity这个选项是对号,代表着通过;而ctsProfile不通过(如下图所示:这是本教程方法施行前您设备SafetyNet状态的要求,达不到这个要求无法继续教程),正好符合以上说法。这代表系统文件是完整的,现在只差通过一定的手段使ctsProfile通过认证即可。
在这里插入图片描述

如何检查SafetyNet校验状态

有以下3种方式:(由于本教程需要用到Magisk,故推荐第一种)

  1. Magisk Manager中自带SafetyNet状态检查
    在这里插入图片描述
    在这里插入图片描述

  2. 利用Google Play商店设置中的“Play保护机制认证”(只能说明是否通过,无法查看详细信息,不推荐)
    在这里插入图片描述

  3. 利用第三方软件
    在这里插入图片描述

准备条件

  1. 手机必须已解锁BootLoader(如果不想解锁,很抱歉,您只能使用MIUI稳定版等自带GMS套件的设备官方固件来满足SafetyNet 校验通过的需求)。

  2. 必须有能访问Google 的网络。

  3. 设备安装有Magisk v20.4+

  4. 目前支持Android 8~11

注意事项

  1. 请您务必事先进行一次SafetyNet 校验,明白自己的设备系统文件完整性处于什么样的状态:如果basicIntegrity校验不通过,您暂时没必要继续阅读下去,请务必确保系统文件的完整性,否则下面的步骤全部没有意义。笔者的设备是在MIUI开发版的基础上解锁了BootLoader,仅仅通过Magisk Manager中的“选择修补一个文件”方式安装了Magisk,其他任何系统文件都没有进行过修改(没有刷写第三方Recovery ,没有解锁System 分区,仅仅修改了Boot分区)。

  2. 必须启用“Magisk Hide”功能并重启手机。

  3. 如果您在进行一定修复系统文件完整性的操作(重刷系统完整包、切换Magisk安装方式、恢复官方Recovery等 )后依然无法通过basicIntegrity校验,请尝试线刷回稳定版MIUI等系统官方固件,正常开机后重新上锁BootLoader,通过系统更新中的切换版本切换为开发版后再次解锁BootLoader,然后提取系统完整安装包中的boot.img镜像到手机内部存储,安装Magisk Manager,利用Magisk Manager 修补刚刚提取的boot.img镜像得到修补后的文件magisk_patched.img文件,拷贝到电脑用Fastboot工具刷入到Boot分区,重启手机后打开Magisk Manager进行SafetyNet校验查看basicIntegrity是否能通过,期间不能执行其他直接修改系统的操作(安装Magisk模块除外)。只有出现以下SafetyNet校验结果时按照教程来操作才可能成功。

在这里插入图片描述

  1. 使用第三方官改ROM的伙伴请注意,由于官改ROM的系统文件通常被修改,且System 分区被解锁,SafetyNet中的basicIntegrity校验几乎不可能通过,所以以下内容并不适用。实际上,绝大多数官改ROM是无法通过SafetyNet 校验的。请您做出使用官改ROM和通过SafetyNet校验之间的取舍。

  2. 请确保设备的SELinux状态为Enforcing(强制模式),如果状态为Permissive(宽容模式),则很可能无法通过SaafetyNet校验。但是若您的设备在更改SELinux模式时遇到困难,请尝试更换ROM。

  3. 建议在执行本教程步骤时没有安装其他Magisk模块(若有可全部停用),避免发生冲突和出现其他问题。

  4. Xposed框架用户请注意,原生Xposed框架(即使是通过Magisk安装的)将无法通过SafetyNet校验,而EdXposed用户需要进行设置,开启“白名单模式”,开启“强制通过SafetyNet”。强烈推荐使用最近发布的LSPosed框架,兼容性与效率很高,同时无需设置即可通过SafetyNet校验。

  5. 请注意,在有些设备上通过第三方Recovery(例如TWRP)卡刷方式安装的Magisk并不能通过SafetyNet校验,强烈推荐使用Magisk Manager自带的“选择并修补一个文件”的方式来安装Magisk。

在这里插入图片描述

  1. 如果您使用旧版本Magisk Manager在主界面并未出现“检查SafetyNet的选项”或者新版本出现以下如图所示的校验情况(evalType类型为N/A),请查看您的手机是否冻结/停用了Google基础服务组件,恢复/启用后检查您的Google网络访问连通性后再试,也有可能是Google服务器拒绝了您的校验请求,这并不能说明系统文件不完整。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 如果您的ROM在进行任何系统完整性修复的操作后始终无法通过basicIntegrity校验,说明您的ROM可能存在自身设计不规范或者缺陷,请与您使用同样设备的伙伴进行经验交流获取帮助或者联系ROM开发者。也可以访问https://www.didgeridoohan.com/magisk/MagiskHideSafetyNet尝试获取更多解决方案。

所需工具

(以下工具强烈建议通过官方地址下载来获取最新版本,以提升兼容性与稳定性)

  1. MagiskHide Props Config模块

官方地址:https://forum.xda-developers.com/t/module-magiskhide-props-config-safetynet-prop-edits-and-more-v5-4-0.3789228

  1. Universal SafetyNet Fix模块

官方地址:https://github.com/kdrag0n/safetynet-fix

  1. DevCheck(可选,用来检测系统指纹是否发生改变)

Play商店地址:https://play.google.com/store/apps/details?id=flar2.devcheck&hl=zh&gl=US

  1. Android终端模拟器(任选一款即可)

  2. SafetyNet第三方检测工具(可选):SafetyNet Test

Play商店地址:https://play.google.com/store/apps/details?id=org.freeandroidtools.safetynettest&hl=zh&gl=US

以上工具截止笔者完成此教程时的最新版本放在一起了,方便伙伴们高速下载

地址:https://kylindemons.lanzous.com/b03hiylaj 密码:1234

若网址失效请私信笔者补发

过程步骤

  1. 在Magisk Manager中安装Universal SafetyNet Fix模块后重启手机,检查SafetyNet校验是否通过,如果仍然未通过执行步骤2。

  2. 在Magisk Manager中安装MagiskHide Props Config模块后重启手机。

  3. 安装“终端模拟器”并运行。

  4. 英文输入状态下输入su并回车,授予ROOT权限。

  5. 成功获取超级用户#权限后,输入props并回车,等待出现以下界面:
    在这里插入图片描述

  6. 输入数字1并回车,进入编辑设备指纹界面:

在这里插入图片描述

  1. 此时可以看到当前的设备指纹,在这里显然是MIUI开发版指纹的特点,包含了MIUI版本号。输入1以选择一个被认证的指纹。

  2. 在下面的界面里,请根据自己的设备制造商和型号进行选择。请注意:如果通过这两个列表找不到您的设备,这证明您的设备厂商未将其在Google进行过CTS认证,那么很抱歉,此时您不能很好地利用此教程通过SafetyNet校验,除非您通过Magisk模块修改自己的设备型号来进行伪装并在这两个列表选择相同品牌相似型号的机型进行尝试。

在这里插入图片描述
在这里插入图片描述

  1. 成功更改后连续键入两次y并回车来重启设备完成操作。

  2. 重启后,可利用DevCheck来检查设备指纹是否发生改变,并进行SafetyNet校验,不出意外,您将完美通过校验。

后续注意

  1. 即使通过SafetyNet校验,部分应用仍然在Google Play商店不可安装显示不兼容或者搜索不到,这是正常现象,首先请清除Play商店的应用数据,重启设备后打开Play商店查看“Play保护机制认证”是否为“已通过认证”(可能有时候找不到这个选项,这时请多重启几次手机并稍后再试),若已通过认证后仍然出现上述现象,可能意味着对于这些应用Google尚未在您的设备上进行兼容性测试,但并不代表不能用,解决方式是通过第三方应用商店(例如APKMirror、Apkpure、Aptoide等)获取安装。

在这里插入图片描述

  1. 在您利用本教程方法通过SafetyNet校验后,您不能卸载这两个模块,不能开启Magisk核心功能模式,不能卸载Magisk,不能解锁System分区和修改任何系统文件,否则可能会失效。

  2. 由于此教程会更改设备指纹,可能会影响极少部分软件的使用,请注意。

  3. 后期系统OTA升级不会受影响,但您一定要注意升级时保护Magisk的存在,不能丢失安装。

  4. 某些软件的安全环境检测机制过于复杂,可能在通过SafetyNet校验后仍然报为不安全而无法使用,这时候请善于利用MagiskHide等功能加强防检测。

  • 18
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KylinDemons.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值