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"/>
-
-
+
+
+
+
+
-
-