0 = disabled
1 = enabled and use FINGERPRINT from json for vending (Play Store)
<string> = enabled and use <string> as FINGERPRINT for vending (Play Store)
spoofVendingFingerprint = 0 / 1
When 0, no impact on Vending
When 1, same FINGERPRINT from custom.pif.json is injected into Vending
Unless spoofVendingSdk is enabled also, in which case FINGERPRINT is not injected since it's not used
- most Java classes were being kept fully unoptimized anyway, which should be generally avoided
- AGP 8.9.0-alpha07 is the last where spoofSignature works with R8 enabled, alpha08 and all later AGP results in:
msg: java.lang.StackOverflowError: stack size 8188KB
stacktrace: java.lang.StackOverflowError: stack size 8188KB
at es.chiteroman.playintegrityfix.CustomPackageInfoCreator.createFromParcel(Unknown Source:2)
[TRUNCATED 3288424 CHARS]
at es.chiteroman.playintegrityfix.CustomPackageInfoCreator.createFromParcel(Unknown Source:2)
at android.os.Parcel.readTypedObject(Parcel.java:4025)
at android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo(IPackageManager.java:4470)
at android.content.pm.PackageManager.getPackageInfoAsUserUncached(PackageManager.java:10969)
at android.content.pm.PackageManager.-$$Nest$smgetPackageInfoAsUserUncached(Unknown Source:0)
at android.content.pm.PackageManager$2.recompute(PackageManager.java:10982)
at android.content.pm.PackageManager$2.recompute(PackageManager.java:10979)
at android.app.PropertyInvalidatedCache.query(PropertyInvalidatedCache.java:999)
at android.content.pm.PackageManager.getPackageInfoAsUserCached(PackageManager.java:10996)
at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:1215)
at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1448)
at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1405)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7029)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2262)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8282)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:554)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:885)
- No longer loads custom classes if not needed for respective packages
- Renames isGmsUnstable to isDroidGuardOrVending
- Removes spoofVendingSdk from migrate/autopif scripts (don't document yet)
- Adds missing setAccessible() call for early return in EntryPointVending.init()
- Adds missing set of spoofSignature -> 0 for vending
Squashed: Add spoofVendingSdk for forcing new PI legacy verdicts
Squashed: Move vending SDK spoof to EntryPointVending, replace killgms.sh with killpi.sh
- Android 14 QPR2 (currently in Beta and due for Stable in March) breaks ShadowHook libc hooking needed for property spoofing
- there are currently no signs of life over at ShadowHook to resolve this despite my reporting it to them over a month ago
Co-authored-by: Nicholas Bissell <thefreeman193@hotmail.com>
Co-authored-by: chiteroman <98092901+chiteroman@users.noreply.github.com>