From 977ae12af277e0778b7c71e31199dc979fc2d3ab Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 8 Sep 2025 02:20:04 +0700 Subject: [PATCH 1/7] feat: strings.xml: new strings Signed-off-by: Cuynu --- app/src/main/res/values/strings.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d976514..827e8a5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -22,5 +22,8 @@ Disable Package Verification Agent e.g. Google Play Protection HyperOS attention - This helper cant be used for HyperOS 1+. If you have HyperOS 1+, downgrade to MIUI, or ask somewhere for manually patching service.jar !!! + This helper cant be used for HyperOS 1+. If you have HyperOS 1+, downgrade to MIUI, or ask somewhere for manually patching service.jar !!! + + Disable exact signature match + Disables exact signature match between apks, allowing installs with each apk split having a different signature. Only enable when really needed! From 2988c0f618fcf072b8378873514347c81e1e322e Mon Sep 17 00:00:00 2001 From: rushii <33725716+rushiiMachine@users.noreply.github.com> Date: Sat, 2 Aug 2025 07:34:01 -0700 Subject: [PATCH 2/7] feat: add disabling exact signature check (#134) Typically, installing a split APK enforces that the same signature is present across all of the splits. This adds the option to disable that check to allow installing splits with differing signatures. --- .../main/java/toolkit/coderstory/CorePatchForQ.java | 9 +++++++++ .../main/java/toolkit/coderstory/CorePatchForR.java | 10 ++++++++++ app/src/main/res/values/strings.xml | 7 ++++--- app/src/main/res/xml/prefs.xml | 5 +++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/toolkit/coderstory/CorePatchForQ.java b/app/src/main/java/toolkit/coderstory/CorePatchForQ.java index 7532c1a..72b05fc 100644 --- a/app/src/main/java/toolkit/coderstory/CorePatchForQ.java +++ b/app/src/main/java/toolkit/coderstory/CorePatchForQ.java @@ -149,5 +149,14 @@ public class CorePatchForQ extends XposedHelper implements IXposedHookLoadPackag "isVerificationEnabled", new ReturnConstant(prefs, "disableVerificationAgent", false) ); + + // Allow apk splits with different signatures to be installed together + hookAllMethods(signingDetails, "signaturesMatchExactly", new XC_MethodHook() { + @Override + protected void beforeHookedMethod(MethodHookParam param) { + if (prefs.getBoolean("exactSigCheck", false)) + param.setResult(true); + } + }); } } diff --git a/app/src/main/java/toolkit/coderstory/CorePatchForR.java b/app/src/main/java/toolkit/coderstory/CorePatchForR.java index 6726c10..4dd238f 100644 --- a/app/src/main/java/toolkit/coderstory/CorePatchForR.java +++ b/app/src/main/java/toolkit/coderstory/CorePatchForR.java @@ -65,6 +65,7 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag XposedBridge.log("D/" + MainHook.TAG + " downgrade=" + prefs.getBoolean("downgrade", true)); XposedBridge.log("D/" + MainHook.TAG + " authcreak=" + prefs.getBoolean("authcreak", false)); XposedBridge.log("D/" + MainHook.TAG + " digestCreak=" + prefs.getBoolean("digestCreak", true)); + XposedBridge.log("D/" + MainHook.TAG + " exactSigCheck=" + prefs.getBoolean("exactSigCheck", false)); XposedBridge.log("D/" + MainHook.TAG + " UsePreSig=" + prefs.getBoolean("UsePreSig", false)); XposedBridge.log("D/" + MainHook.TAG + " bypassBlock=" + prefs.getBoolean("bypassBlock", true)); XposedBridge.log("D/" + MainHook.TAG + " sharedUser=" + prefs.getBoolean("sharedUser", false)); @@ -406,6 +407,15 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag hookAllMethods(getIsVerificationEnabledClass(loadPackageParam.classLoader), "isVerificationEnabled", new ReturnConstant(prefs, "disableVerificationAgent", false)); + // Allow apk splits with different signatures to be installed together + hookAllMethods(signingDetails, "signaturesMatchExactly", new XC_MethodHook() { + @Override + protected void beforeHookedMethod(MethodHookParam param) { + if (prefs.getBoolean("exactSigCheck", false)) + param.setResult(true); + } + }); + if (BuildConfig.DEBUG) initializeDebugHook(loadPackageParam); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 827e8a5..46dd676 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -22,8 +22,9 @@ Disable Package Verification Agent e.g. Google Play Protection HyperOS attention - This helper cant be used for HyperOS 1+. If you have HyperOS 1+, downgrade to MIUI, or ask somewhere for manually patching service.jar !!! + This helper cant be used for HyperOS 1+. If you have HyperOS 1+, downgrade to MIUI, or ask somewhere for manually patching service.jar !!! + Disable exact signature match - Disable exact signature match - Disables exact signature match between apks, allowing installs with each apk split having a different signature. Only enable when really needed! + Disable exact signature match + Disables exact signature match between apks, allowing installs with each apk split having a different signature. Only enable when really needed! diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml index fbd1d0c..c605c1a 100644 --- a/app/src/main/res/xml/prefs.xml +++ b/app/src/main/res/xml/prefs.xml @@ -41,6 +41,11 @@ android:key="digestCreak" android:enabled="false" android:defaultValue="true" /> + Date: Mon, 8 Sep 2025 02:26:53 +0700 Subject: [PATCH 3/7] feat: strings.xml: new strings Signed-off-by: Cuynu --- app/src/main/res/values-vi/string.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-vi/string.xml b/app/src/main/res/values-vi/string.xml index a25935a..ad6a199 100644 --- a/app/src/main/res/values-vi/string.xml +++ b/app/src/main/res/values-vi/string.xml @@ -22,4 +22,6 @@ ví dụ như trình bảo vệ app của Google Play. Thông báo cho HyperOS Trình hỗ trợ này không thể sử dụng nếu bạn có HyperOS 1+. Vui lòng tìm các cách riêng, gợi ý : Vá service.jar cho HyperOS để bỏ xác minh chữ ký APK. Chúng tôi không thể hỗ trợ thêm. + Disable exact signature match + Disables exact signature match between apks, allowing installs with each apk split having a different signature. From fbe6bd14cc85a0abe7052a6e9cd5f9530d629d2a Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 8 Sep 2025 02:40:29 +0700 Subject: [PATCH 4/7] feat: modify links & minor changes Signed-off-by: Cuynu --- app/src/main/res/values-vi/string.xml | 4 ++-- app/src/main/res/values/strings.xml | 2 -- app/src/main/res/xml/prefs.xml | 11 +++++------ 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values-vi/string.xml b/app/src/main/res/values-vi/string.xml index ad6a199..a56ee10 100644 --- a/app/src/main/res/values-vi/string.xml +++ b/app/src/main/res/values-vi/string.xml @@ -21,7 +21,7 @@ Bỏ qua tác nhân xác minh APK ví dụ như trình bảo vệ app của Google Play. Thông báo cho HyperOS - Trình hỗ trợ này không thể sử dụng nếu bạn có HyperOS 1+. Vui lòng tìm các cách riêng, gợi ý : Vá service.jar cho HyperOS để bỏ xác minh chữ ký APK. Chúng tôi không thể hỗ trợ thêm. + Trình hỗ trợ này không thể sử dụng nếu bạn có HyperOS 1+. Vui lòng nhấn vào đây để xem cách cài app MBCP cho HyperOS. Disable exact signature match - Disables exact signature match between apks, allowing installs with each apk split having a different signature. + Disables exact signature match between apks, allowing installs with each apk split having a different signature. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 46dd676..9c646b8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -23,8 +23,6 @@ e.g. Google Play Protection HyperOS attention This helper cant be used for HyperOS 1+. If you have HyperOS 1+, downgrade to MIUI, or ask somewhere for manually patching service.jar !!! - Disable exact signature match - Disable exact signature match Disables exact signature match between apks, allowing installs with each apk split having a different signature. Only enable when really needed! diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml index c605c1a..3ce0570 100644 --- a/app/src/main/res/xml/prefs.xml +++ b/app/src/main/res/xml/prefs.xml @@ -8,14 +8,14 @@ android:summary="@string/dlmbcp_summary"> + android:data="https://t.me/mbbpatch_eng"/> + android:data="https://git.disroot.org/cuynu/mbcp-helper"/> @@ -31,7 +31,7 @@ android:summary="@string/hyperos_summary"> + android:data="https://git.disroot.org/mbcp/info/wiki/mbcpinstall_hyperos" /> - Date: Mon, 8 Sep 2025 02:41:09 +0700 Subject: [PATCH 5/7] feat: bump v1.5-mbcp Signed-off-by: Cuynu --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d343d91..2afd0b8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,8 +16,8 @@ android { applicationId = "com.mbcp.helper" minSdk = 28 targetSdk = 36 - versionCode = 2030 - versionName = "1.4-mbcp" + versionCode = 2031 + versionName = "1.5-mbcp" } signingConfigs { From 72326e5b1677ea4e40be3c69102a93f8c56f274d Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 8 Sep 2025 02:44:58 +0700 Subject: [PATCH 6/7] fix: prefs.xml: wrong link Signed-off-by: Cuynu --- app/src/main/res/xml/prefs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml index 3ce0570..b6b0c0a 100644 --- a/app/src/main/res/xml/prefs.xml +++ b/app/src/main/res/xml/prefs.xml @@ -15,7 +15,7 @@ android:summary="@string/src_summary"> + android:data="https://git.disroot.org/mbcp/mbcp-helper"/> From 40f150e343e386bc4c16815fd3ba0c6a52b213b5 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 8 Sep 2025 02:46:58 +0700 Subject: [PATCH 7/7] feat(func)!: remove github action workflow i don't need this, as i build locally Signed-off-by: Cuynu --- .github/workflows/android.yml | 43 ----------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 .github/workflows/android.yml diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml deleted file mode 100644 index f113bf7..0000000 --- a/.github/workflows/android.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Android CI - -on: - push: - branches: [ main ] - pull_request: - workflow_dispatch: - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up JDK 21 - uses: actions/setup-java@v3 - with: - java-version: 21 - distribution: 'temurin' - cache: 'gradle' - - - name: Write key - if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' - run: | - if [ ! -z "${{ secrets.SIGNING_KEY }}" ]; then - echo releaseStorePassword='${{ secrets.KEY_STORE_PASSWORD }}' >> gradle.properties - echo releaseKeyAlias='${{ secrets.ALIAS }}' >> gradle.properties - echo releaseKeyPassword='${{ secrets.KEY_PASSWORD }}' >> gradle.properties - echo releaseStoreFile='key.jks' >> gradle.properties - echo ${{ secrets.SIGNING_KEY }} | base64 --decode > key.jks - fi - - - name: Build with Gradle - run: ./gradlew assembleRelease assembleDebug - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: Signed app bundle - path: app/build/outputs/apk