Compare commits

..
6 changed files with 50 additions and 151 deletions

View file

@ -313,15 +313,7 @@ convert_apks() {
info "You probably can continue to unpack APK!"
}
newbehavior() {
warn "App is newer v6.5.15+! Patches continue to work, but you can't login"
warn "Until a workaround is implemented :("
confirm || exit 1
}
run_patcher() {
# check v6.5.15+
[ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libnframes.so ] && newbehavior
is_unpacked_lib && bash ./parse.sh && bash ./patch.sh
}
@ -482,8 +474,7 @@ do
fi
elif [ "$opt" == 'Install & delete local detection model & open app' ]; then
# handle method for newer app
[ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so ] && warn "This method works best with v6.4.58 ~ v6.5.6. For newer app please block Zimperium host first !"
warn "This method only works with v6.4.58 ~ v6.5.6 !"
if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ]
then
warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"

View file

@ -1,8 +0,0 @@
#!/usr/bin/env bash
# PATCHNAME: Remove QR Scanner Wave
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
rm -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/ic_wave_qr_scanner.webp

View file

@ -12,18 +12,6 @@
info "Spoofing app version..."
# v6.5.2x
sed -i 's|"6.5.29"|"6.5.29.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.28"|"6.5.28.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.27"|"6.5.27.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.26"|"6.5.26.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.25"|"6.5.25.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.24"|"6.5.24.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.23"|"6.5.23.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.22"|"6.5.22.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.21"|"6.5.21.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.20"|"6.5.20.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# v6.5.1x
sed -i 's|"6.5.19"|"6.5.19.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.18"|"6.5.18.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
@ -37,16 +25,16 @@ sed -i 's|"6.5.11"|"6.5.11.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.10"|"6.5.10.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# v6.5.x
sed -i 's|"6.5.9"|"6.5.9.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.8"|"6.5.8.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.7"|"6.5.7.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.6"|"6.5.6.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.5"|"6.5.5.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.4"|"6.5.4.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.3"|"6.5.3.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.2"|"6.5.2.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.1"|"6.5.1.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.0"|"6.5.0.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.9"|"6.5.9.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.8"|"6.5.8.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.7"|"6.5.7.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.6"|"6.5.6.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.5"|"6.5.5.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.4"|"6.5.4.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.3"|"6.5.3.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.2"|"6.5.2.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.1"|"6.5.1.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.0"|"6.5.0.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# v6.4.9x
sed -i 's|6.4.99|6.4.99.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
@ -144,33 +132,12 @@ sed -i 's|755|2024|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|756|2025|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|757|2026|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|758|2027|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# v6.5.14
sed -i 's|759|2028|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# other versions
sed -i 's|760|2028|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|761|2029|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|762|2030|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|763|2031|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|764|2032|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|765|2033|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|766|2034|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|767|2035|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|768|2036|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|769|2037|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|770|2038|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|771|2039|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|772|2040|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|773|2041|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|774|2042|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|775|2043|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|776|2044|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|777|2045|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|778|2046|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|779|2047|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|780|2048|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|781|2049|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|782|2050|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|v6.4.66|v6.4.68|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|v6.4.65|v6.4.68|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'

View file

@ -5,7 +5,4 @@
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
# applies for v6.4.62 ~ v6.5.19
sed -i 's|android:targetSdkVersion="35"|android:targetSdkVersion="34"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
# applies for v6.5.20+
sed -i 's|android:targetSdkVersion="36"|android:targetSdkVersion="34"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml

View file

