From 172c40847415166afa7b857e5c9f1268240fa948 Mon Sep 17 00:00:00 2001 From: Wang Han <416810799@qq.com> Date: Sun, 16 Jun 2024 12:56:47 +0800 Subject: [PATCH] Rename project to KeystoreInjection --- .github/FUNDING.yml | 14 ----- .github/workflows/android.yml | 4 +- .idea/.gitignore | 3 - .idea/compiler.xml | 6 -- .idea/deploymentTargetDropDown.xml | 10 ---- .idea/deploymentTargetSelector.xml | 10 ---- .idea/gradle.xml | 19 ------- .idea/inspectionProfiles/Project_Default.xml | 10 ---- .idea/migrations.xml | 10 ---- .idea/misc.xml | 10 ---- .idea/vcs.xml | 6 -- README.md | 57 +------------------ app/build.gradle.kts | 12 ++-- app/proguard-rules.pro | 10 ++-- app/src/main/cpp/CMakeLists.txt | 2 +- app/src/main/cpp/main.cpp | 6 +- .../aviraxp/keystoreinjection}/CertUtils.java | 2 +- .../CustomKeyStoreKeyPairGeneratorSpi.java | 2 +- .../keystoreinjection}/CustomKeyStoreSpi.java | 2 +- .../keystoreinjection}/CustomProvider.java | 2 +- .../keystoreinjection}/EntryPoint.java | 2 +- .../aviraxp/keystoreinjection}/Keybox.java | 2 +- .../aviraxp/keystoreinjection}/XMLParser.java | 2 +- changelog.md | 13 ----- module/customize.sh | 6 +- module/module.prop | 13 ++--- settings.gradle.kts | 2 +- update.json | 6 +- 28 files changed, 38 insertions(+), 205 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .idea/.gitignore delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/deploymentTargetDropDown.xml delete mode 100644 .idea/deploymentTargetSelector.xml delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/migrations.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/vcs.xml rename app/src/main/java/{es/chiteroman/playintegrityfix => io/github/aviraxp/keystoreinjection}/CertUtils.java (97%) rename app/src/main/java/{es/chiteroman/playintegrityfix => io/github/aviraxp/keystoreinjection}/CustomKeyStoreKeyPairGeneratorSpi.java (99%) rename app/src/main/java/{es/chiteroman/playintegrityfix => io/github/aviraxp/keystoreinjection}/CustomKeyStoreSpi.java (98%) rename app/src/main/java/{es/chiteroman/playintegrityfix => io/github/aviraxp/keystoreinjection}/CustomProvider.java (95%) rename app/src/main/java/{es/chiteroman/playintegrityfix => io/github/aviraxp/keystoreinjection}/EntryPoint.java (98%) rename app/src/main/java/{es/chiteroman/playintegrityfix => io/github/aviraxp/keystoreinjection}/Keybox.java (89%) rename app/src/main/java/{es/chiteroman/playintegrityfix => io/github/aviraxp/keystoreinjection}/XMLParser.java (98%) delete mode 100644 changelog.md diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 70b68cd3..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,14 +0,0 @@ -# These are supported funding model platforms - -github: chiteroman # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry -polar: # Replace with a single Polar username -custom: https://www.paypal.com/paypalme/chiteroman # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 6a02f96a..0235c40e 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -30,8 +30,8 @@ jobs: - name: Build with Gradle run: ./gradlew assembleRelease - - name: Upload PlayIntegrityFix.zip + - name: Upload KeystoreInjection.zip uses: actions/upload-artifact@v4 with: - name: PlayIntegrityFix + name: KeystoreInjection path: module/* \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d33521..00000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 8fabff5a..00000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml deleted file mode 100644 index 9a986ae3..00000000 --- a/.idea/deploymentTargetDropDown.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml deleted file mode 100644 index 0d460934..00000000 --- a/.idea/deploymentTargetSelector.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 0b0534c6..00000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 146ab09b..00000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml deleted file mode 100644 index 48052b24..00000000 --- a/.idea/migrations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 0ad17cbd..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 9661ac71..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 1281af45..07f06c2a 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,3 @@ -# Play Integrity Fix +# Zygisk-KeystoreInjection -This module tries to fix Play Integrity and SafetyNet verdicts to get a valid attestation. - -## NOTE -If you use a custom ROM, make sure it is signed with the maintainer's private keys, otherwise, you will never be able to pass the Device verdict. - -This module is not made to hide the root, nor to avoid detections in other apps. It only serves to obtain the 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. - -## Tutorial - -You will need root and Zygisk, so you must choose ONE of this three setups: - -- [Magisk](https://github.com/topjohnwu/Magisk) with Zygisk enabled. -- [KernelSU](https://github.com/tiann/KernelSU) with [ZygiskNext](https://github.com/Dr-TSNG/ZygiskNext) module installed. -- [APatch](https://github.com/bmax121/APatch) with [ZygiskNext](https://github.com/Dr-TSNG/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 - -## Verdicts - -After requesting an attestation in Play Integrity API you should get this result: - -- MEETS_BASIC_INTEGRITY ✅ -- MEETS_DEVICE_INTEGRITY ✅ -- MEETS_STRONG_INTEGRITY ❌ -- MEETS_VIRTUAL_INTEGRITY ❌ - -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 - -NOTE: Strong verdict is impossible to pass on unlocked bootloader devices, there are few devices and "exploits" which will allow you to pass it, but, in normal conditions, this verdict will be green only if you are using stock ROM and locked bootloader. The old posts talking about Strong pass was an "exploit" in Google servers, obviously, now it's patched. - -## FAQ -https://xdaforums.com/t/pif-faq.4653307/ - -## Download -https://github.com/chiteroman/PlayIntegrityFix/releases/latest - -## Donations -[PayPal](https://www.paypal.com/paypalme/chiteroman) +This module tries to Generate a valid certificate chain by injection custom Keystore provider. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1ebce953..088997a9 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,7 +3,7 @@ plugins { } android { - namespace = "es.chiteroman.playintegrityfix" + namespace = "io.github.aviraxp.keystoreinjection" compileSdk = 34 ndkVersion = "26.3.11579264" buildToolsVersion = "34.0.0" @@ -13,11 +13,11 @@ android { } defaultConfig { - applicationId = "es.chiteroman.playintegrityfix" - minSdk = 26 + applicationId = "io.github.aviraxp.keystoreinjection" + minSdk = 34 targetSdk = 34 - versionCode = 15990 - versionName = "v15.9.9" + versionCode = 10 + versionName = "v0.1.0" multiDexEnabled = false packaging { @@ -110,7 +110,7 @@ tasks.register("copyFiles") { tasks.register("zip") { dependsOn("copyFiles") - archiveFileName.set("PlayIntegrityFix_${project.android.defaultConfig.versionName}.zip") + archiveFileName.set("KeystoreInjection_${project.android.defaultConfig.versionName}.zip") destinationDirectory.set(project.rootDir.resolve("out")) from(project.rootDir.resolve("module")) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 2bb0776d..1dded961 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,8 +1,8 @@ --keep class es.chiteroman.playintegrityfix.EntryPoint {public ;} --keep class es.chiteroman.playintegrityfix.CustomProvider --keep class es.chiteroman.playintegrityfix.CustomKeyStoreSpi --keep class es.chiteroman.playintegrityfix.CustomKeyStoreKeyPairGeneratorSpi$EC --keep class es.chiteroman.playintegrityfix.CustomKeyStoreKeyPairGeneratorSpi$RSA +-keep class io.github.aviraxp.keystoreinjection.EntryPoint {public ;} +-keep class io.github.aviraxp.keystoreinjection.CustomProvider +-keep class io.github.aviraxp.keystoreinjection.CustomKeyStoreSpi +-keep class io.github.aviraxp.keystoreinjection.CustomKeyStoreKeyPairGeneratorSpi$EC +-keep class io.github.aviraxp.keystoreinjection.CustomKeyStoreKeyPairGeneratorSpi$RSA -keep class org.bouncycastle.jcajce.provider.** { *; } -keep class org.bouncycastle.jce.provider.** { *; } diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt index 4f8dc9df..9f80e100 100644 --- a/app/src/main/cpp/CMakeLists.txt +++ b/app/src/main/cpp/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.22.1) -project(playintegrityfix) +project(keystoreinjection) find_package(cxx REQUIRED CONFIG) diff --git a/app/src/main/cpp/main.cpp b/app/src/main/cpp/main.cpp index 7128034b..434c5a29 100644 --- a/app/src/main/cpp/main.cpp +++ b/app/src/main/cpp/main.cpp @@ -7,7 +7,7 @@ #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "PIF", __VA_ARGS__) -#define CLASSES_DEX "/data/adb/modules/playintegrityfix/classes.dex" +#define CLASSES_DEX "/data/adb/modules/keystoreinjection/classes.dex" #define KEYBOX_FILE_PATH "/data/adb/keybox.xml" @@ -37,7 +37,7 @@ ssize_t xwrite(int fd, void *buffer, size_t count) { return total; } -class PlayIntegrityFix : public zygisk::ModuleBase { +class KeystoreInjection : public zygisk::ModuleBase { public: void onLoad(zygisk::Api *api, JNIEnv *env) override { this->api = api; @@ -169,6 +169,6 @@ static void companion(int fd) { xwrite(fd, xmlVector.data(), xmlSize); } -REGISTER_ZYGISK_MODULE(PlayIntegrityFix) +REGISTER_ZYGISK_MODULE(KeystoreInjection) REGISTER_ZYGISK_COMPANION(companion) \ No newline at end of file diff --git a/app/src/main/java/es/chiteroman/playintegrityfix/CertUtils.java b/app/src/main/java/io/github/aviraxp/keystoreinjection/CertUtils.java similarity index 97% rename from app/src/main/java/es/chiteroman/playintegrityfix/CertUtils.java rename to app/src/main/java/io/github/aviraxp/keystoreinjection/CertUtils.java index 3072f38b..5de3f14a 100644 --- a/app/src/main/java/es/chiteroman/playintegrityfix/CertUtils.java +++ b/app/src/main/java/io/github/aviraxp/keystoreinjection/CertUtils.java @@ -1,4 +1,4 @@ -package es.chiteroman.playintegrityfix; +package io.github.aviraxp.keystoreinjection; import org.bouncycastle.asn1.x500.X500Name; import org.bouncycastle.cert.X509CertificateHolder; diff --git a/app/src/main/java/es/chiteroman/playintegrityfix/CustomKeyStoreKeyPairGeneratorSpi.java b/app/src/main/java/io/github/aviraxp/keystoreinjection/CustomKeyStoreKeyPairGeneratorSpi.java similarity index 99% rename from app/src/main/java/es/chiteroman/playintegrityfix/CustomKeyStoreKeyPairGeneratorSpi.java rename to app/src/main/java/io/github/aviraxp/keystoreinjection/CustomKeyStoreKeyPairGeneratorSpi.java index 22f9f500..dc1652c2 100644 --- a/app/src/main/java/es/chiteroman/playintegrityfix/CustomKeyStoreKeyPairGeneratorSpi.java +++ b/app/src/main/java/io/github/aviraxp/keystoreinjection/CustomKeyStoreKeyPairGeneratorSpi.java @@ -1,4 +1,4 @@ -package es.chiteroman.playintegrityfix; +package io.github.aviraxp.keystoreinjection; import android.annotation.SuppressLint; import android.os.Build; diff --git a/app/src/main/java/es/chiteroman/playintegrityfix/CustomKeyStoreSpi.java b/app/src/main/java/io/github/aviraxp/keystoreinjection/CustomKeyStoreSpi.java similarity index 98% rename from app/src/main/java/es/chiteroman/playintegrityfix/CustomKeyStoreSpi.java rename to app/src/main/java/io/github/aviraxp/keystoreinjection/CustomKeyStoreSpi.java index 7cc58d66..bc81237b 100644 --- a/app/src/main/java/es/chiteroman/playintegrityfix/CustomKeyStoreSpi.java +++ b/app/src/main/java/io/github/aviraxp/keystoreinjection/CustomKeyStoreSpi.java @@ -1,4 +1,4 @@ -package es.chiteroman.playintegrityfix; +package io.github.aviraxp.keystoreinjection; import android.util.Log; diff --git a/app/src/main/java/es/chiteroman/playintegrityfix/CustomProvider.java b/app/src/main/java/io/github/aviraxp/keystoreinjection/CustomProvider.java similarity index 95% rename from app/src/main/java/es/chiteroman/playintegrityfix/CustomProvider.java rename to app/src/main/java/io/github/aviraxp/keystoreinjection/CustomProvider.java index 0df89c23..85052df8 100644 --- a/app/src/main/java/es/chiteroman/playintegrityfix/CustomProvider.java +++ b/app/src/main/java/io/github/aviraxp/keystoreinjection/CustomProvider.java @@ -1,4 +1,4 @@ -package es.chiteroman.playintegrityfix; +package io.github.aviraxp.keystoreinjection; import java.security.Provider; diff --git a/app/src/main/java/es/chiteroman/playintegrityfix/EntryPoint.java b/app/src/main/java/io/github/aviraxp/keystoreinjection/EntryPoint.java similarity index 98% rename from app/src/main/java/es/chiteroman/playintegrityfix/EntryPoint.java rename to app/src/main/java/io/github/aviraxp/keystoreinjection/EntryPoint.java index b70afb9d..2e8a265e 100644 --- a/app/src/main/java/es/chiteroman/playintegrityfix/EntryPoint.java +++ b/app/src/main/java/io/github/aviraxp/keystoreinjection/EntryPoint.java @@ -1,4 +1,4 @@ -package es.chiteroman.playintegrityfix; +package io.github.aviraxp.keystoreinjection; import android.util.Log; diff --git a/app/src/main/java/es/chiteroman/playintegrityfix/Keybox.java b/app/src/main/java/io/github/aviraxp/keystoreinjection/Keybox.java similarity index 89% rename from app/src/main/java/es/chiteroman/playintegrityfix/Keybox.java rename to app/src/main/java/io/github/aviraxp/keystoreinjection/Keybox.java index f6bef6af..aa85fc0a 100644 --- a/app/src/main/java/es/chiteroman/playintegrityfix/Keybox.java +++ b/app/src/main/java/io/github/aviraxp/keystoreinjection/Keybox.java @@ -1,4 +1,4 @@ -package es.chiteroman.playintegrityfix; +package io.github.aviraxp.keystoreinjection; import org.bouncycastle.asn1.x500.X500Name; diff --git a/app/src/main/java/es/chiteroman/playintegrityfix/XMLParser.java b/app/src/main/java/io/github/aviraxp/keystoreinjection/XMLParser.java similarity index 98% rename from app/src/main/java/es/chiteroman/playintegrityfix/XMLParser.java rename to app/src/main/java/io/github/aviraxp/keystoreinjection/XMLParser.java index 9b5cfd16..f47c6f1b 100644 --- a/app/src/main/java/es/chiteroman/playintegrityfix/XMLParser.java +++ b/app/src/main/java/io/github/aviraxp/keystoreinjection/XMLParser.java @@ -1,4 +1,4 @@ -package es.chiteroman.playintegrityfix; +package io.github.aviraxp.keystoreinjection; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; diff --git a/changelog.md b/changelog.md deleted file mode 100644 index 570f5a8e..00000000 --- a/changelog.md +++ /dev/null @@ -1,13 +0,0 @@ -Telegram channel: -https://t.me/playintegrityfix - -Device verdict should pass by default. -If not, try removing /data/adb/pif.json file. - -Donations: -https://www.paypal.com/paypalme/chiteroman - -# v15.9.9 - -- MEETS_DEVICE_INTEGRITY is green again ✅ -- Refine code logic diff --git a/module/customize.sh b/module/customize.sh index 96d019f2..0737112b 100644 --- a/module/customize.sh +++ b/module/customize.sh @@ -1,4 +1,4 @@ -# Error on < Android 8. -if [ "$API" -lt 26 ]; then - abort "- !!! You can't use this module on Android < 8.0" +# Error on < Android 14. +if [ "$API" -lt 34 ]; then + abort "- !!! You can't use this module on Android < 14" fi diff --git a/module/module.prop b/module/module.prop index b660f785..020935af 100644 --- a/module/module.prop +++ b/module/module.prop @@ -1,7 +1,6 @@ -id=playintegrityfix -name=Play Integrity Fix -version=v15.9.9 -versionCode=15990 -author=chiteroman -description=Universal modular fix for Play Integrity (and SafetyNet) on devices running Android 8-14. -updateJson=https://raw.githubusercontent.com/chiteroman/PlayIntegrityFix/main/update.json +id=keystoreinjection +name=Keystore Injection +version=v0.1.0 +versionCode=10 +author=aviraxp +description=Generate a valid certificate chain by injection custom Keystore provider diff --git a/settings.gradle.kts b/settings.gradle.kts index 0feb3870..c4072d7e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -13,5 +13,5 @@ dependencyResolutionManagement { } } -rootProject.name = "PlayIntegrityFix" +rootProject.name = "KeystoreInjection" include(":app") diff --git a/update.json b/update.json index 7c03da51..a4b8eebb 100644 --- a/update.json +++ b/update.json @@ -1,6 +1,4 @@ { - "version": "v15.9.9", - "versionCode": 15990, - "zipUrl": "https://github.com/chiteroman/PlayIntegrityFix/releases/download/v15.9.9/PlayIntegrityFix_v15.9.9.zip", - "changelog": "https://raw.githubusercontent.com/chiteroman/PlayIntegrityFix/main/changelog.md" + "version": "v0.1.0", + "versionCode": 10 }