When a rooted Android device tries to install an app, Google Play checks whether the device is "certified" — running unmodified software on genuine hardware. Root breaks this check, causing the Play Store to flag your device as uncertified and blocking apps that require it. Play Integrity Fix Inject by KOWX712 restores that certification by spoofing the device fingerprint and build properties at runtime via Zygisk — the inject-s variant being the lightweight, stable production build for Android 8 through 16.
Core Spoofing Features
Runtime property injection that makes Google Play Services see a certified, unmodified device — without modifying any system file.
Build Fingerprint Spoofing
spoofBuild (enabled by default) injects a known-good device fingerprint at the process level when Google Play Services reads device identity. The spoofed ro.build.fingerprint, ro.product.model, and security patch date are loaded from pif.prop at runtime — no system file modification.
Custom Keystore Provider
spoofProvider injects a custom keystore provider — used when you are not running Tricky Store. It intercepts the KeyStore API that Google Play uses for hardware attestation and substitutes a provider that returns acceptable results without hardware-backed signing.
System Prop Spoofing
spoofProps intercepts when Google Play Services reads device properties directly from the Android system property store rather than via Keystore. Enable when not using Tricky Store to ensure all property-reading paths return the spoofed values.
ROM Signature Spoof
spoofSignature masks the ROM's signing key when it is signed with a debug/test key (testkey). Custom ROMs built from AOSP without a release key would otherwise expose themselves immediately — this option makes the ROM signature appear legitimate to Play Integrity.
WebUI & Fingerprint Fetch
Built-in WebUI accessible from your root manager provides one-click configuration for all spoofing options. A dedicated Fetch pif.prop from GitHub button retrieves a working fingerprint using the browser's native fetch API — no curl, wget, or BusyBox required.
Script-Only Mode
A new script-only mode keeps Zygisk loaded but stops the injection into GMS/Play Store processes. Configuration changes in this mode take effect without a reboot — useful for testing fingerprint values and tweaking settings without cycling the device.
How Play Integrity Fix Works
Google Play Services periodically calls the Play Integrity API to verify your device's trustworthiness. The API checks build fingerprint, security patch level, and hardware-backed attestation to assign one of three verdicts. PIF Inject hooks into the GMS process via Zygisk and intercepts the system calls that read device identity before they are transmitted to Google's servers.
The module reads its configuration from pif.prop — a plain text file containing spoofed values for ro.build.fingerprint, ro.product.model, and ro.build.version.security_patch. These values must be internally consistent: spoofing a 2017 device fingerprint alongside a 2025 security patch date is a logical impossibility that Google's validation detects as tampering. The WebUI's fetch feature automatically retrieves a pre-validated, internally consistent configuration.
The result for most devices is MEETS_BASIC_INTEGRITY ✅ and MEETS_DEVICE_INTEGRITY ✅ — sufficient for Play Store certification, Google Pay availability in most regions, and the majority of apps that check device integrity. For MEETS_STRONG_INTEGRITY, a valid hardware keybox via Tricky Store is additionally required.
Understanding the Inject Variants
KOWX712's repository maintains several inject variants. Here is what each adds and which to use:
| Variant | What it adds | Status |
|---|---|---|
inject |
Base standalone inject branch — auto-detects TrickyStore and ROM signature | Active |
inject-vending |
Adds spoofVendingSdk (SDK 32 spoof for Play Store) — patched by Google, no longer effective |
Discontinued |
inject-manual |
Removes auto config detection — manual TrickyStore and ROM signature handling only | Discontinued |
inject-s |
Based on inject-manual. Drops JSON format (pif.json → pif.prop). Lightest build — recommended for daily use |
✅ This build |
Configuration Options (pif.prop)
All options are configured through the WebUI or by directly editing /data/adb/modules/playintegrityfix/pif.prop:
spoofBuild Default ONspoofProviderspoofPropsspoofSignaturetestkey. Check: unzip -l /system/etc/security/otacerts.zip | grep -oE "testkey|releasekey"spoofVendingBuildspoofVendingSdk PatchedFrequently Asked Questions
pif.prop instead of pif.json for configuration, drops auto-detection of TrickyStore and ROM signatures, and is based on inject-manual. It is intended as the lean, stable production build for daily use. The heavier variants (inject-vending, inject-manual) have been discontinued.
/data/adb/modules/playintegrityfix/pif.prop containing spoofed device fingerprint and build properties. The WebUI's Fetch pif.prop from GitHub button automatically downloads a working configuration — no manual editing needed for most users. Manual editing is available for advanced users who want to use a specific device fingerprint.
uname -r in a terminal and verify it is not on the blacklist before troubleshooting other causes.