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 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 844b97a..2afd0b8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,10 +14,10 @@ android { buildToolsVersion = "36.0.0" defaultConfig { applicationId = "com.mbcp.helper" - minSdk = 31 + minSdk = 28 targetSdk = 36 - versionCode = 2030 - versionName = "1.3-mbcp" + versionCode = 2031 + versionName = "1.5-mbcp" } signingConfigs { 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 b9910ed..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)); @@ -262,7 +263,19 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag hookAllMethods(keySetManagerClass, "shouldCheckUpgradeKeySetLocked", new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) { - if (prefs.getBoolean("digestCreak", true) && Arrays.stream(Thread.currentThread().getStackTrace()).anyMatch((o) -> "preparePackageLI".equals(o.getMethodName()))) { + // 检查权限定义的签名的时候,如果定义包名相同,会使用 KeySetManagerService , + // 我们利用这一点让它通过检查,也就是同包不同签名权限可覆盖 + // R-Sv2: PackageManagerService#preparePackageLI + // https://cs.android.com/android/platform/superproject/+/android-11.0.0_r21:frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java;l=17188;drc=960ffca13a519b0fb9e0942665577c62f97d0eea + // T-V: InstallPackageHelper#preparePackageLI + // https://cs.android.com/android/platform/superproject/+/android-14.0.0_r2:frameworks/base/services/core/java/com/android/server/pm/InstallPackageHelper.java;l=1097;drc=5ea7e53c3a787e25af86b0f31933ddd68ae3514e + // 16: InstallPackageHelper#preparePackage + // https://cs.android.com/android/platform/superproject/+/android-16.0.0_r2:frameworks/base/services/core/java/com/android/server/pm/InstallPackageHelper.java;l=1459;drc=d14620262929e39a409b55d11cb542c1d1c4d2f6 + if (prefs.getBoolean("digestCreak", true) && + Arrays.stream(Thread.currentThread().getStackTrace()) + .anyMatch((o) -> o.getMethodName().startsWith("preparePackage") + ) + ) { shouldBypass.set(true); param.setResult(true); } else { @@ -394,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-vi/string.xml b/app/src/main/res/values-vi/string.xml index c1b4ac6..a56ee10 100644 --- a/app/src/main/res/values-vi/string.xml +++ b/app/src/main/res/values-vi/string.xml @@ -7,7 +7,7 @@ Xem mã nguồn của trình hỗ trợ MBCP - dựa trên CorePatch. Tùy chọn Vô hiệu hóa xác minh chữ ký và cho phép cài đặt MBCP. - MBCP và trình hỗ trợ hiện chỉ khả dụng cho Android 12 trở lên.\nMBCP Helper được dựa trên CorePatch. + MBCP và trình hỗ trợ hiện khả dụng cho Android 9 ~ 16 trở lên.\nMBCP Helper được dựa trên CorePatch. Cho phép hạ cấp Cho phép hạ cấp MBCP và các ứng dụng khác về phiên bản cũ hơn. Vô hiệu hóa xác minh tính toàn vẹn @@ -20,4 +20,8 @@ !! Any apk can override the installed one !!\nBe carefully when installing unknown apk 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 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. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 746beb5..9c646b8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,7 +8,7 @@ Options Disable signature verification and allows install MBCP - MBCP and Helper only available for Android 12 and newer.\nIts based on CorePatch. + MBCP and Helper are available for Android 9 and newer.\nIts based on CorePatch. Allow downgrade Allow downgrade MBCP and other applications to older version. Disable digest verify @@ -21,4 +21,8 @@ !! Any apk can override the installed one !!\nBe carefully when installing unknown apk 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 !!! + 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 1bfaf66..b6b0c0a 100644 --- a/app/src/main/res/xml/prefs.xml +++ b/app/src/main/res/xml/prefs.xml @@ -8,46 +8,52 @@ android:summary="@string/dlmbcp_summary"> + android:data="https://t.me/mbbpatch_eng"/> + android:data="https://git.disroot.org/mbcp/mbcp-helper"/> - - + + + + + - -