@ -18,18 +18,6 @@
>
> Older releases (v6.4.90 or older) has mismatch commit ID with this new repo, for reference to the exactly same commit, see [MBCP_VersionReference.md](MBCP_VersionReference.md) in repository.
## Checksum
- More information about checksum measure :
<details>
- Since v6.5.15+, the checksum is more strict, see [this explain](docs/checksum_newapp.md) for more details.
- The checksum measure (which throws GW934 as response) is known enabled from the server-side (v6.4.64 works since days 0, but return with GW934 error after 11 days), it requires client (MBCP/MBBank) app to sent the SHA256 hash of 3 app libraries `libapp.so` | `libmbshield.so` | `libclosestmadagascar.so` and all of 5 dex files (classes1->5.dex) to the server for comparing hash, and if it doesn't match, the server will prevent the app from logging in with GW934 error : `Re-install app to continue using app.`
- The other function (eg: DigitalOTP) that works without logging in still works.
</details>
## Introduction
> Fact : MBCP / MBZDefend-Fix is my "hobby project", I maintain it in my free times :>
@ -68,42 +56,40 @@
### [📦 `MB Bank : com.mbmobile`](https://t.me/embeeapks)
> Any version from v6.4.63 and above should be patchable, but some version, such as v6.5.15, or v6.4.67+ has enhanced checksum mechanism, the patch still works, but the app itself will refuse to login. *Last updated situation: 2026/09/09*
<details>
| ⚙️ Patch | 📜 Description | 🏦 Suggested version |
|:--------:|:--------------:|:-----------------:|
| `Add verified badge` | Replaces the MIC protection shield with verified badge to make it looks more cute :3 | v6.4.0 ~ v6.5.14 |
| `Adaptive launcher icon` | Adds the adaptive & themed icon support to the app. Thanks to @fukiame ! | v6.4.0 ~ v6.5.14 |
| `Proper notification icon` | Temporary fixes for the app notification icon. Thanks to @fukiame ! | v6.4.0 ~ v6.5.14 |
| `Better custom background screen` | Replace the preview custom background from awful to useful. | v6.4.84 ~ v6.5.14 |
| `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.5.14 |
| `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.5.14 |
| `Custom VTAP screen` | Warn users about critical VTAP trigger error from app. | v6.4.53 ~ v6.5.14 |
| `Custom sub-badge` | Replace original animated promotion badge with static badge for Basic users | v6.4.44 ~ v6.5.14 |
| `Disable MB Membership` | Disable the MB Membership badge below pfp and all of it's features. (limited features with v6.4.67+) | v6.4.0 ~ v6.5.14 |
| `Tian37 Fix` | Nuke detection points within Tian37 libraries. (Causing GW934 error for v6.5.7+) | v6.4.87 ~ v6.5.14 |
| `Force portrait screen` | Force the screen always portrait on app, especially when launching app. | v6.4.0 ~ v6.5.14 |
| `Fix VTAP certificate` | Update or downgrade VTAP certificate for older/newer app version, so it can work again in future. Read `docs/fix-vtap-cert.md` to know how to use it. | v6.4.67 ~ v6.5.14 |
| `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.14 |
| `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.14 |
| `Remove invoke to zShield` | Make the app stop invoking to zShield when opening (MainActivity) and (MBBHomeWidgetQR) only (causing GW934 error for v6.4.67+) | v6.4.22 ~ v6.5.14 |
| `Remove built-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.5.14 |
| `Modify app theme` | Modify the built-in app theme from original one to other themes. | v6.4.30 ~ v6.5.14 |
| `Remove garbage permission and activities` | Removes tracking permission & activities from app. | v6.4.0 ~ v6.5.14 |
| `Revert old eMBee logo` | Revert old eMBee logo, especially on product consultation options. | v6.4.53 ~ v6.5.14 |
| `Remove useless libraries` | Remove the useless libraries from app, only for v6.4.67+ | v6.4.67 ~ v6.5.14 |
| `Remove animated QR background` | Remove the animated QR background from bottom navigation bar and replace with white background. | v6.4.43 ~ v6.5.14 |
| `Remove VNPAY VMB20` | Remove the VNPAY Airplane related activities. | v6.4.55 ~ v6.5.14 |
| `Restore old registration resources` | Restore old resources on `onboarding` page. | v6.4.48 ~ v6.5.14 |
| `Hide VTAP root detection activity & dialog` | Hide the old root detection screen and dialog showing "Device is rooted" (might have issues with some HyperOS ROMs). (causing GW934 error for v6.4.67+) | v6.4.0 ~ v6.5.14 |
| `Legacy hide VTAP activity & dialog` | Hide the first root detection screen with dialog showing "Device is rooted" but not bypassing it. (GW908 will still present, unlike standard `Hide VTAP root detection activity & dialog` patch). Only use for some ugly ROMs which is crashing with standard patch. (Causing GW934 error for v6.4.67+) | v6.4.53 ~ v6.5.14 |
| `Remove protection shield` | Remove the MIC protection shield on profile picture and login screen. (not app protection) | v6.4.0 ~ v6.5.14 |
| `Remove app from launcher` | Remove the app icon from launcher, and start with `am start` or with MBZDefend-Fix Action/Termux. | v6.4.0 ~ v6.5.14 |
| `Set targetSdkVersion to 34` | Set the `targetSdkVersion` to 34 (Android 14) to prevent UI issues on some activities. | v6.4.10 ~ v6.5.14 |
| `Add modified resources` | Adds the specific strings for MBCP on eKYC phases, and modify the DigiBank logo. | v6.4.0 ~ v6.5.14 |
| `Add anime resources` | Adds anime-related resources to some components inside app. | v6.4.45 ~ v6.5.14 |
| `Add verified badge` | Replaces the MIC protection shield with verified badge to make it looks more cute :3 | v6.4.0 ~ v6.5.11 |
| `Adaptive launcher icon` | Adds the adaptive & themed icon support to the app. Thanks to @fukiame ! | v6.4.0 ~ v6.5.11 |
| `Proper notification icon` | Temporary fixes for the app notification icon. Thanks to @fukiame ! | v6.4.0 ~ v6.5.11 |
| `Better custom background screen` | Replace the preview custom background from awful to useful. | v6.4.84 ~ v6.5.11 |
| `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.5.11 |
| `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.5.11 |
| `Custom VTAP screen` | Warn users about critical VTAP trigger error from app. | v6.4.53 ~ v6.5.11 |
| `Custom sub-badge` | Replace original animated promotion badge with static badge for Basic users | v6.4.44 ~ v6.5.11 |
| `Disable MB Membership` | Disable the MB Membership badge below pfp and all of it's features. (limited features with v6.4.67+) | v6.4.0 ~ v6.5.11 |
| `Tian37 Fix` | Nuke detection points within Tian37 libraries. (Causing GW934 error for v6.5.7+) | v6.4.87 ~ v6.5.11 |
| `Force portrait screen` | Force the screen always portrait on app, especially when launching app. | v6.4.0 ~ v6.5.11 |
| `Fix VTAP certificate` | Update or downgrade VTAP certificate for older/newer app version, so it can work again in future. Read `docs/fix-vtap-cert.md` to know how to use it. | v6.4.67 ~ v6.5.11 |
| `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.11 |
| `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.11 |
| `Remove invoke to zShield` | Make the app stop invoking to zShield when opening (MainActivity) and (MBBHomeWidgetQR) only (causing GW934 error for v6.4.67+) | v6.4.22 ~ v6.5.11 |
| `Remove built-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.5.11 |
| `Modify app theme` | Modify the built-in app theme from original one to other themes. | v6.4.30 ~ v6.5.11 |
| `Remove garbage permission and activities` | Removes tracking permission & activities from app. | v6.4.0 ~ v6.5.11 |
| `Revert old eMBee logo` | Revert old eMBee logo, especially on product consultation options. | v6.4.53 ~ v6.5.11 |
| `Remove useless libraries` | Remove the useless libraries from app, only for v6.4.67+ | v6.4.67 ~ v6.5.11 |
| `Remove animated QR background` | Remove the animated QR background from bottom navigation bar and replace with white background. | v6.4.43 ~ v6.5.11 |
| `Remove VNPAY VMB20` | Remove the VNPAY Airplane related activities. | v6.4.55 ~ v6.5.11 |
| `Restore old registration resources` | Restore old resources on `onboarding` page. | v6.4.48 ~ v6.5.11 |
| `Hide VTAP root detection activity & dialog` | Hide the old root detection screen and dialog showing "Device is rooted" (might have issues with some HyperOS ROMs). (causing GW934 error for v6.4.67+) | v6.4.0 ~ v6.5.6 |
| `Legacy hide VTAP activity & dialog` | Hide the first root detection screen with dialog showing "Device is rooted" but not bypassing it. (GW908 will still present, unlike standard `Hide VTAP root detection activity & dialog` patch). Only use for some ugly ROMs which is crashing with standard patch. (Causing GW934 error for v6.4.67+) | v6.4.53 ~ v6.5.11 |
| `Remove protection shield` | Remove the MIC protection shield on profile picture and login screen. (not app protection) | v6.4.0 ~ v6.5.11 |
| `Remove app from launcher` | Remove the app icon from launcher, and start with `am start` or with MBZDefend-Fix Action/Termux. | v6.4.0 ~ v6.5.11 |
| `Set targetSdkVersion to 34` | Set the `targetSdkVersion` to 34 (Android 14) to prevent UI issues on some activities. | v6.4.10 ~ v6.5.11 |
| `Add modified resources` | Adds the specific strings for MBCP on eKYC phases, and modify the DigiBank logo. | v6.4.0 ~ v6.5.11 |
| `Add anime resources` | Adds anime-related resources to some components inside app. | v6.4.45 ~ v6.5.11 |
</details>
@ -350,6 +336,15 @@ Early note : When I created @mbbmod channel back in 2023, no one knows it for mo
- [x] Adapt new v6.4.68 trungthu theme
## Old measure
- More information about GW934 measure :
<details>
- The `GW934` error is known enabled from the server-side (v6.4.64 works since days 0, but return with GW934 error after 11 days), it requires client (MBCP/MBBank) app to sent the SHA256 hash of 3 app libraries `libapp.so` | `libmbshield.so` | `libclosestmadagascar.so` and all of 5 dex files (classes1->5.dex) to the server for comparing hash, and if it doesn't match, the server will prevent the app from logging in with GW934 error : `Re-install app to continue using app.`
- The other function (eg: DigitalOTP) that works without logging in still works.
</details>
## Credits
- [apktool](https://github.com/iBotPeaches/Apktool)

View file

@ -1,43 +0,0 @@
# MBBank v6.5.15+ checksum list
in first day of v6.5.15+ released, there is no such checksum, it still the same as before, only until 4 days since release, there is toggle in backend that enable the check, remain unaffected for older base
same as v6.4.63+, in first day nothing happens, no checksum, but after 11 days, checksum appears.
if one of these is modified (even one bit) will trigger checksum fail that refuse to accept login from
all of this is both app & server side, server side ask for checksum, the client get sha256 hash and send to server side `getSHFiles` and if something mismatch, the server side will refuse to login and return GW934 as response to app
```shell
# outside assets (v6.5.15+)
mb.apk/AndroidManifest.xml
mb.apk/lib/arm64-v8a/*.so # previously is libapp / zshield & zdefend libs only since v6.4.63+
mb.apk/lib/armeabi-v7a/*.so # previously is libapp / zshield & zdefend libs only since v6.4.63+
mb.apk/classes*.dex # since v6.4.63+
# in assets
# zimperium (v6.5.15+)
mb.apk/assets/zimperium_local_model_randomized_filename*
mb.apk/assets/zimperium_encrypted_dex_folder/*.odex
mb.apk/assets/*.szip # zshield encrypted files
# vkey vtap (v6.5.15+)
mb.apk/assets/firmware # vkey vtap fw
mb.apk/assets/profile # vkey vtap profile
mb.apk/assets/signature # vtap vkey signature
mb.apk/version.json # vtap vkey vos info
mb.apk/voscodesign.vky
mb.apk/vkeylicensepack
# singalarity ekyc files (v6.5.15+)
mb.apk/assets/sgprofile
mb.apk/assets/smart_ekyc_finall.zip
mb.apk/assets/media_init_data
# flutter assets (v6.5.15+)
mb.apk/assets/flutter_assets/assets/fonts/*
mb.apk/assets/flutter_assets/fonts/*
mb.apk/assets/flutter_assets/FontManifest.json
```