This module tries to fix Play Integrity and SafetyNet verdicts to get a valid attestation.
This module is not made to hide root, nor to avoid detections in other apps. It only serves to pass Device verdict in the Play Integrity tests and certify your device. All issues created to report a non-Google app not working will be closed without notice.
You will need root and Zygisk, so you must choose ONE of this three setups:
- Magisk with Zygisk enabled.
- KernelSU with ZygiskNext module installed.
- APatch with ZygiskNext module installed.
After flashing and reboot your device, you can check PI and SN using these apps:
- Play Integrity -> https://play.google.com/store/apps/details?id=gr.nikolasspyr.integritycheck
- SafetyNet -> https://play.google.com/store/apps/details?id=rikka.safetynetchecker
NOTE: if you get an error message about a limit, you need to use another app, this is because a lot of users are requesting an attestation.
NOTE: SafetyNet is obsolete, more info here: https://developer.android.com/privacy-and-security/safetynet/deprecation-timeline
Also, if you are using custom rom or custom kernel, be sure that your kernel name isn't blacklisted, you can check it running uname -r
command. This is a list of banned strings: https://xdaforums.com/t/module-play-integrity-fix-safetynet-fix.4607985/post-89308909
After requesting an attestation, you should get this result:
- MEETS_BASIC_INTEGRITY ✅
- MEETS_DEVICE_INTEGRITY ✅
- MEETS_STRONG_INTEGRITY ❌ (Can be achieved with some additional work)
- MEETS_VIRTUAL_INTEGRITY ❌ (this is for emulators only)
You can know more about verdicts in this post: https://xdaforums.com/t/info-play-integrity-api-replacement-for-safetynet.4479337/
And in SafetyNet you should get this:
- basicIntegrity: true
- ctsProfileMatch: true
- evaluationType: BASIC
While this module only returns passing verdicts for as far up as MEETS_DEVICE_INTEGRITY
, it is possible to achieve a passing verdict for MEETS_STRONG_INTEGRITY
by using 5ec1cff's TrickyStore (XDA thread). To put simply, this allows for spoofing a valid certificate chain (Often distributed as a file named keybox.xml
and just called a keybox) to your device's Trusted Execution Environment (TEE) module, in addition to spoofing the bootloader as locked.
However, it must be stressed that a keybox is hard to come by, given that they're leaked (Usually inadvertently) from OEMs and vendors. Even still, they are also often quite quickly revoked, due to a combination of people sending a deluge of server requests (Mostly for flexing their strong verdicts, which they probably didn't need anyway... You know who you are) and Google deploying specialised crawlers for automated detection. And, as quickly mentioned before, you'll likely won't even need one, since basic functions (NFC payments and RCS messaging... etc.) and the vast majority of apps only mandate device integrity/a spoofed locked bootloader.
As for when a keybox is eventually revoked, you'll know it's happened when you're only passing MEETS_BASIC_INTEGRITY
or by checking the key's validity status via vvb2060's Key Attestation Demo. At this point, you'll need to find another unrevoked keybox (Strong integrity), use the publicly available AOSP keybox (Device integrity), or just remove TrickyStore entirely (Device integrity).
TL;DR: Unless it is ABSOLUTELY VITAL for your use case(s), chances are you'll be completely fine only passing up as far as MEETS_DEVICE_INTEGRITY
, and not diving into this rabbit hole.
NOTE: Per the upcoming changes for Play Integrity's verdicts on May 2025, by default you'll only pass MEETS_BASIC_INTEGRITY
as device integrity now requires a locked bootloader on Android 13 and later. While this can be circumvented by using the spoofVendingSdk
attribute (Spoofs SDK 32/Android 12) in your pif.json
configuration, this will, to a varying degree, break some functionality in the Play Store (Given that this is an experimental feature of PIF) including the likes of degraded ease of navigation, and the store outright crashing whenever an app is installed/updated. YMMV, to which it probably will.
- kdrag0n & Displax for the original idea.
- osm0sis for his original autopif2.sh script, and backslashxx & KOWX712 for improving it (action.sh).
https://xdaforums.com/t/pif-faq.4653307/
https://github.com/chiteroman/PlayIntegrityFix/releases/latest