Play Integrity Fix:Root设备Play认证修复模块 Play Integrity FixRoot设备Play认证修复模块【免费下载链接】PlayIntegrityFixFix Play Integrity (and SafetyNet) verdicts.项目地址: https://gitcode.com/GitHub_Trending/pl/PlayIntegrityFixPlay Integrity Fix 是一个 Zygisk 类型的 Magisk 模块。它让 Root 设备上的 Play Integrity API 返回已认证 verdict使银行、支付类应用可以正常启动。仅面向已开启 Zygisk 的 Android 8.0 Root 设备非 Root 设备不需要。使用后的实际变化绕过 Play Integrity 验证在用户层面的变化集中在三处按安装前后对照安装前Play Integrity API Checker 返回 MEETS_NONE 或 MEETS_BASICmeetsDeviceIntegrity为 false银行、支付应用检测到 Root 环境后拒绝启动或仅提供受限功能Play 商店提示设备未获认证部分功能不可用安装并重启后默认配置Android 12 及以下Checker 返回 MEETS_STRONGBASIC / DEVICE / STRONG INTEGRITY 三个布尔值均为 true原先拒绝启动的应用可以正常打开该模块同时保留 SafetyNet verdict 修复Android 13 的判定路径已改变需配合 TrickyStore 才能达到 MEETS_DEVICE详见后文版本兼容一节一次验证请求的完整路径上述变化的本质是 Android Root 认证修复模块只作用于一个 GMS 进程拦截发生在应用感知之前的进程启动阶段。下面跟着一次 Play Integrity API 请求的拦截流程走一遍。进程分叉拦截。应用发起的请求由 Google Play 服务的com.google.android.gms.unstable进程统一处理。该进程分叉时触发 ZygiskpreAppSpecialize钩子逻辑在 main.cpp。模块只对这个进程继续处理其他任何应用会直接卸载模块库后续修改不会影响它们。属性层替换。postAppSpecialize阶段pif.json 中的字段经 JNI 写入android.os.Build类的静态字段fingerprint、型号、安全补丁等同时用 Dobby 钩住__system_property_read_callback函数进程读取*.security_patch、*.build.id、api_level等属性时返回配置值USB/ADB 状态init.svc.adbd、sys.usb.state则报告为未连接。效果相当于该进程读取硬件信息时看的是另一套配置好的视图。KeyStore 层注入。内置 dex 注入进程把 AndroidKeyStore Provider 换成包装实现CustomKeyStoreSpi.java。包装层把所有方法转发给原始 SPI只在调用栈出现 DroidGuard 时抛出异常拦截证书链查询避免暴露修改痕迹。若 ROM 使用测试密钥签名android包的签名也会一并替换spoofSignature基于 otacerts.zip 检测自动开启。服务端响应。GMS 最终发出的请求携带替换后的指纹、安全补丁与证书信息服务端校验无法将其与真实认证设备区分返回 MEETS_DEVICE 或 MEETS_STRONG。模块在第 1 步还会检测 TrickyStore 是否安装。若已安装自动关闭自身的 KeyStore 注入与属性替换相应职责交给 TrickyStore两者不互相干扰。安装与最小配置前提Android 8.0Zygisk 已启用Magisk 内置 Zygisk 或 ZygiskNext / ReZygisk不支持在 recovery 模式安装。克隆仓库git clone https://gitcode.com/GitHub_Trending/pl/PlayIntegrityFix.git构建模块cd PlayIntegrityFix ./gradlew assembleRelease完成后在out/目录生成模块 zip构建会编译 classes.dex 与 zygisk .so 并拷入 module 目录在 Magisk或 KernelSU / APatch应用中选择从存储安装选中 out 目录中的 zip重启设备确认生效配置cat /data/adb/modules/playintegrityfix/pif.json重新拉取最新 Pixel Beta 指纹可选需联网sh /data/adb/modules/playintegrityfix/action.sh需要固定设备画像时把自定义 JSON 写入 /data/adb/pif.json可选加载优先级最高pif.json字段说明模块默认配置module/pif.json{ FINGERPRINT: google/oriole_beta/oriole:16/BP22.250325.012/13467521:user/release-keys, MANUFACTURER: Google, MODEL: Pixel 6, SECURITY_PATCH: 2025-04-05 }FINGERPRINT完整设备指纹模块自动拆分为 BRAND、PRODUCT、DEVICE、RELEASE、ID、INCREMENTAL、TYPE、TAGS 八个子字段后覆盖 Build 类MANUFACTURER / MODEL厂商与型号写入 Build 对应字段SECURITY_PATCH安全补丁级别服务端以此判断设备补丁是否够新可选开关spoofProvider、spoofProps、spoofSignature可分别关闭各层注入DEVICE_INITIAL_SDK_INT指定设备初始 API 级别DEBUG打开日志版本兼容与参数适配Android 版本是否需要额外模块关键参数与说明8.0 – 12否默认配置即可Google 保留 legacy 检查STRONG INTEGRITY 判定仍有效13 – 15需要 TrickyStore提供有效 keyboxlegacy 检查已移除DEVICE verdict 取代原 STRONGTrickyStore 安装后 PIF 自动关闭自身 KeyStore 与属性替换16需要 TrickyStoremodule.prop 声明的支持范围为 8–15如需使用建议配置DEVICE_INITIAL_SDK_INT并跟随模块最新版本规律只有一条版本越老拿到高 verdict 越容易13 起 keybox 是 DEVICE verdict 的前提。常见问题问题一安装重启后 Checker 仍返回 MEETS_NONE现象模块安装并重启后Play Integrity API 响应无变化原因模块没有作用到com.google.android.gms.unstable进程——Zygisk 未开启或 GMS 进程被加入 DenyList 而被隐藏解法确认 Magisk 的 Zygisk 开关已启用后重启DenyList 开启时检查 com.google.android.gms 不在列表内装有 Shamiko 时启用其白名单功能问题二Android 13 只能拿到 BASIC拿不到 DEVICE现象设备为 13 及以上Checker 返回 MEETS_BASICmeetsDeviceIntegrity为 false原因Google 在 13 移除了 legacy 检查旧 STRONG 路径不存在DEVICE 校验需要有效 keybox 证书解法安装 TrickyStore 并导入有效 keyboxPIF 无需改动它会自动检测 TrickyStore 并让出 KeyStore 层问题三曾经认证通过之后 verdict 自行下降现象使用一段时间后 verdict 从 DEVICE / STRONG 降为 BASIC 或 NONE原因pif.json 中 FINGERPRINT 与 SECURITY_PATCH 是静态值Google 服务端设备库定期更新旧版指纹被拒解法运行模块目录下的 action.sh 重新拉取最新 Pixel Beta 指纹或手动更新 /data/adb/pif.json 中两个字段模块发新版时跟随v19.1 即指纹更新当前版本 v19.1versionCode 19100changelog 最后一条为指纹更新。仓库地址即安装步骤中的克隆地址若上述步骤无法解决问题可在该仓库 issues 页面说明设备型号、Android 版本、是否使用 TrickyStore 以及 Checker 完整返回。【免费下载链接】PlayIntegrityFixFix Play Integrity (and SafetyNet) verdicts.项目地址: https://gitcode.com/GitHub_Trending/pl/PlayIntegrityFix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考