From aa08968a5f7a401f7421c620bd1c68652443b81c Mon Sep 17 00:00:00 2001 From: Cuynu Date: Wed, 3 Jun 2026 17:46:50 +0700 Subject: [PATCH 01/45] chore: patches(etc): move specific bypass from `autopatch_strings` to separate patches separate from `autopatch_strings` would be better than just add them to one patch Signed-off-by: Cuynu --- MBCPApp/patches/autopatch_strings.sh | 18 ++---------------- MBCPApp/patches/block_adjust_volume_sekyc.sh | 2 +- MBCPApp/patches/bypass_blacklist_iphash.sh | 8 ++++++++ MBCPApp/patches/bypass_forced_update_dialog.sh | 12 ++++++++++++ MBCPApp/patches/bypass_malicious_apps_check.sh | 10 ++++++++++ .../hide_vtap_root_detection_activity.sh | 2 +- MBCPApp/patches/remove_invoke_to_mbshield.sh | 2 +- MBCPApp/patches/remove_new_zimperium_check.sh | 2 +- MBCPApp/patches/xpe003_fix.sh | 10 ++++++++++ README.md | 4 ++++ 10 files changed, 50 insertions(+), 20 deletions(-) create mode 100644 MBCPApp/patches/bypass_blacklist_iphash.sh create mode 100644 MBCPApp/patches/bypass_forced_update_dialog.sh create mode 100644 MBCPApp/patches/bypass_malicious_apps_check.sh create mode 100644 MBCPApp/patches/xpe003_fix.sh diff --git a/MBCPApp/patches/autopatch_strings.sh b/MBCPApp/patches/autopatch_strings.sh index e13fb4c..b9cb489 100644 --- a/MBCPApp/patches/autopatch_strings.sh +++ b/MBCPApp/patches/autopatch_strings.sh @@ -5,21 +5,6 @@ # shellcheck disable=SC1091 . "$DIRPATH"/common.sh -# Block forced update dialog (does not bypasses GW525) -sed_libapp 's|version_check_update_config|version_nonapp_check_config' -sed_libapp 's|currentVersion|currentMBdevsa' -sed_libapp 's|minVersion|MBDEVSUCKS' - -# Bypass blacklist IP hashes -sed_libapp 's|list_blocked_ip_hash|list_ip_blocked_hash' - -# Bypass malicious apps check -sed_libapp 's|whitelistServices|Servicewhitelist' - -# XPE003 error fixes -sed_libapp 's|isEnableTimeout|isEnableLockout' -sed_libapp 's|zdefend_config|fua0am0_config' - # App update button url sed_libapp 's|market://details?id=com.mbmobile|https://tinyurl.com/mbcpupdate??|' # Facebook button url @@ -177,8 +162,9 @@ sed_libapp 's|Account Balance|Account balance|g' sed_libapp 's|Set as Default Account|Set as default account|g' # App log header info (client.log) +# Spoof app version patch already spoofed with (_mbcp) suffix. #sed_libapp 's|productionrn|mbcpreleases|g' -sed_libapp 's|Open app MBCPApp|Open app MB Bank|g' +#sed_libapp 's|Open app MBCPApp|Open app MB Bank|g' # Wallet (Link management) sed_libapp 's|Link Management|Link management|' diff --git a/MBCPApp/patches/block_adjust_volume_sekyc.sh b/MBCPApp/patches/block_adjust_volume_sekyc.sh index 5de36c6..ac48bdb 100644 --- a/MBCPApp/patches/block_adjust_volume_sekyc.sh +++ b/MBCPApp/patches/block_adjust_volume_sekyc.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # PATCHNAME: Block adjust volume on sEKYC -# MAXVER: 6.4.66 +# MAXVER: # MINVER: # shellcheck disable=SC1091 . "$DIRPATH"/common.sh diff --git a/MBCPApp/patches/bypass_blacklist_iphash.sh b/MBCPApp/patches/bypass_blacklist_iphash.sh new file mode 100644 index 0000000..53acf92 --- /dev/null +++ b/MBCPApp/patches/bypass_blacklist_iphash.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# PATCHNAME: Bypass blacklist IP hashes +# MAXVER: 6.4.67 +# MINVER: +# shellcheck disable=SC1091 +. "$DIRPATH"/common.sh + +sed_libapp 's|list_blocked_ip_hash|list_ip_blocked_hash|' diff --git a/MBCPApp/patches/bypass_forced_update_dialog.sh b/MBCPApp/patches/bypass_forced_update_dialog.sh new file mode 100644 index 0000000..c4651b2 --- /dev/null +++ b/MBCPApp/patches/bypass_forced_update_dialog.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# PATCHNAME: Bypass forced update dialog +# MAXVER: 6.4.67 +# MINVER: +# shellcheck disable=SC1091 +. "$DIRPATH"/common.sh + +# Block forced update dialog (does not bypasses GW525) +sed_libapp 's|version_check_update_config|version_check_nonapp_config' +sed_libapp 's|currentVersion|currentMBCPver|' +sed_libapp 's|minVersion|appVersion|' + diff --git a/MBCPApp/patches/bypass_malicious_apps_check.sh b/MBCPApp/patches/bypass_malicious_apps_check.sh new file mode 100644 index 0000000..0042343 --- /dev/null +++ b/MBCPApp/patches/bypass_malicious_apps_check.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# PATCHNAME: Bypass malicious app check +# MAXVER: 6.4.67 +# MINVER: +# shellcheck disable=SC1091 +. "$DIRPATH"/common.sh + +# Bypass malicious apps check +sed_libapp 's|whitelistService|Servicewhitelist|' + diff --git a/MBCPApp/patches/hide_vtap_root_detection_activity.sh b/MBCPApp/patches/hide_vtap_root_detection_activity.sh index df67fc3..6ae3ac9 100644 --- a/MBCPApp/patches/hide_vtap_root_detection_activity.sh +++ b/MBCPApp/patches/hide_vtap_root_detection_activity.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # PATCHNAME: Hide VTAP root detection activity & dialog -# MAXVER: 6.4.66 +# MAXVER: # MINVER: # shellcheck disable=SC1091,SC2016 . "$DIRPATH"/common.sh diff --git a/MBCPApp/patches/remove_invoke_to_mbshield.sh b/MBCPApp/patches/remove_invoke_to_mbshield.sh index b122dec..e26b63d 100644 --- a/MBCPApp/patches/remove_invoke_to_mbshield.sh +++ b/MBCPApp/patches/remove_invoke_to_mbshield.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # PATCHNAME: Remove invoke to mbshield -# MAXVER: 6.4.66 +# MAXVER: # MINVER: 6.4.21 # shellcheck disable=SC1091 . "$DIRPATH"/common.sh diff --git a/MBCPApp/patches/remove_new_zimperium_check.sh b/MBCPApp/patches/remove_new_zimperium_check.sh index affb214..c752260 100644 --- a/MBCPApp/patches/remove_new_zimperium_check.sh +++ b/MBCPApp/patches/remove_new_zimperium_check.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # PATCHNAME: Remove new zimperium check -# MAXVER: 6.4.66 +# MAXVER: # MINVER: 6.4.59 # shellcheck disable=SC1091 . "$DIRPATH"/common.sh diff --git a/MBCPApp/patches/xpe003_fix.sh b/MBCPApp/patches/xpe003_fix.sh new file mode 100644 index 0000000..d149245 --- /dev/null +++ b/MBCPApp/patches/xpe003_fix.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# PATCHNAME: XPE003 Fix +# MAXVER: 6.4.67 +# MINVER: +# shellcheck disable=SC1091 +. "$DIRPATH"/common.sh + +# XPE003 error fixes +sed_libapp 's|isEnableTimeout|isEnableLockout|' +sed_libapp 's|zdefend_config|fua0am0_config|' diff --git a/README.md b/README.md index 0b7e1b4..58a80f3 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,10 @@ |:--------:|:--------------:|:-----------------:| | `Fix outdated VTAP certificate` | Update new VTAP certificate for older app version, so it can work again in future | v6.4.67 ~ v6.4.90 | | `Autopatch strings` | Modify the strings in-app within `libapp.so`, and also fixes some translation typo in-app. | v6.4.0 ~ v6.4.66 | +| `Bypass blacklist IP hashes` | Bypass the block list of some IP hashes. | v6.4.50 ~ v6.4.66 | +| `Bypass forced update dialog` | Bypass forced update dialog from app. | v6.4.0 ~ v6.4.66 | +| `Bypass malicious app check` | Bypass malicious app check from app. | v6.4.10 ~ v6.4.66 | +| `XPE003 Fix` | Fix XPE003 issues when use bypass zimperium patch. | v6.4.56 ~ v6.4.66 | | `Bypass GW934 checksum` | Bypass the GW934 error rolled-out from MB server-side which prevent MBCP users from logging in to app. Only use this after applied all your patch needs. | v6.4.64 ~ v6.4.66 | | `Remove custom profile picture` | Force the use of default profile picture instead of your current one on MB's server side. | v6.4.0 ~ v6.4.66 | | `Restore old 682 lib` | Restore old v6.4.61 `libapp.so` to prevent enforced `quockhanh` theme changes on v6.4.62. | v6.4.62 | From a96b638b0ff8dd4bab8a354160a69cead67c4d1a Mon Sep 17 00:00:00 2001 From: Cuynu Date: Thu, 4 Jun 2026 22:29:58 +0700 Subject: [PATCH 02/45] docs: correct my role no, `developer` is not a good role for me i want maintainer role instead Signed-off-by: Cuynu --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 58a80f3..82babff 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ ## Requirements & Building - Any actual Linux environment or macOS (Arch Linux based recommended) -- Little knowledge about terminal commands +- Knowledge about terminal commands - `android-tools` `wget` for Arch/Fedora based and `android-sdk-platform-tools` for Debian based - `android-platform-tools` for macOS with brew - `git` installed @@ -312,8 +312,6 @@ Early note : When I created @mbbmod channel back in 2023, no one knows it for mo - 02/2026 : MB released `v6.4.85` with enhanced Singalarity eKYC detection (detects `data/adb/modules` and `com.rifsxd.ksunext`), so I created a patch that removed the check. -- 03/2026 : After a long-term pain, Me (author of this project) finally find the right label for myself. This project turned me from just a YouTuber aka tinkerer to a developer who love to writing code. - - 04/2026 : MB discontinued all old active version (v6.4.67 ~ v6.4.91). The current minimum active version is (v6.4.92+). Users must update to newer app or repatch with newer version. @@ -352,6 +350,6 @@ Early note : When I created @mbbmod channel back in 2023, no one knows it for mo - [FlatIcon](https://flaticon.com) for some icons, including search icon, verified badge ## Contributors -- [Cuynu](/cuynu) - developer (also [youtuber](https://youtube.com/@cuynu)) +- [Cuynu](/cuynu) - maintainer - [fukiame](/fukiame) - refactor & other improvements - contributor - [Ngankbakaa](https://github.com/miyukocutee) - contributor From 456089cf7533c02761ecc52c574466099b84017c Mon Sep 17 00:00:00 2001 From: Cuynu Date: Tue, 9 Jun 2026 16:04:26 +0700 Subject: [PATCH 03/45] feat: patches(fix_vtap_cert): allow unlimited app target and specific app target Signed-off-by: Cuynu --- MBCPApp/patches/fix_vtap_cert.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/MBCPApp/patches/fix_vtap_cert.sh b/MBCPApp/patches/fix_vtap_cert.sh index f025bad..a71c7ac 100644 --- a/MBCPApp/patches/fix_vtap_cert.sh +++ b/MBCPApp/patches/fix_vtap_cert.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# PATCHNAME: Fix outdated VTAP certificate -# MAXVER: 6.4.89 +# PATCHNAME: Fix VTAP certificate +# MAXVER: # MINVER: # shellcheck disable=SC1091 . "$DIRPATH"/common.sh @@ -17,8 +17,9 @@ info "Not needed for newer app version (like v6.4.94)" nofwfound() { err "no VTAP firmware in [fixcert] folder found!" info "copy [firmware] and [profile] file to [fixcert] folder to continue." - info "[firmware] and [profile] can be found in [assets], please find from newer app." - info "recommended app : v6.4.94" + info "[firmware] and [profile] can be found in [assets], please find from newer or older app." + info "recommended app : v6.4.94 for fixing v6.4.67 ~ v6.4.91" + info "and v6.4.75 for v6.4.92+ for revert old detection behavior." exit 1 } @@ -35,4 +36,4 @@ cp -f "$DIRPATH"/fixcert/firmware "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ cp -f "$DIRPATH"/fixcert/profile "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ info "Remove [firmware] and [profile] file from [/data/data/com.mbmobile/files] or clear app data" -info "If the app still keep crashing or throwing expired certificate screen." +info "If the app still keep crashing or throwing expired certificate screen or the detection is still the same." From 05c65d15df627c8e0e87adc23f6cc6d9f727787f Mon Sep 17 00:00:00 2001 From: Cuynu Date: Fri, 19 Jun 2026 10:24:36 +0700 Subject: [PATCH 04/45] feat: patches(remove_mbai): adapt newer resources & rename bullsh*t to slop Signed-off-by: Cuynu --- MBCPApp/patches/fix_vtap_cert.sh | 11 +++++------ MBCPApp/patches/remove_mbai.sh | 6 +++++- README.md | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/MBCPApp/patches/fix_vtap_cert.sh b/MBCPApp/patches/fix_vtap_cert.sh index a71c7ac..f025bad 100644 --- a/MBCPApp/patches/fix_vtap_cert.sh +++ b/MBCPApp/patches/fix_vtap_cert.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# PATCHNAME: Fix VTAP certificate -# MAXVER: +# PATCHNAME: Fix outdated VTAP certificate +# MAXVER: 6.4.89 # MINVER: # shellcheck disable=SC1091 . "$DIRPATH"/common.sh @@ -17,9 +17,8 @@ info "Not needed for newer app version (like v6.4.94)" nofwfound() { err "no VTAP firmware in [fixcert] folder found!" info "copy [firmware] and [profile] file to [fixcert] folder to continue." - info "[firmware] and [profile] can be found in [assets], please find from newer or older app." - info "recommended app : v6.4.94 for fixing v6.4.67 ~ v6.4.91" - info "and v6.4.75 for v6.4.92+ for revert old detection behavior." + info "[firmware] and [profile] can be found in [assets], please find from newer app." + info "recommended app : v6.4.94" exit 1 } @@ -36,4 +35,4 @@ cp -f "$DIRPATH"/fixcert/firmware "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ cp -f "$DIRPATH"/fixcert/profile "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ info "Remove [firmware] and [profile] file from [/data/data/com.mbmobile/files] or clear app data" -info "If the app still keep crashing or throwing expired certificate screen or the detection is still the same." +info "If the app still keep crashing or throwing expired certificate screen." diff --git a/MBCPApp/patches/remove_mbai.sh b/MBCPApp/patches/remove_mbai.sh index 1565d30..295b51a 100644 --- a/MBCPApp/patches/remove_mbai.sh +++ b/MBCPApp/patches/remove_mbai.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# PATCHNAME: Remove MB AI Bullshit resources +# PATCHNAME: Remove MB AI Slop resources # MAXVER: # MINVER: 6.4.73 # shellcheck disable=SC1091 @@ -71,3 +71,7 @@ enforcemb # Adapt with new animated search AI logo (v6.4.77+) cp -f 'blob_patches/searchicon/search.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/search_ai.gif' + +# Adapt with more new AI slop icons (v6.5.x) +rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_camera.webp' +rm -rf 'mbapk/mbapk_unpakced/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_photo.webp' diff --git a/README.md b/README.md index 82babff..86f0035 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ | `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.2 | | `Tian37 Fix` | Nuke detection points within Tian37 libraries. | v6.4.87 ~ v6.5.2 | | `Force portrait screen` | Force the screen always portrait on app, especially when launching app. | v6.4.0 ~ v6.5.2 | -| `Remove MB AI Bullsh*t resources` | Remove the bullsh*t MB AI resources from app. | v6.4.74 ~ v6.5.2 | +| `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.2 | | `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.2 | | `Remove invoke to mbshield` | Make app don't invoke to mbshield when opening (MainActivity) and (MBBHomeWidgetQR) only (Hidden for v6.4.67+) | v6.4.22 ~ v6.5.2 | | `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. (Hidden for v6.4.67+) | v6.4.60 ~ v6.5.2 | From 5c821bbe510789f55120dbea7f57772d044d07ba Mon Sep 17 00:00:00 2001 From: Cuynu Date: Fri, 19 Jun 2026 10:24:51 +0700 Subject: [PATCH 05/45] revert "docs: correct my role" this reverts commit a96b638b0ff8dd4bab8a354160a69cead67c4d1a. --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 86f0035..f76487e 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ ## Requirements & Building - Any actual Linux environment or macOS (Arch Linux based recommended) -- Knowledge about terminal commands +- Little knowledge about terminal commands - `android-tools` `wget` for Arch/Fedora based and `android-sdk-platform-tools` for Debian based - `android-platform-tools` for macOS with brew - `git` installed @@ -312,6 +312,8 @@ Early note : When I created @mbbmod channel back in 2023, no one knows it for mo - 02/2026 : MB released `v6.4.85` with enhanced Singalarity eKYC detection (detects `data/adb/modules` and `com.rifsxd.ksunext`), so I created a patch that removed the check. +- 03/2026 : After a long-term pain, Me (author of this project) finally find the right label for myself. This project turned me from just a YouTuber aka tinkerer to a developer who love to writing code. + - 04/2026 : MB discontinued all old active version (v6.4.67 ~ v6.4.91). The current minimum active version is (v6.4.92+). Users must update to newer app or repatch with newer version. @@ -350,6 +352,6 @@ Early note : When I created @mbbmod channel back in 2023, no one knows it for mo - [FlatIcon](https://flaticon.com) for some icons, including search icon, verified badge ## Contributors -- [Cuynu](/cuynu) - maintainer +- [Cuynu](/cuynu) - developer (also [youtuber](https://youtube.com/@cuynu)) - [fukiame](/fukiame) - refactor & other improvements - contributor - [Ngankbakaa](https://github.com/miyukocutee) - contributor From 8f3080e7df52d4aef64081c6e6ff607e6178a5cd Mon Sep 17 00:00:00 2001 From: Cuynu Date: Fri, 19 Jun 2026 10:26:39 +0700 Subject: [PATCH 06/45] docs: bump suggested version to v6.5.5 Signed-off-by: Cuynu --- README.md | 62 +++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index f76487e..e187a5c 100644 --- a/README.md +++ b/README.md @@ -58,37 +58,37 @@ | ⚙️ 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.2 | -| `Adaptive launcher icon` | Adds the adaptive & themed icon support to the app. Thanks to @fukiame ! | v6.4.0 ~ v6.5.2 | -| `Proper notification icon` | Temporary fixes for the app notification icon. Thanks to @fukiame ! | v6.4.0 ~ v6.5.2 | -| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. (Hidden for v6.4.67+) | v6.4.0 ~ v6.5.2 | -| `Better custom background screen` | Replace the preview custom background from awful to useful. | v6.4.84 ~ v6.5.2 | -| `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.5.2 | -| `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.5.2 | -| `Custom VTAP screen` | Warn users about critical VTAP trigger error from app. | v6.4.53 ~ v6.5.2 | -| `Custom sub-badge` | Replace original animated promotion badge with static badge for Basic users | v6.4.44 ~ v6.5.2 | -| `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.2 | -| `Tian37 Fix` | Nuke detection points within Tian37 libraries. | v6.4.87 ~ v6.5.2 | -| `Force portrait screen` | Force the screen always portrait on app, especially when launching app. | v6.4.0 ~ v6.5.2 | -| `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.2 | -| `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.2 | -| `Remove invoke to mbshield` | Make app don't invoke to mbshield when opening (MainActivity) and (MBBHomeWidgetQR) only (Hidden for v6.4.67+) | v6.4.22 ~ v6.5.2 | -| `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. (Hidden for v6.4.67+) | v6.4.60 ~ v6.5.2 | -| `Remove built-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.5.2 | -| `Modify app theme` | Modify the built-in app theme from original one to other themes. | v6.4.30 ~ v6.5.2 | -| `Remove garbage permission and activities` | Removes tracking permission & activities from app. | v6.4.0 ~ v6.5.2 | -| `Revert old eMBee logo` | Revert old eMBee logo, especially on product consultation options. | v6.4.53 ~ v6.5.2 | -| `Remove useless libraries` | Remove the useless libraries from app, only for v6.4.67+ | v6.4.67 ~ v6.5.2 | -| `Remove animated QR background` | Remove the animated QR background from bottom navigation bar and replace with white background. | v6.4.43 ~ v6.5.2 | -| `Remove VNPAY VMB20` | Remove the VNPAY Airplane related activities. | v6.4.55 ~ v6.5.2 | -| `Restore old registration resources` | Restore old resources on `onboarding` page. | v6.4.48 ~ v6.5.2 | -| `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). (Hidden for v6.4.67+) | v6.4.0 ~ v6.5.2 | -| `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. (Hidden for v6.4.67+) | v6.4.53 ~ v6.5.2 | -| `Remove protection shield` | Remove the MIC protection shield on profile picture and login screen. (not app protection) | v6.4.0 ~ v6.5.2 | -| `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.2 | -| `Set targetSdkVersion to 34` | Set the `targetSdkVersion` to 34 (Android 14) to prevent UI issues on some activities. | v6.4.10 ~ v6.5.2 | -| `Add modified resources` | Adds the specific strings for MBCP on eKYC phases, and modify the DigiBank logo. | v6.4.0 ~ v6.5.2 | -| `Add anime resources` | Adds anime-related resources to some components inside app. | v6.4.45 ~ v6.5.2 | +| `Add verified badge` | Replaces the MIC protection shield with verified badge to make it looks more cute :3 | v6.4.0 ~ v6.5.5 | +| `Adaptive launcher icon` | Adds the adaptive & themed icon support to the app. Thanks to @fukiame ! | v6.4.0 ~ v6.5.5 | +| `Proper notification icon` | Temporary fixes for the app notification icon. Thanks to @fukiame ! | v6.4.0 ~ v6.5.5 | +| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. (Hidden for v6.4.67+) | v6.4.0 ~ v6.5.5 | +| `Better custom background screen` | Replace the preview custom background from awful to useful. | v6.4.84 ~ v6.5.5 | +| `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.5.5 | +| `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.5.5 | +| `Custom VTAP screen` | Warn users about critical VTAP trigger error from app. | v6.4.53 ~ v6.5.5 | +| `Custom sub-badge` | Replace original animated promotion badge with static badge for Basic users | v6.4.44 ~ v6.5.5 | +| `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.5 | +| `Tian37 Fix` | Nuke detection points within Tian37 libraries. | v6.4.87 ~ v6.5.5 | +| `Force portrait screen` | Force the screen always portrait on app, especially when launching app. | v6.4.0 ~ v6.5.5 | +| `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.5 | +| `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.5 | +| `Remove invoke to mbshield` | Make app don't invoke to mbshield when opening (MainActivity) and (MBBHomeWidgetQR) only (Hidden for v6.4.67+) | v6.4.22 ~ v6.5.5 | +| `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. (Hidden for v6.4.67+) | v6.4.60 ~ v6.5.5 | +| `Remove built-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.5.5 | +| `Modify app theme` | Modify the built-in app theme from original one to other themes. | v6.4.30 ~ v6.5.5 | +| `Remove garbage permission and activities` | Removes tracking permission & activities from app. | v6.4.0 ~ v6.5.5 | +| `Revert old eMBee logo` | Revert old eMBee logo, especially on product consultation options. | v6.4.53 ~ v6.5.5 | +| `Remove useless libraries` | Remove the useless libraries from app, only for v6.4.67+ | v6.4.67 ~ v6.5.5 | +| `Remove animated QR background` | Remove the animated QR background from bottom navigation bar and replace with white background. | v6.4.43 ~ v6.5.5 | +| `Remove VNPAY VMB20` | Remove the VNPAY Airplane related activities. | v6.4.55 ~ v6.5.5 | +| `Restore old registration resources` | Restore old resources on `onboarding` page. | v6.4.48 ~ v6.5.5 | +| `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). (Hidden for v6.4.67+) | v6.4.0 ~ v6.5.5 | +| `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. (Hidden for v6.4.67+) | v6.4.53 ~ v6.5.5 | +| `Remove protection shield` | Remove the MIC protection shield on profile picture and login screen. (not app protection) | v6.4.0 ~ v6.5.5 | +| `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.5 | +| `Set targetSdkVersion to 34` | Set the `targetSdkVersion` to 34 (Android 14) to prevent UI issues on some activities. | v6.4.10 ~ v6.5.5 | +| `Add modified resources` | Adds the specific strings for MBCP on eKYC phases, and modify the DigiBank logo. | v6.4.0 ~ v6.5.5 | +| `Add anime resources` | Adds anime-related resources to some components inside app. | v6.4.45 ~ v6.5.5 | From 74ac78f682280bba96a269cf5adee4652f7ee466 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Tue, 9 Jun 2026 16:04:26 +0700 Subject: [PATCH 07/45] feat: patches(fix_vtap_cert): allow unlimited app target and specific app target Signed-off-by: Cuynu --- MBCPApp/patches/fix_vtap_cert.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/MBCPApp/patches/fix_vtap_cert.sh b/MBCPApp/patches/fix_vtap_cert.sh index f025bad..a71c7ac 100644 --- a/MBCPApp/patches/fix_vtap_cert.sh +++ b/MBCPApp/patches/fix_vtap_cert.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# PATCHNAME: Fix outdated VTAP certificate -# MAXVER: 6.4.89 +# PATCHNAME: Fix VTAP certificate +# MAXVER: # MINVER: # shellcheck disable=SC1091 . "$DIRPATH"/common.sh @@ -17,8 +17,9 @@ info "Not needed for newer app version (like v6.4.94)" nofwfound() { err "no VTAP firmware in [fixcert] folder found!" info "copy [firmware] and [profile] file to [fixcert] folder to continue." - info "[firmware] and [profile] can be found in [assets], please find from newer app." - info "recommended app : v6.4.94" + info "[firmware] and [profile] can be found in [assets], please find from newer or older app." + info "recommended app : v6.4.94 for fixing v6.4.67 ~ v6.4.91" + info "and v6.4.75 for v6.4.92+ for revert old detection behavior." exit 1 } @@ -35,4 +36,4 @@ cp -f "$DIRPATH"/fixcert/firmware "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ cp -f "$DIRPATH"/fixcert/profile "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ info "Remove [firmware] and [profile] file from [/data/data/com.mbmobile/files] or clear app data" -info "If the app still keep crashing or throwing expired certificate screen." +info "If the app still keep crashing or throwing expired certificate screen or the detection is still the same." From 34d379a7c1fbdae9cfb4ca2d9800bc5f029e306c Mon Sep 17 00:00:00 2001 From: Cuynu Date: Fri, 19 Jun 2026 10:32:35 +0700 Subject: [PATCH 08/45] fix: patches(fix_vtap_cert): do not throw nofwfound if no `profile` found also skip copying `profile` if it not found. Signed-off-by: Cuynu --- MBCPApp/patches/fix_vtap_cert.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/MBCPApp/patches/fix_vtap_cert.sh b/MBCPApp/patches/fix_vtap_cert.sh index a71c7ac..4645abd 100644 --- a/MBCPApp/patches/fix_vtap_cert.sh +++ b/MBCPApp/patches/fix_vtap_cert.sh @@ -27,13 +27,11 @@ mkdir -p "$DIRPATH"/fixcert/ [ ! -f "$DIRPATH"/fixcert/firmware ] && nofwfound -[ ! -f "$DIRPATH"/fixcert/profile ] && nofwfound - # fw cp -f "$DIRPATH"/fixcert/firmware "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ # profile -cp -f "$DIRPATH"/fixcert/profile "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ +[ -f "$DIRPATH"/fixcert/profile ] && cp -f "$DIRPATH"/fixcert/profile "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ info "Remove [firmware] and [profile] file from [/data/data/com.mbmobile/files] or clear app data" info "If the app still keep crashing or throwing expired certificate screen or the detection is still the same." From 1fc18698b69c8e87d75cadbcf56a1ab9ac2846e7 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Fri, 19 Jun 2026 10:51:20 +0700 Subject: [PATCH 09/45] fix: patches(remove_mbai): typo in path Signed-off-by: Cuynu --- MBCPApp/patches/remove_mbai.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MBCPApp/patches/remove_mbai.sh b/MBCPApp/patches/remove_mbai.sh index 295b51a..251189a 100644 --- a/MBCPApp/patches/remove_mbai.sh +++ b/MBCPApp/patches/remove_mbai.sh @@ -74,4 +74,4 @@ cp -f 'blob_patches/searchicon/search.png' 'mbapk/mbapk_unpacked/root/assets/flu # Adapt with more new AI slop icons (v6.5.x) rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_camera.webp' -rm -rf 'mbapk/mbapk_unpakced/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_photo.webp' +rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_photo.webp' From 316d2a8476114cc20f79e2317dc0489280553a64 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sat, 20 Jun 2026 11:21:27 +0700 Subject: [PATCH 10/45] docs: bring back `fix_vtap_cert` to patches list Signed-off-by: Cuynu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e187a5c..1c1af81 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ | `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.5 | | `Tian37 Fix` | Nuke detection points within Tian37 libraries. | v6.4.87 ~ v6.5.5 | | `Force portrait screen` | Force the screen always portrait on app, especially when launching app. | v6.4.0 ~ v6.5.5 | +| `Fix VTAP certificate` | Update or downgrade VTAP certificate for older/newer app version, so it can work again in future. | v6.4.67 ~ v6.5.5 | | `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.5 | | `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.5 | | `Remove invoke to mbshield` | Make app don't invoke to mbshield when opening (MainActivity) and (MBBHomeWidgetQR) only (Hidden for v6.4.67+) | v6.4.22 ~ v6.5.5 | @@ -102,7 +103,6 @@ | ⚙️ Patch | 📜 Description | 🏦 Suggested version | |:--------:|:--------------:|:-----------------:| -| `Fix outdated VTAP certificate` | Update new VTAP certificate for older app version, so it can work again in future | v6.4.67 ~ v6.4.90 | | `Autopatch strings` | Modify the strings in-app within `libapp.so`, and also fixes some translation typo in-app. | v6.4.0 ~ v6.4.66 | | `Bypass blacklist IP hashes` | Bypass the block list of some IP hashes. | v6.4.50 ~ v6.4.66 | | `Bypass forced update dialog` | Bypass forced update dialog from app. | v6.4.0 ~ v6.4.66 | From 73e9bd4def47062eb7478601ca59a737f525b0d7 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sat, 27 Jun 2026 18:11:18 +0700 Subject: [PATCH 11/45] feat: patcher(mbcpapp.sh): rename useless to zimperium local model Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 2318f83..5152be9 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -147,7 +147,7 @@ unpack_mbcp() { unzip -l mbapk/MBOriginal.apk | grep -oH "flutter_assets" > /dev/null 2>&1 && good "Current app is Flutter!" || { err "Current converted app is not Flutter, or too outdated, cannot continue! Deleting files..." ; rm -rf mbapk/* ; return 1 ; } unzip -l mbapk/MBOriginal.apk | grep -oH "ic-appmb.ttf" > /dev/null 2>&1 && good "Current converted app is MBBank! Continuing" || { err "Current converted app is NOT MBBank! Deleting files..." ; rm -rf mbapk/* ; return 1 ; } - info "Cleaning useless files..." + info "Removing local zimperium detection models..." rm -rf 'mbapk/mbapk_unpacked/root/assets/_4A9w8flncUrhDOG8dyqLi_azBTYT3PlSXz0hiCzRQA_' rm -rf 'mbapk/mbapk_unpacked/root/assets/0QDl12M5S2hKxoKF4cNI4kEX1qDQRMiOd34TXjSjy4M_' rm -rf 'mbapk/mbapk_unpacked/root/assets/2GcdAWdkXGgxPfHSIhzLkrkf2LU6Z_cuZfUWnczoEHw_' From ac845ff247fd45d6c94788afd0d14c8b6ff3a2e0 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 28 Jun 2026 15:27:23 +0700 Subject: [PATCH 12/45] chore: patcher(mbcpapp.sh): rename mbshield to zshield mbshield does not exist, MB does not have any such shield, they used zShield from Zimperium since v6.4.22, and rename the branding from zShield to [bank name + shield] with new MB v6.5.7 update, there is a major changes to how zShield work, they randomized the name, not [mbshield] anymore so I used regex* to look for it, more effective. Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 5152be9..1324d96 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -51,11 +51,11 @@ COMMIT="$(git rev-parse --short HEAD)" BRANCH="$(git rev-parse --abbrev-ref HEAD)" clear -mbshield_found='MBShield found on [mbapk_unpacked/assets/mbshield.szip] !!! -Patching operation is limited due to MBShield :( +zshield_found='zShield found on [mbapk_unpacked/assets/mbshield.szip] !!! +Patching operation is limited due to zShield :( You need to extract assets from Android device for some patching operation to works properly !!!' -mbshield_not_found='MBShield NOT found on [mbapk_unpacked/assets/] +zshield_not_found='zShield NOT found on [mbapk_unpacked/assets/] Patching operation are all not limited at all ! Asset extraction are not needed :)' @@ -262,14 +262,14 @@ successunpack() { fi } -check_mbshield() { +check_zshield() { is_unpacked || return 1 - if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ] + if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/*.szip ] then - info "$mbshield_found" + info "$zshield_found" iszdefend else - info "$mbshield_not_found" + info "$zshield_not_found" fi } @@ -312,7 +312,7 @@ echo App status : $(successunpack) echo ------------------------------------------------------------- # Main functions PS3='Please select options to continue : ' -select opt in 'Pull latest commit' 'Unpack APK' 'Convert apks to apk' 'Repack APK' 'Install patched app' 'MBShield Check' 'Patch App' 'Legacy patches' 'Extract assets [ROOT]' 'Launch MBCPApp/MBBank' 'Force close MBCPApp/MBBank' 'Clear MBCPApp/MBBank app data' 'Clean patched app' 'Download/update tools' 'Restart script' 'Exit' +select opt in 'Pull latest commit' 'Unpack APK' 'Convert apks to apk' 'Repack APK' 'Install patched app' 'zShield Check' 'Patch App' 'Legacy patches' 'Extract assets [ROOT]' 'Launch MBCPApp/MBBank' 'Force close MBCPApp/MBBank' 'Clear MBCPApp/MBBank app data' 'Clean patched app' 'Download/update tools' 'Restart script' 'Exit' do case "$opt" in 'Download/update tools' ) download_tools ;; @@ -320,7 +320,7 @@ do 'Repack APK' ) repack_mbcp ;; 'Patch App' ) run_patcher ;; 'Legacy patches' ) run_legacy_patcher ;; - 'MBShield Check' ) check_mbshield ;; + 'zShield Check' ) check_zshield ;; 'Convert apks to apk' ) convert_apks ;; 'Extract assets [ROOT]' ) is_unpacked || exit 1 @@ -341,9 +341,9 @@ do elif [ "$opt" == 'Extract assets' ]; then if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ] then - if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ] + if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/*.szip ] then - info "MBShield found ! Continuing !!!" + info "zShield found ! Continuing !!!" warn 'You MUST grant root access to [com.android.shell] in order to extract assets !' info 'Trying to extract assets...' adb shell am force-stop com.mbmobile From 804e4aeb75120b668772f872f07a7694f3e0b9fe Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 28 Jun 2026 15:56:34 +0700 Subject: [PATCH 13/45] chore: patcher/patches(etc): move from mbshield to zShield Signed-off-by: Cuynu --- MBCPApp/legacy_patch.sh | 6 +++--- MBCPApp/mbcpapp.sh | 4 ++-- ...ve_invoke_to_mbshield.sh => remove_invoke_to_zshield.sh} | 6 ++++-- README.md | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) rename MBCPApp/patches/{remove_invoke_to_mbshield.sh => remove_invoke_to_zshield.sh} (87%) diff --git a/MBCPApp/legacy_patch.sh b/MBCPApp/legacy_patch.sh index 3316c0a..27c1139 100755 --- a/MBCPApp/legacy_patch.sh +++ b/MBCPApp/legacy_patch.sh @@ -30,10 +30,10 @@ do echo "Applying patch [Bypass signature check]..." if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ] then - # Checks for MBShield, if exists then exit function - if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ] + # Checks for zShield (mbshield is zShield), if exists then exit function + if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/*.szip ] then - info "MBShield found on unpacked APK ! Bypass signature checks won't be possible if MBShield is present on current unpacked APK !" + info "zShield found on unpacked APK ! Bypass signature checks won't be possible if zShield is present on current unpacked APK !" info "Please use supported version !!!" echo "For React Native : MBBank/MB Lite v1.0 up to v6.3.11" echo "For Flutter : MBBank v6.4.0 up to v6.4.21" diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 1324d96..c863148 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -51,7 +51,7 @@ COMMIT="$(git rev-parse --short HEAD)" BRANCH="$(git rev-parse --abbrev-ref HEAD)" clear -zshield_found='zShield found on [mbapk_unpacked/assets/mbshield.szip] !!! +zshield_found='zShield found on [mbapk_unpacked/assets/*.szip] !!! Patching operation is limited due to zShield :( You need to extract assets from Android device for some patching operation to works properly !!!' @@ -386,7 +386,7 @@ then info 'Removing leftover assets...' adb shell rm -rf /sdcard/assets && good "Removed leftover assets !" || err "Failed to remove leftover assets from device !" else - info "MBShield not found ! No need to extract assets !" + info "zShield not found ! No need to extract assets !" fi else err "Can't find [mbapk/mbapk_unpacked] folder, cannot continue ! " diff --git a/MBCPApp/patches/remove_invoke_to_mbshield.sh b/MBCPApp/patches/remove_invoke_to_zshield.sh similarity index 87% rename from MBCPApp/patches/remove_invoke_to_mbshield.sh rename to MBCPApp/patches/remove_invoke_to_zshield.sh index e26b63d..b3c957b 100644 --- a/MBCPApp/patches/remove_invoke_to_mbshield.sh +++ b/MBCPApp/patches/remove_invoke_to_zshield.sh @@ -1,11 +1,13 @@ #!/usr/bin/env bash -# PATCHNAME: Remove invoke to mbshield +# PATCHNAME: Remove invoke to zShield # MAXVER: # MINVER: 6.4.21 # shellcheck disable=SC1091 . "$DIRPATH"/common.sh -warn "Currently only support remove invoke mbshield to [io.flutter.plugins.MainActivity] and [MBBHomeWidgetQR] !!!" +# mbshield is zShield, not mbshield, zimperium renamed it to bank name + shield + +warn "Currently only support remove invoke zShield to [io.flutter.plugins.MainActivity] and [MBBHomeWidgetQR] !!!" info "Copying..." if [[ -f mbapk/mbapk_unpacked/smali/classes4/io/flutter/plugins/MainActivity.smali ]]; then info "Flutter found on classes4 !!" diff --git a/README.md b/README.md index 1c1af81..d29ff60 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ | `Fix VTAP certificate` | Update or downgrade VTAP certificate for older/newer app version, so it can work again in future. | v6.4.67 ~ v6.5.5 | | `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.5 | | `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.5 | -| `Remove invoke to mbshield` | Make app don't invoke to mbshield when opening (MainActivity) and (MBBHomeWidgetQR) only (Hidden for v6.4.67+) | v6.4.22 ~ v6.5.5 | +| `Remove invoke to zShield` | Make the app stop invoking to zShield when opening (MainActivity) and (MBBHomeWidgetQR) only (Hidden for v6.4.67+) | v6.4.22 ~ v6.5.5 | | `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. (Hidden for v6.4.67+) | v6.4.60 ~ v6.5.5 | | `Remove built-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.5.5 | | `Modify app theme` | Modify the built-in app theme from original one to other themes. | v6.4.30 ~ v6.5.5 | From ae8eeda2db0ba0e02492bfbe4bc2efa6fde7fa23 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 28 Jun 2026 16:30:43 +0700 Subject: [PATCH 14/45] feat: patcher(mbcpapp.sh): use `--no-check-certificate` flag for wget fixes download error for some Mac machines, confirmed working with my Intel Mac Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index c863148..a794d0f 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -64,8 +64,8 @@ download_tools() { apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.8/APKEditor-1.4.8.jar" cd tools && rm -rf ./*.jar - wget -q --show-progress -O apktool.jar "$apktool_link" || err "downloading apktool failed" - wget -q --show-progress -O apkeditor.jar "$apkeditor_link" || err "downloading apkeditor failed" + wget -q --no-check-certificate --show-progress -O apktool.jar "$apktool_link" || err "downloading apktool failed" + wget -q --no-check-certificate --show-progress -O apkeditor.jar "$apkeditor_link" || err "downloading apkeditor failed" cd .. } From 1765a67d97f923473c2fe739fd8448164617629d Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 28 Jun 2026 17:21:38 +0700 Subject: [PATCH 15/45] feat: patcher/patches(mbcpapp.sh/remove_new_zimperium_check.sh): adapt dumping sha256 hash for new zimperium library exist since MB v6.5.7+ added condition check whether if older zimperium lib is present or not before dumping limit zimperium bypass patch to v6.5.6 or older temporary Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 25 ++++++++++++++----- MBCPApp/patches/remove_new_zimperium_check.sh | 2 +- MBCPApp/patches/whereis_criticalpatches.sh | 19 -------------- 3 files changed, 20 insertions(+), 26 deletions(-) delete mode 100644 MBCPApp/patches/whereis_criticalpatches.sh diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index a794d0f..59a0c88 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -117,12 +117,25 @@ copyHash() { # libapp flutter sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libapp.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libapp_arm64_sum && good "Success dump sha256 libapp (arm64) hash to [mbapk/original_hash] !" sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libapp.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libapp_armv7a_sum && good "Success dump sha256 libapp (armv7a) hash to [mbapk/original_hash] !" - # mbshield - sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libmbshield.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libmbshield_arm64_sum && good "Success dump sha256 libmbshield (arm64) hash to [mbapk/original_hash] !" - sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libmbshield.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libmbshield_armv7a_sum && good "Success dump sha256 libmbshield (armv7a) hash to [mbapk/original_hash] !" - # zimperium - sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_arm64_sum && good "Success dump sha256 zimperium (arm64) hash to [mbapk/original_hash] !" - sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_armv7_sum && good "Success dump sha256 zimperium (armv7a) hash to [mbapk/original_hash] !" + + # mbshield (zShield) + # exist in MB v6.4.22 ~ v6.5.6 (except v6.4.45 versionCode 658) + [ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libmbshield.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libmbshield.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libmbshield_arm64_sum && good "Success dump sha256 libmbshield (arm64) hash to [mbapk/original_hash] !" + [ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libmbshield.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libmbshield.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libmbshield_armv7a_sum && good "Success dump sha256 libmbshield (armv7a) hash to [mbapk/original_hash] !" + + # new zshield + zdefend (v6.5.7+) + [ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libempirememorial.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libempirememorial.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libempirememorial_arm64_sum && good "Success dump sha256 libempirememorial (arm64) hash to [mbapk/original_hash] !" + [ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libempirememorial.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libempirememorial.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libempirememorial_armv7a_sum && good "Success dump sha256 libempirememorial (armv7a) hash to [mbapk/original_hash] !" + + # built in flutter zdefend plugin lib call, it might call to libempirememorial.so + [ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libcode_arm64_sum && good "Success dump sha256 libcode (arm64) hash to [mbapk/original_hash] !" + [ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libcode.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libcode.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libcode_armv7a_sum && good "Success dump sha256 libcode (armv7a) hash to [mbapk/original_hash]" + + # old zimperium zdefend + # exist in MB v6.4.72 ~ v6.5.6 + [ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_arm64_sum && good "Success dump sha256 zimperium (arm64) hash to [mbapk/original_hash] !" + [ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_armv7_sum && good "Success dump sha256 zimperium (armv7a) hash to [mbapk/original_hash] !" + # dex files sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/.cache/classes.dex | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/dex1_sum && good "Success dump sha256 dex1 hash to [mbapk/original_hash]!" sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/.cache/classes2.dex | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/dex2_sum && good "Success dump sha256 dex2 hash to [mbapk/original_hash] !" diff --git a/MBCPApp/patches/remove_new_zimperium_check.sh b/MBCPApp/patches/remove_new_zimperium_check.sh index c752260..0b9781a 100644 --- a/MBCPApp/patches/remove_new_zimperium_check.sh +++ b/MBCPApp/patches/remove_new_zimperium_check.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # PATCHNAME: Remove new zimperium check -# MAXVER: +# MAXVER: 6.5.5 # MINVER: 6.4.59 # shellcheck disable=SC1091 . "$DIRPATH"/common.sh diff --git a/MBCPApp/patches/whereis_criticalpatches.sh b/MBCPApp/patches/whereis_criticalpatches.sh deleted file mode 100644 index 68e9bd1..0000000 --- a/MBCPApp/patches/whereis_criticalpatches.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -# PATCHNAME: Where is VTAP & Zimperium bypass -# MAXVER: -# MINVER: -# shellcheck disable=SC1091 -. "$DIRPATH"/common.sh - -echo "--------------Why Zimperium and VTAP bypass patches disappeared?--------------" -warn "VTAP and Zimperium bypass is restricted to v6.4.66 only due to MB limitations to v6.4.67+" -info "They added stronger check, it uses SHA-256 to check all of dex files and libraries, if it does not match\n" -info "The app will refuse to login with GW934 error. There is already a bypass in the past, but is fixed." -info "A newer bypass is planned, but I don't have time. I am a student, and in 12th grade, time does not allow me." -echo "------------------------------------------------------------------------------" -echo "So what next???" -echo "From Patcher, just apply other patches, and repack APK" -echo "Since the local root detection model is deleted, you can use my MBZDefend-Fix module" -echo "It uses another way to bypass Zimperium check, and still works :)" -echo "For VTAP bypass? No way, but it is still easily to hide. It will comeback once I achieve another checksum bypass." -exit 169 From cc5316f9015b667704e8df4702a89ad0d43024c3 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 28 Jun 2026 17:29:32 +0700 Subject: [PATCH 16/45] feat: patcher(mbcpapp.sh): dump Tian37 lib sha256 hashes this is not needed with older target ( --- MBCPApp/mbcpapp.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 59a0c88..b0d1bbc 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -136,6 +136,10 @@ copyHash() { [ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_arm64_sum && good "Success dump sha256 zimperium (arm64) hash to [mbapk/original_hash] !" [ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_armv7_sum && good "Success dump sha256 zimperium (armv7a) hash to [mbapk/original_hash] !" + # Tian37 (since MB v6.4.86+) + [ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libanTian37.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libanTian37.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libanTian37_arm64_sum && good "Success dump libanTian37 (arm64) hash to [mbapk/original_hash] !" + [ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libanTian37.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libanTian37.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libanTian37_armv7a_sum && good "Success dump libanTian37 (armv7a) hash to [mbapk/original_hash] !" + # dex files sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/.cache/classes.dex | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/dex1_sum && good "Success dump sha256 dex1 hash to [mbapk/original_hash]!" sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/.cache/classes2.dex | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/dex2_sum && good "Success dump sha256 dex2 hash to [mbapk/original_hash] !" From 667940ccbeb005e376fb7a533b3a9ab537f56fbd Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 28 Jun 2026 17:40:41 +0700 Subject: [PATCH 17/45] chore: patcher(mbcpapp.sh): move from mbshield to zshield for resources extraction Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index b0d1bbc..3df559e 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -344,7 +344,7 @@ do isvcm1 iszdefend info "If you have v6.4.98 or newer, app resource extraction is no longer possible. Please use older version." - info 'To extract encrypted assets [if current app has MBShield protection] you need rooted device' + info 'To extract encrypted assets [if current app has zShield protection] you need rooted device' info 'And trigger a built-in app assets extraction !' echo ------------------------------------------- PS3='Select options continue, or [3] to quit : ' From 31f3325df349aa5d5b3148f520ce45316a42d8c1 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 28 Jun 2026 18:09:54 +0700 Subject: [PATCH 18/45] docs: bump suggested version to v6.5.6 Signed-off-by: Cuynu --- README.md | 64 +++++++++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index d29ff60..7af3ff8 100644 --- a/README.md +++ b/README.md @@ -58,38 +58,38 @@ | ⚙️ 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.5 | -| `Adaptive launcher icon` | Adds the adaptive & themed icon support to the app. Thanks to @fukiame ! | v6.4.0 ~ v6.5.5 | -| `Proper notification icon` | Temporary fixes for the app notification icon. Thanks to @fukiame ! | v6.4.0 ~ v6.5.5 | -| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. (Hidden for v6.4.67+) | v6.4.0 ~ v6.5.5 | -| `Better custom background screen` | Replace the preview custom background from awful to useful. | v6.4.84 ~ v6.5.5 | -| `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.5.5 | -| `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.5.5 | -| `Custom VTAP screen` | Warn users about critical VTAP trigger error from app. | v6.4.53 ~ v6.5.5 | -| `Custom sub-badge` | Replace original animated promotion badge with static badge for Basic users | v6.4.44 ~ v6.5.5 | -| `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.5 | -| `Tian37 Fix` | Nuke detection points within Tian37 libraries. | v6.4.87 ~ v6.5.5 | -| `Force portrait screen` | Force the screen always portrait on app, especially when launching app. | v6.4.0 ~ v6.5.5 | -| `Fix VTAP certificate` | Update or downgrade VTAP certificate for older/newer app version, so it can work again in future. | v6.4.67 ~ v6.5.5 | -| `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.5 | -| `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.5 | -| `Remove invoke to zShield` | Make the app stop invoking to zShield when opening (MainActivity) and (MBBHomeWidgetQR) only (Hidden for v6.4.67+) | v6.4.22 ~ v6.5.5 | -| `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. (Hidden for v6.4.67+) | v6.4.60 ~ v6.5.5 | -| `Remove built-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.5.5 | -| `Modify app theme` | Modify the built-in app theme from original one to other themes. | v6.4.30 ~ v6.5.5 | -| `Remove garbage permission and activities` | Removes tracking permission & activities from app. | v6.4.0 ~ v6.5.5 | -| `Revert old eMBee logo` | Revert old eMBee logo, especially on product consultation options. | v6.4.53 ~ v6.5.5 | -| `Remove useless libraries` | Remove the useless libraries from app, only for v6.4.67+ | v6.4.67 ~ v6.5.5 | -| `Remove animated QR background` | Remove the animated QR background from bottom navigation bar and replace with white background. | v6.4.43 ~ v6.5.5 | -| `Remove VNPAY VMB20` | Remove the VNPAY Airplane related activities. | v6.4.55 ~ v6.5.5 | -| `Restore old registration resources` | Restore old resources on `onboarding` page. | v6.4.48 ~ v6.5.5 | -| `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). (Hidden for v6.4.67+) | v6.4.0 ~ v6.5.5 | -| `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. (Hidden for v6.4.67+) | v6.4.53 ~ v6.5.5 | -| `Remove protection shield` | Remove the MIC protection shield on profile picture and login screen. (not app protection) | v6.4.0 ~ v6.5.5 | -| `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.5 | -| `Set targetSdkVersion to 34` | Set the `targetSdkVersion` to 34 (Android 14) to prevent UI issues on some activities. | v6.4.10 ~ v6.5.5 | -| `Add modified resources` | Adds the specific strings for MBCP on eKYC phases, and modify the DigiBank logo. | v6.4.0 ~ v6.5.5 | -| `Add anime resources` | Adds anime-related resources to some components inside app. | v6.4.45 ~ v6.5.5 | +| `Add verified badge` | Replaces the MIC protection shield with verified badge to make it looks more cute :3 | v6.4.0 ~ v6.5.6 | +| `Adaptive launcher icon` | Adds the adaptive & themed icon support to the app. Thanks to @fukiame ! | v6.4.0 ~ v6.5.6 | +| `Proper notification icon` | Temporary fixes for the app notification icon. Thanks to @fukiame ! | v6.4.0 ~ v6.5.6 | +| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. (Hidden for v6.4.67+) | v6.4.0 ~ v6.5.6 | +| `Better custom background screen` | Replace the preview custom background from awful to useful. | v6.4.84 ~ v6.5.6 | +| `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.5.6 | +| `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.5.6 | +| `Custom VTAP screen` | Warn users about critical VTAP trigger error from app. | v6.4.53 ~ v6.5.6 | +| `Custom sub-badge` | Replace original animated promotion badge with static badge for Basic users | v6.4.44 ~ v6.5.6 | +| `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.6 | +| `Tian37 Fix` | Nuke detection points within Tian37 libraries. | v6.4.87 ~ v6.5.6 | +| `Force portrait screen` | Force the screen always portrait on app, especially when launching app. | v6.4.0 ~ v6.5.6 | +| `Fix VTAP certificate` | Update or downgrade VTAP certificate for older/newer app version, so it can work again in future. | v6.4.67 ~ v6.5.6 | +| `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.6 | +| `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.6 | +| `Remove invoke to zShield` | Make the app stop invoking to zShield when opening (MainActivity) and (MBBHomeWidgetQR) only (Hidden for v6.4.67+) | v6.4.22 ~ v6.5.6 | +| `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. (Hidden for v6.4.67+) | v6.4.60 ~ v6.5.6 | +| `Remove built-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.5.6 | +| `Modify app theme` | Modify the built-in app theme from original one to other themes. | v6.4.30 ~ v6.5.6 | +| `Remove garbage permission and activities` | Removes tracking permission & activities from app. | v6.4.0 ~ v6.5.6 | +| `Revert old eMBee logo` | Revert old eMBee logo, especially on product consultation options. | v6.4.53 ~ v6.5.6 | +| `Remove useless libraries` | Remove the useless libraries from app, only for v6.4.67+ | v6.4.67 ~ v6.5.6 | +| `Remove animated QR background` | Remove the animated QR background from bottom navigation bar and replace with white background. | v6.4.43 ~ v6.5.6 | +| `Remove VNPAY VMB20` | Remove the VNPAY Airplane related activities. | v6.4.55 ~ v6.5.6 | +| `Restore old registration resources` | Restore old resources on `onboarding` page. | v6.4.48 ~ v6.5.6 | +| `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). (Hidden 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. (Hidden for v6.4.67+) | v6.4.53 ~ v6.5.6 | +| `Remove protection shield` | Remove the MIC protection shield on profile picture and login screen. (not app protection) | v6.4.0 ~ v6.5.6 | +| `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.6 | +| `Set targetSdkVersion to 34` | Set the `targetSdkVersion` to 34 (Android 14) to prevent UI issues on some activities. | v6.4.10 ~ v6.5.6 | +| `Add modified resources` | Adds the specific strings for MBCP on eKYC phases, and modify the DigiBank logo. | v6.4.0 ~ v6.5.6 | +| `Add anime resources` | Adds anime-related resources to some components inside app. | v6.4.45 ~ v6.5.6 | From a0e0b5492a8083ae5e641ba7a1e1d7bb0d59ae35 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 29 Jun 2026 00:08:27 +0700 Subject: [PATCH 19/45] fix: patcher(mbcpapp.sh): don't delete critical local model for v6.5.7+ MB v6.5.7+ with new Zimperium need `fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_` and `GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_` to function correctly, without it the app will crash with native call error. with older app version (v6.5.6 or older), it will continue to delete such local model `libcode.so` is pattern to detect v6.5.7+ this commit should fix crashes with v6.5.7+ when working with Patcher. Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 3df559e..148b983 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -172,9 +172,13 @@ unpack_mbcp() { rm -rf 'mbapk/mbapk_unpacked/root/assets/c7uFHgsHzlQ_T524_4N3h9neXvtcUg0m1ERhEjFpPI8_' rm -rf 'mbapk/mbapk_unpacked/root/assets/ccBu4aSM_mSaMBpFvr14pizu6EGMvwRiZltU_zVJMz0_' rm -rf 'mbapk/mbapk_unpacked/root/assets/DcM3z3tolULDhbn8YrUE7hxOlxZx2oFC5yNQFG1SX9k_' - rm -rf 'mbapk/mbapk_unpacked/root/assets/fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_' + # v6.5.7+ and new zimperium need this, without it the app will crash in startup, libcode.so + # is new pattern to detect v6.5.7+, older app base with old zimperium does not need this + # so i added condition check, whether if libcode.so is exist or not, if not then it will + # continue to delete the local model as before. + [ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/assets/fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_' + [ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_' rm -rf 'mbapk/mbapk_unpacked/root/assets/g9x205p_On9_RR4kI_GdsoQ2pfSrV_OQXSopshyhYVk_' - rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_' rm -rf 'mbapk/mbapk_unpacked/root/assets/H8leCCp85eX0YRvo4WCzqF5MEuj2_9ix6zL2bjnj6hk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/Hput_BfAb8ftOt8hvazec24Eqk0gC5DDY6qALJMLtcI_' rm -rf 'mbapk/mbapk_unpacked/root/assets/MZuOOtdhO6pcGnZ5_kqMPh56hL3LqawBZd05vfIivww_' From b2a7c82be305c184b4243e91e6085be70e399cc4 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 29 Jun 2026 00:44:16 +0700 Subject: [PATCH 20/45] feat: patches(spoof_appver.sh): adapt with `v6.5.1x` target, more `versionCode` Signed-off-by: Cuynu --- MBCPApp/patches/spoof_appver.sh | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/MBCPApp/patches/spoof_appver.sh b/MBCPApp/patches/spoof_appver.sh index 0eb760f..ce6d182 100644 --- a/MBCPApp/patches/spoof_appver.sh +++ b/MBCPApp/patches/spoof_appver.sh @@ -12,6 +12,18 @@ info "Spoofing app version..." +# 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' +sed -i 's|6.5.17|6.5.17.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|6.5.16|6.5.16.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|6.5.15|6.5.15.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|6.5.14|6.5.14.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|6.5.13|6.5.13.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|6.5.12|6.5.12.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +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.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.5.8|6.5.8.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' @@ -25,9 +37,9 @@ 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.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' -sed -i 's|6.4.98|6.4.98.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' -sed -i 's|6.4.97|6.4.97.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|6.4.99|6.4.99.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|6.4.98|6.4.98.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|6.4.97|6.4.97.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.96|6.4.96.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.95|6.4.95.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.94|6.4.94.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' @@ -88,7 +100,7 @@ sed -i 's|6.4.49|6.4.49.old|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.48|6.4.48.old|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.47|6.4.47.old|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' - +# versionCode spoofing to prevent in-app forced update dialog, and play store / aurora store from replacing with original app :> sed -i 's|704|1000|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|712|1001|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|727|2000|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' @@ -110,6 +122,19 @@ sed -i 's|744|2014|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|745|2015|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|746|2016|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|747|2017|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|749|2018|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|750|2019|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|751|2020|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|752|2021|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|753|2022|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|754|2023|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +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' +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|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' From a7e09b9ba2e66d49c02ed1b2572443635d74a390 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 29 Jun 2026 02:03:25 +0700 Subject: [PATCH 21/45] fix: patches(remove_useless_lib.sh): do not remove `libvvb2060.so` in newer app version `v6.5.7+` removing it in v6.5.7+ trigger checksum failing error (GW934 - Re-install app to continue using app) Signed-off-by: Cuynu --- MBCPApp/patches/remove_useless_lib.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/MBCPApp/patches/remove_useless_lib.sh b/MBCPApp/patches/remove_useless_lib.sh index 7199478..943d3e1 100644 --- a/MBCPApp/patches/remove_useless_lib.sh +++ b/MBCPApp/patches/remove_useless_lib.sh @@ -5,8 +5,11 @@ # shellcheck disable=SC1091 . "$DIRPATH"/common.sh +# remove rootbeer simple check (used in singalarity ekyc) rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libtoolChecker.so' rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libtoolChecker.so' -rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libvvb2060.so' -rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libvvb2060.so' +# remove libvvb2060.so (only for older app verion : v6.5.6 or older) +# in newer app, removing it will trigger checksum failing error (GW934 - Re-install app to continue using app) +[ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libvvb2060.so' +[ ! -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libvvb2060.so' From 54d5855294a1401a38cc08299d87481c3e75828e Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 29 Jun 2026 21:05:38 +0700 Subject: [PATCH 22/45] fix: patcher(mbcpapp.sh): critical model still getting deleted & adapt new v6.5.7+ model due to duplicate files in new zimperium for v6.4.66+ also delete `GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_` model adapt newer model for v6.5.7+ Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 148b983..49abd13 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -177,7 +177,7 @@ unpack_mbcp() { # so i added condition check, whether if libcode.so is exist or not, if not then it will # continue to delete the local model as before. [ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/assets/fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_' - [ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_' + rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_' rm -rf 'mbapk/mbapk_unpacked/root/assets/g9x205p_On9_RR4kI_GdsoQ2pfSrV_OQXSopshyhYVk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/H8leCCp85eX0YRvo4WCzqF5MEuj2_9ix6zL2bjnj6hk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/Hput_BfAb8ftOt8hvazec24Eqk0gC5DDY6qALJMLtcI_' @@ -204,7 +204,6 @@ unpack_mbcp() { rm -rf 'mbapk/mbapk_unpacked/root/assets/ccBu4aSM_mSaMBpFvr14pizu6EGMvwRiZltU_zVJMz0_' rm -rf 'mbapk/mbapk_unpacked/root/assets/DcM3z3tolULDhbn8YrUE7hxOlxZx2oFC5yNQFG1SX9k_' rm -rf 'mbapk/mbapk_unpacked/root/assets/eB0ZLvEtv8_qoOAcmcB19tx0pnT_RXKn5WU3rOVgK4k_' - rm -rf 'mbapk/mbapk_unpacked/root/assets/fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_' rm -rf 'mbapk/mbapk_unpacked/root/assets/g9x205p_On9_RR4kI_GdsoQ2pfSrV_OQXSopshyhYVk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_' rm -rf 'mbapk/mbapk_unpacked/root/assets/H8leCCp85eX0YRvo4WCzqF5MEuj2_9ix6zL2bjnj6hk_' @@ -240,7 +239,10 @@ unpack_mbcp() { # New zimperium for v6.4.72+ rm -rf 'mbapk/mbapk_unpacked/root/assets/Z1YbTXaPlMjbmWCKXXD0m4wkWyE0I6xxDebGhXz5igk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/zxwCzUaZ8itWQeAMKtyu52RbljJe1Pd8GuV7H4RPsy4_' - + # New zimperium for v6.5.7+ + rm -rf 'mbapk/mbapk_unpacked/root/assets/BHCdF10ojcfyA7xfkrsMHYFMRUCn2CVYK6zKEnI8Jdc_' + rm -rf 'mbapk/mbapk_unpacked/root/assets/i_4CYiKEHQ3wTzTlrx_YVNIvHCgFjnkpMtMf4pgDlic_' + rm -rf 'mbapk/mbapk_unpacked/root/assets/OrE6E3b6dxQnoToaT2eLN48gKz8_Iui_eFezclhtVQk_' info "Creating [mbcp_info] folder..." mkdir 'mbapk/mbapk_unpacked/root/assets/mbcp_info/' From ecfded007aca31a6b69b514bacd2bf9eb3e40c27 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Fri, 10 Jul 2026 04:29:08 +0700 Subject: [PATCH 23/45] feat: patcher(mbcpapp.sh): adapt with v6.5.9+ behavior & condition when installing apk to device also added new pattern to specific app version installation Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 49abd13..22a3593 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -177,6 +177,8 @@ unpack_mbcp() { # so i added condition check, whether if libcode.so is exist or not, if not then it will # continue to delete the local model as before. [ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/assets/fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_' + # v6.5.9+ behavior (does not affect v6.5.7/v6.5.8 behavior) + [ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/assets/2lclXWtX58GC8tXgJr1E_tmzpvS_K1Q7_0jHeXBaECc_' rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_' rm -rf 'mbapk/mbapk_unpacked/root/assets/g9x205p_On9_RR4kI_GdsoQ2pfSrV_OQXSopshyhYVk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/H8leCCp85eX0YRvo4WCzqF5MEuj2_9ix6zL2bjnj6hk_' @@ -224,7 +226,6 @@ unpack_mbcp() { rm -rf 'mbapk/mbapk_unpacked/root/assets/ZOKOK1a6XCiqYb_a8bYPE9c0rjUf7_n7k77YxX5Ypdw_' rm -rf 'mbapk/mbapk_unpacked/root/assets/zxHdhL4_ZEQLQeo8R2DzSYl9PGss_cKSCQTcZGBtVmU_' # New zimperium for v6.4.67+ - rm -rf 'mbapk/mbapk_unpacked/root/assets/2lclXWtX58GC8tXgJr1E_tmzpvS_K1Q7_0jHeXBaECc_' rm -rf 'mbapk/mbapk_unpacked/root/assets/EHFtsAf7MYH_M7kQF1YX8LeWfU1_RjdRH62oJRE0v38_' rm -rf 'mbapk/mbapk_unpacked/root/assets/KZsyhtgSOXgFDPIf88NF5svaDH3xQ8feGsAQiy1c9_s_' rm -rf 'mbapk/mbapk_unpacked/root/assets/mT0VvAZ00szUCjj1fIELzEtu8jyGYugItWXzMzctw5s_' @@ -466,8 +467,7 @@ do warn "You must have connected Android device with USB debugging turned on in order to install !!!" adb kill-server adb start-server - adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" - adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity + adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!" else err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !" fi @@ -479,7 +479,7 @@ do warn "You must have connected Android device with USB debugging turned on in order to install !!!" adb kill-server adb start-server - adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" + adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!" # Delete zimperium detection files adb shell su -c rm -rf /data/data/com.mbmobile/files/0* adb shell su -c rm -rf /data/data/com.mbmobile/files/1* @@ -493,6 +493,7 @@ do adb shell su -c rm -rf /data/data/com.mbmobile/files/9* adb shell su -c rm -rf /data/data/com.mbmobile/files/KNOV3PN* adb shell su -c rm -rf /data/data/com.mbmobile/files/zxpolicyme* + adb shell su -c rm -rf /data/data/com.mbmobile/files/zxpolicymd* adb shell su -c rm -rf /data/data/com.mbmobile/files/policyme* warn "ATTENTION : Network traffic will be redirected to [medium.com] for 20 seconds !!!" adb shell su -c 'iptables -t nat -A OUTPUT -p tcp -d 0/0 -j DNAT --to-destination 162.159.153.4:443' @@ -512,7 +513,7 @@ do warn "You must have connected Android device with USB debugging turned on in order to install !!!" adb kill-server adb start-server - adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" + adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!" adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity else err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !" From 12a99f22e3dbe0467ff4cae6912f29bd663bfc4c Mon Sep 17 00:00:00 2001 From: Cuynu Date: Fri, 10 Jul 2026 04:40:00 +0700 Subject: [PATCH 24/45] fix: patches(remove_useless_lib): patch applying error with newer target due to return 1 in last of file Signed-off-by: Cuynu --- MBCPApp/patches/remove_useless_lib.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MBCPApp/patches/remove_useless_lib.sh b/MBCPApp/patches/remove_useless_lib.sh index 943d3e1..955cfda 100644 --- a/MBCPApp/patches/remove_useless_lib.sh +++ b/MBCPApp/patches/remove_useless_lib.sh @@ -5,11 +5,11 @@ # shellcheck disable=SC1091 . "$DIRPATH"/common.sh -# remove rootbeer simple check (used in singalarity ekyc) -rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libtoolChecker.so' -rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libtoolChecker.so' - # remove libvvb2060.so (only for older app verion : v6.5.6 or older) # in newer app, removing it will trigger checksum failing error (GW934 - Re-install app to continue using app) [ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libvvb2060.so' [ ! -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libvvb2060.so' + +# remove rootbeer simple check (used in singalarity ekyc) +rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libtoolChecker.so' +rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libtoolChecker.so' From 208c22d10f94d1646d7331bb195909a8ef68a215 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 12 Jul 2026 22:47:07 +0700 Subject: [PATCH 25/45] docs: fix-vtap-cert: detailed patch usages Signed-off-by: Cuynu --- docs/fix-vtap-cert.md | 56 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 docs/fix-vtap-cert.md diff --git a/docs/fix-vtap-cert.md b/docs/fix-vtap-cert.md new file mode 100644 index 0000000..41dda55 --- /dev/null +++ b/docs/fix-vtap-cert.md @@ -0,0 +1,56 @@ +# Fix VTAP Certificate usage + +This patch can't be applied just by cloning regular repo and apply, I already mentioned it requires specific `firmware` (and `profile` for older base) in `fixcert` folder to function + +It can also revert new detection behavior of V-Key (VTAP) like SELinux check, LSPosed, Zygisk check, etc (choose v6.4.78 blobs or older, max to v6.4.53) + +``` +# from fix_vtap_cert.sh : + +# What is [firmware] and [profile]? +# It contains the firmware and certificate for VTAP to communicate with the app connection +# Both [firmware] and [profile] is encrypted with base64 format. +# We do not provide it in the project source, but you can get it from the app itself, in [assets] folder. +``` + +## How to apply it? + +- You can take `firmware` and `profile` file from older app base, then copy to `fixcert` folder in `MBCPApp/` or clone the following repo (it has blobs for some versions) + +``` +# clone vkey vtap blobs repo +git clone https://git.disroot.org/cuynu/vtapfw_blobs.git +cd vtapfw_blobs + +# in vtapfw_blobs folder, the structure are like this +[cuynu@x99e vtapfw_blobs] $ tree +. +├── README.md +├── v6.4.66 +│   ├── firmware +│   └── profile +├── v6.4.75 +│   ├── firmware +│   └── profile +└── v6.5.2 + ├── firmware + └── profile +``` + +- Just choose the proper blobs you want to use, then copy it to `fixcert` folder in `MBCPApp` (in this example i'll use v6.4.75 one, `mbbpatch` cloned in home folder) +``` +cp v6.4.75/firmware ~/mbbpatch/MBCPApp/fixcert +# DO NOT copy profile if you are patching newer base then the blobs one, otherwise it will fail certificate check. +cp v6.4.75/profile ~/mbbpatch/MBCPApp/fixcert +``` + +Then run patcher again `./mbcpapp.sh` -> `Patch App` -> `Fix VTAP Certificate` -> it will work :) + +After installed the patched app, if you have previous data, the old one may still present there, at this point delete with +``` +su -c rm -f /data/data/com.mbmobile/firmware +su -c rm -f /data/data/com.mbmobile/profile +``` + + + From f76dde30eb6e9de55fd5eee4c8429e90a17a7087 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Fri, 17 Jul 2026 19:52:32 +0700 Subject: [PATCH 26/45] feat!: patches(block_adjust_volume_sekyc): restrict to v6.4.85 as maximum app version temp only Signed-off-by: Cuynu --- MBCPApp/patches/block_adjust_volume_sekyc.sh | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MBCPApp/patches/block_adjust_volume_sekyc.sh b/MBCPApp/patches/block_adjust_volume_sekyc.sh index ac48bdb..1752bd7 100644 --- a/MBCPApp/patches/block_adjust_volume_sekyc.sh +++ b/MBCPApp/patches/block_adjust_volume_sekyc.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # PATCHNAME: Block adjust volume on sEKYC -# MAXVER: +# MAXVER: 6.4.85 # MINVER: # shellcheck disable=SC1091 . "$DIRPATH"/common.sh diff --git a/README.md b/README.md index 7af3ff8..096c2d2 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,6 @@ | `Add verified badge` | Replaces the MIC protection shield with verified badge to make it looks more cute :3 | v6.4.0 ~ v6.5.6 | | `Adaptive launcher icon` | Adds the adaptive & themed icon support to the app. Thanks to @fukiame ! | v6.4.0 ~ v6.5.6 | | `Proper notification icon` | Temporary fixes for the app notification icon. Thanks to @fukiame ! | v6.4.0 ~ v6.5.6 | -| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. (Hidden for v6.4.67+) | v6.4.0 ~ v6.5.6 | | `Better custom background screen` | Replace the preview custom background from awful to useful. | v6.4.84 ~ v6.5.6 | | `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.5.6 | | `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.5.6 | @@ -107,6 +106,7 @@ | `Bypass blacklist IP hashes` | Bypass the block list of some IP hashes. | v6.4.50 ~ v6.4.66 | | `Bypass forced update dialog` | Bypass forced update dialog from app. | v6.4.0 ~ v6.4.66 | | `Bypass malicious app check` | Bypass malicious app check from app. | v6.4.10 ~ v6.4.66 | +| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. (Hidden for v6.4.67+) | v6.4.0 ~ v6.4.85 | | `XPE003 Fix` | Fix XPE003 issues when use bypass zimperium patch. | v6.4.56 ~ v6.4.66 | | `Bypass GW934 checksum` | Bypass the GW934 error rolled-out from MB server-side which prevent MBCP users from logging in to app. Only use this after applied all your patch needs. | v6.4.64 ~ v6.4.66 | | `Remove custom profile picture` | Force the use of default profile picture instead of your current one on MB's server side. | v6.4.0 ~ v6.4.66 | From a8e8ac6233d947bbbcc8cd3a885247ce9962c705 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Tue, 21 Jul 2026 15:32:00 +0700 Subject: [PATCH 27/45] feat: patches(add_modified_resources): adapt with v6.5.7+ strings Signed-off-by: Cuynu --- .../blob_patches/resources/strings_newapp.xml | 378 ++++++++++++++++++ MBCPApp/patches/add_modified_resources.sh | 7 + 2 files changed, 385 insertions(+) create mode 100644 MBCPApp/blob_patches/resources/strings_newapp.xml diff --git a/MBCPApp/blob_patches/resources/strings_newapp.xml b/MBCPApp/blob_patches/resources/strings_newapp.xml new file mode 100644 index 0000000..47b50cf --- /dev/null +++ b/MBCPApp/blob_patches/resources/strings_newapp.xml @@ -0,0 +1,378 @@ + + + OPC_NAME_NOT_SET_KEY + OPC_NETWORK_KEY + OPC_NETWORK_NAME_KEY + NO_OPC_SET + OPC_SHARED_PREFERENCES_FILE + OPC_SHARED_PREFERENCES_KEY + OPC_TOKEN_SERVICE_PROVIDER_KEY + OPC_TOKEN_SERVICE_PROVIDER_NAME_KEY + + Navigate home + Navigate up + More options + Done + See all + Choose an app + OFF + ON + Alt+ + Ctrl+ + delete + enter + Function+ + Meta+ + Shift+ + space + Sym+ + Menu+ + Search… + Clear query + Search query + Search + Submit query + Voice search + Share with + Share with %s + Collapse + + + Understand and continue + Please move the face into the frame + You will have to speak loudy these numbers on the screen + Please look straight + Please look straight + Your face is in the frame. Please hold your hand steady! + Please keep your face upright + Please keep your face upright + Please put the camera further away + Please put the camera closer + Please look straight + Please look straight + Please move your face fit in the frame + Found many faces in the frame. Please retake the selfie + Agree + Please remove scarf, mask, sunglasses, hat and take a photo in well-lit condition + Keep your face steady during video recording + Speak loudly and clearly the number on the screen + Hold your phone as high as your face + Video recording tutorial + Please take a video of your face to verify no one is impersonating you + Biometric information + Start demonstration + Verify information + Please watch the tutorial to know how to record video with the best quality + Cancel + Retry + Record selfie video failed + Please move your face fit in the frame + Your facial data does not match. Please try again + Your video is in low quality + Your facial data does not match + Failed. Please record the video again + Error. Please record your voice again + Recording + Speak loudly the number on the screen + androidx.startup + mbbank.onelink.me + MB Bank + This is an app widget description + com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior + com.google.android.material.bottomsheet.BottomSheetBehavior + Expand halfway + Characters entered %1$d of %2$d + Character limit exceeded %1$d of %2$d + %1$d/%2$d + Clear text + Tap to setup QR + Tap to setup QR + cca90e65-5805-4c06-bc2d-930595fb2cf4 + a4f49867dfa64435bea0bafc1f437f34 + Enable + %1$s can't work properly unless you enable GMS/microG. + Enable GMS/microG + Install + GMS/microG is missing from your device. %1$s still runs without it but some features will be broken. + GMS/microG missing + Google Play services availability + Google Play services error + %1$s is having trouble with Google Play services. Please try again. + %1$s won't run without Google Play services, which are not supported by your device. + Update + %1$s won't run unless you update Google Play services. + Update Google Play services + %1$s won't run without Google Play services, which are currently updating. + New version of Google Play services needed. It will update itself shortly. + Open on phone + Sign in + Sign in with Google + Use password + Copy + Link copied to clipboard + Unknown error + 162583259686-erd52s6o9832jno1lpa9on8t2djnicie.apps.googleusercontent.com + . + . + Error + Advanced + Show dropdown menu + com.google.android.material.transformation.FabTransformationScrimBehavior + com.google.android.material.transformation.FabTransformationSheetBehavior + Copy link + Open in browser + Share link + Miscellaneous + Touch the fingerprint sensor + Fingerprint hardware not available. + This device does not have a fingerprint sensor + Too many attempts. Please try again later. + No fingerprints enrolled. + Fingerprint operation canceled by user. + Not recognized + https://mbmobilebanking6789.firebaseio.com + 162583259686 + You cannot go back to the previous step. Please continue + Warning + Processing... + No PIN, pattern, or password set. + This device does not support PIN, pattern, or password. + Authentication canceled by user. + The server response is invalid or missing. Please try again + Please check your internet connection + AIzaSyAcxvc0vK4vJ3TzLe0PI9gqNIq8ZxmL5NI + 1:162583259686:android:884f0ccb6ad5e1ed + AIzaSyAcxvc0vK4vJ3TzLe0PI9gqNIq8ZxmL5NI + mbmobilebanking6789.appspot.com + + com.google.android.material.behavior.HideBottomViewOnScrollBehavior + Dialog Icon + SDK initialization failed + SDK initialization success + https://mobile.useinsider.com/api/v1/test_device/add + https://mobile.useinsider.com/api/amplification/v1/poll + https://mobileanalytics.useinsider.com + /api/v1/test_device/add + /api/amplification/v1/poll + /api/v1/privacy/gdpr/consent/get + /api/v1/privacy/gdpr/consent/set + /api/v1/geofences + /api/v1/geofences/notify + /api/identity/v3/get + /api/message_center/v2/sdk/get + https://mobile.useinsider.com/api/v1/privacy/gdpr/consent/get + https://mobile.useinsider.com/api/v1/privacy/gdpr/consent/set + https://mobile.useinsider.com/api/v1/geofences + https://mobile.useinsider.com/api/v1/geofences/notify + https://mobile.useinsider.com/api/identity/v3/get + https://mobile.useinsider.com/api/logging/sdk/v2 + https://mobile.useinsider.com/api/message_center/v2/sdk/get + Android + /api/v3/session/start + /api/v3/session/stop + https://mobile.useinsider.com/api/v3/session/start + https://mobile.useinsider.com/api/v3/session/stop + /api/gandalf/v2/live_push + /api/gandalf/v2/start_connection + /api/gandalf/v2/stop_connection + https://mobile.useinsider.com/api/gandalf/v2/live_push + https://mobile.useinsider.com/api/gandalf/v2/start_connection + https://mobile.useinsider.com/api/gandalf/v2/stop_connection + Tab + sans-serif + sans-serif-medium + sans-serif + : + Select AM or PM + Select hour + %1$s o'clock + Select minutes + %1$s minutes + cubic-bezier(0.4, 0.0, 1.0, 1.0) + cubic-bezier(0.0, 0.0, 0.2, 1.0) + path(M 0,0 C 0.05, 0, 0.133333, 0.06, 0.166666, 0.4 C 0.208333, 0.82, 0.25, 1, 1, 1) + cubic-bezier(0.0, 0.0, 1.0, 1.0) + cubic-bezier(0.4, 0.0, 0.2, 1.0) + Range end, + Range start, + AM + Switch to clock mode for the time input. + Hour + Minute + PM + Select time + Switch to text input mode for the time input. + New notification + Remove %1$s + More than %1$d new notifications + %1$d%2$s + Change to next month + Change to previous month + Current selection: %1$s + @android:string/cancel + OK + %1$s + Select Date + Selected date + Column of days: %1$s + Invalid format. + Example: %1$s + Use: %1$s + Invalid range. + Navigate to year %1$s + Out of range: %1$s + Start date – %1$s + %1$s – End date + %1$s – %2$s + Select Range + Start date – End date + Save + Date + End date + Start date + d + m + y + Switch to calendar input mode + Tap to switch to selecting a day + Switch to text input mode + Tap to switch to selecting a year + OK + Next + Kết thúc + Not set + Agree + Please move the ID card into the frame + Make sure the photo is easy to read, with no blur or loss of angle or flare + Make sure your ID card is valid + Tutorial for taking photo of ID card + Please take a photo of your ID card to verify your information + ID card information + Change + Start capturing + Please select the type of document + Continue + Cancel + Do you want to continue to register? + Verify information + - + Back + Accept + Capture + Retake + Retry + Front + Page 2 + Capture + Citizen identification + Citizen identification + Identification documents + Passport + Military ID card + You took the wrong side of the ID card. Please try again + Your photo is unqualified. Please retake a photo of ID + Cannot find the face on your ID card. Please retake the photo + Your ID card is not fully captured. Please try again (OCR005) + Your facial data on ID card and video do not match. Please try again + Your photo is unqualified. Please retake a photo of ID + Make sure your photos are easy to read, with no blur, loss of corners, or glare + Please move the ID card into the frame + Continue + Stop + Do you want to continue to register? + Yes + No + Do you want to go back to previous step? + Please keep your ID straight + Cannot find the face on your ID card + Authentication failed + Authentication successfully + Cannot receive the data of identification session. Please try again + Identifier and bioID do not match + Cannot find the identifier + Your data is being manually reviewed + Cannot identify your data on video and ID card + Authentication failed + Successful registration with highest level + You have tried more than the permitted. Please contact the call center + Please try again. If not successful, please contact the call center + Cannot verify your data + You have exited the identification process + You are not qualify to take the next step + Show password + M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z + M2,4.27 L19.73,22 L22.27,19.46 L4.54,1.73 L4.54,1 L23,1 L23,23 L1,23 L1,4.27 Z + M2,4.27 L2,4.27 L4.54,1.73 L4.54,1.73 L4.54,1 L23,1 L23,23 L1,23 L1,4.27 Z + M3.27,4.27 L19.74,20.74 + Agree + Close + Go to "Settings" + Please allow [APP_NAME] to access the camera and microphone for recording the video + Please allow [APP_NAME] to access the camera and microphone + Please allow [APP_NAME] to access the camera for taking selfie + Please allow [APP_NAME] to access the camera + Please allow [APP_NAME] to access the microphone for recording + Please allow [APP_NAME] to access the microphone + Please allow [APP_NAME] to access the camera and microphone in "Settings" + "%1$s" copied to clipboard. + mbmobilebanking6789 + QR Image + Receive QR + This app may not work correctly without the requested permissions. + This app may not work correctly without the requested permissions. Open the app settings screen to modify app permissions. + . + . + . + . + Search + Please keep the card +until the process is completed + Your current device is not currently compatible + with NFC mode. + +Please try on another device. or restart. + Current device is not compatible + Check your ID card + Notes + Watch the instruction video before proceed + 1. Prepare vaild ID card + 2. Remove the phone case. + 3. Enable NFC and accept the permission if asked. + 4. Do like the video. + 1. Prepare the ID card. + 2. Put it to your phone backcover. + 3. Move the ID card from bottom slowly until the device recognize it. + 4. Keep the card scanning for 5-10 seconds. + 1. Put the ID card to your phone backcover. + 2. Slowly moving the ID card, until the device recognize it, then keep the card until the process is complete. + 999+ + %1$s, %2$s + + Tap to setup QR + Online loan + Phone Topup + Phone Topup + Scan QR + Transfer + + VideoPreviewActivity + Permissions Required + Loading… + Crop + Both input and output Uri must be specified + Edit Photo + Original + Crop + Therefore, override color resource (ucrop_color_toolbar_widget) in your app to make it work on pre-L devices + Rotate + Scale + OFF + ON + Copied "%1$s" to clipboard. + Search + 999+ + %1$s, %2$s + Loading… + OFF + ON + diff --git a/MBCPApp/patches/add_modified_resources.sh b/MBCPApp/patches/add_modified_resources.sh index 250704d..688eca0 100644 --- a/MBCPApp/patches/add_modified_resources.sh +++ b/MBCPApp/patches/add_modified_resources.sh @@ -15,11 +15,18 @@ nochiptext() { rm -rf strings_temp } +no_resolution() { + warn "App newer than v6.5.7+ ! Using specific strings file instead..." + cp -f 'blob_patches/resources/strings_newapp.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values/strings.xml' +} + info "Copying modified resources..." cp -r -f 'blob_patches/resources/raw' 'mbapk/mbapk_unpacked/resources/package_1/res/' cp -f 'blob_patches/resources/strings-vi/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values-vi/' [ $(cat mbapk/mbapk_unpacked/resources/package_1/res/values/strings.xml | grep chip_text) ] && cp -f 'blob_patches/resources/strings/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values/' || nochiptext +[ $(cat mbapk/mbapk_unpacked/resources/package_1/res/values/strings.xml | grep -q RESOLUTION) ] && cp -f 'blob_patches/resources/strings/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values/' || no_resolution + info "Copying bootleg_ekyc..." cp -f 'blob_patches/bootleg_ekyc/dotp1_ekyc.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/digitalOtp_img_authenguide01.webp' cp -f 'blob_patches/bootleg_ekyc/dotp2_ekyc.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/digitalOtp_img_authenguide02.webp' From 00be5180856937bfa2ab9b0d305ad05428cd4ee4 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Tue, 21 Jul 2026 16:25:09 +0700 Subject: [PATCH 28/45] refactor: patcher(mbcpapp.sh): move to new install patched app behavior no longer requires specific app version with [Install & delete local detection model & open app] option, it will check for su binary and warn if it's not found also checks the commit id of repacked APK and warn before installing if it's mismatch Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 22a3593..f60cf38 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -329,7 +329,7 @@ echo "Original APK must be inside [mbapk] folder !" echo ------------------------------------------------------------- echo "Current commit : $COMMIT ($BRANCH)" echo "Source code : https://git.disroot.org/mbcp/mbbpatch.git" -echo "Documentation : see [docs] folder" +echo "Documentation : see [README.md] or [docs] folder" echo "Written from scratch by Cuynu with love <3" echo ------------------------------------------------------------- echo App status : $(successunpack) @@ -455,31 +455,34 @@ done info "Cleared !" ;; 'Install patched app' ) - info 'Select your patched version to continue' - PS3='Select patched version to continue, or [4] to quit : ' - select opt in 'App patched with newer version [v6.4.59+]' 'App patched with specific version' 'App patched with older version [v6.4.55 or lower]' 'Exit' + echo 'Choose install options :' + ls mbcpapp_apk | grep -q MBCP_Flutter_SelfPatched_$(git rev-parse --short HEAD).apk || err "Couldn't find APK with current commit ID, you might already do new commits : $(git rev-parse --short HEAD)" || warn "Please repack APK again after each new commits !" + PS3='Select option to continue, or [3] to quit : ' + select opt in 'Install & open app' 'Install & delete local detection model & open app' 'Exit' do - if [ "$opt" == 'App patched with newer version [v6.4.59+]' ]; then + if [ "$opt" == 'Install & open app' ]; then if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ] then warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!" warn "You must have connected Android device with USB debugging turned on in order to install !!!" adb kill-server adb start-server - adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!" + adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "App installation successful! Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!" else err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !" fi - elif [ "$opt" == 'App patched with specific version' ]; then + elif [ "$opt" == 'Install & delete local detection model & open app' ]; then + 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 !!!" warn "You must have connected Android device with USB debugging turned on in order to install !!!" adb kill-server adb start-server - adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!" + adb shell [ -f /system/bin/su ] || warn "No su binary found in [/system/bin/su] from connected device. Root-related commands will not work!!" + adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "App installation successful! Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!" # Delete zimperium detection files adb shell su -c rm -rf /data/data/com.mbmobile/files/0* adb shell su -c rm -rf /data/data/com.mbmobile/files/1* @@ -505,21 +508,7 @@ do else err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !" fi - - elif [ "$opt" == 'App patched with older version [v6.4.55 or lower]' ]; then - if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ] - then - warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!" - warn "You must have connected Android device with USB debugging turned on in order to install !!!" - adb kill-server - adb start-server - adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!" - adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity - else - err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !" - fi - - + elif [ "$opt" == 'Exit' ]; then PS3='Please select options to continue : ' break From 64513fb78fc6dcd799276b8b3650aa4f685a944a Mon Sep 17 00:00:00 2001 From: Cuynu Date: Tue, 21 Jul 2026 16:51:04 +0700 Subject: [PATCH 29/45] fix: patches(spoof_appver): missing double quote & spoof more `versionCode` causing multiple mbcp prefixes in some app versions Signed-off-by: Cuynu --- MBCPApp/patches/spoof_appver.sh | 43 ++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/MBCPApp/patches/spoof_appver.sh b/MBCPApp/patches/spoof_appver.sh index ce6d182..46943e7 100644 --- a/MBCPApp/patches/spoof_appver.sh +++ b/MBCPApp/patches/spoof_appver.sh @@ -13,28 +13,28 @@ info "Spoofing app version..." # 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' -sed -i 's|6.5.17|6.5.17.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' -sed -i 's|6.5.16|6.5.16.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' -sed -i 's|6.5.15|6.5.15.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' -sed -i 's|6.5.14|6.5.14.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' -sed -i 's|6.5.13|6.5.13.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' -sed -i 's|6.5.12|6.5.12.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' -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' +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' +sed -i 's|"6.5.17"|"6.5.17.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|"6.5.16"|"6.5.16.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|"6.5.15"|"6.5.15.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|"6.5.14"|"6.5.14.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|"6.5.13"|"6.5.13.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +sed -i 's|"6.5.12"|"6.5.12.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' +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.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' +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' @@ -135,6 +135,9 @@ sed -i 's|758|2027|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' 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|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' From 1ad18251bb54f8d0b79f2d0b9d3a61e567a0663c Mon Sep 17 00:00:00 2001 From: Cuynu Date: Wed, 22 Jul 2026 00:56:16 +0700 Subject: [PATCH 30/45] docs: bump suggested version to v6.5.11 Signed-off-by: Cuynu --- README.md | 66 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 096c2d2..21bcfe3 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,8 @@ ## Patches list : +**Not seeing Zimperium bypass?** It is moved to legacy patch, local Zimperium model is already removed when you unpack APK, just apply other patch, repack and use [MBZDefend-Fix](/mbcp/mbzdefend-fix/releases) module to bypass the detection. + ### [📦 `MB Bank : com.mbmobile`](https://t.me/embeeapks) @@ -58,37 +60,36 @@ | ⚙️ 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.6 | -| `Adaptive launcher icon` | Adds the adaptive & themed icon support to the app. Thanks to @fukiame ! | v6.4.0 ~ v6.5.6 | -| `Proper notification icon` | Temporary fixes for the app notification icon. Thanks to @fukiame ! | v6.4.0 ~ v6.5.6 | -| `Better custom background screen` | Replace the preview custom background from awful to useful. | v6.4.84 ~ v6.5.6 | -| `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.5.6 | -| `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.5.6 | -| `Custom VTAP screen` | Warn users about critical VTAP trigger error from app. | v6.4.53 ~ v6.5.6 | -| `Custom sub-badge` | Replace original animated promotion badge with static badge for Basic users | v6.4.44 ~ v6.5.6 | -| `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.6 | -| `Tian37 Fix` | Nuke detection points within Tian37 libraries. | v6.4.87 ~ v6.5.6 | -| `Force portrait screen` | Force the screen always portrait on app, especially when launching app. | v6.4.0 ~ v6.5.6 | -| `Fix VTAP certificate` | Update or downgrade VTAP certificate for older/newer app version, so it can work again in future. | v6.4.67 ~ v6.5.6 | -| `Remove MB AI Slop resources` | Remove the MB AI slop resources from app. | v6.4.74 ~ v6.5.6 | -| `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.5.6 | -| `Remove invoke to zShield` | Make the app stop invoking to zShield when opening (MainActivity) and (MBBHomeWidgetQR) only (Hidden for v6.4.67+) | v6.4.22 ~ v6.5.6 | -| `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. (Hidden for v6.4.67+) | v6.4.60 ~ v6.5.6 | -| `Remove built-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.5.6 | -| `Modify app theme` | Modify the built-in app theme from original one to other themes. | v6.4.30 ~ v6.5.6 | -| `Remove garbage permission and activities` | Removes tracking permission & activities from app. | v6.4.0 ~ v6.5.6 | -| `Revert old eMBee logo` | Revert old eMBee logo, especially on product consultation options. | v6.4.53 ~ v6.5.6 | -| `Remove useless libraries` | Remove the useless libraries from app, only for v6.4.67+ | v6.4.67 ~ v6.5.6 | -| `Remove animated QR background` | Remove the animated QR background from bottom navigation bar and replace with white background. | v6.4.43 ~ v6.5.6 | -| `Remove VNPAY VMB20` | Remove the VNPAY Airplane related activities. | v6.4.55 ~ v6.5.6 | -| `Restore old registration resources` | Restore old resources on `onboarding` page. | v6.4.48 ~ v6.5.6 | -| `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). (Hidden 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. (Hidden for v6.4.67+) | v6.4.53 ~ v6.5.6 | -| `Remove protection shield` | Remove the MIC protection shield on profile picture and login screen. (not app protection) | v6.4.0 ~ v6.5.6 | -| `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.6 | -| `Set targetSdkVersion to 34` | Set the `targetSdkVersion` to 34 (Android 14) to prevent UI issues on some activities. | v6.4.10 ~ v6.5.6 | -| `Add modified resources` | Adds the specific strings for MBCP on eKYC phases, and modify the DigiBank logo. | v6.4.0 ~ v6.5.6 | -| `Add anime resources` | Adds anime-related resources to some components inside app. | v6.4.45 ~ v6.5.6 | +| `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 | @@ -106,7 +107,7 @@ | `Bypass blacklist IP hashes` | Bypass the block list of some IP hashes. | v6.4.50 ~ v6.4.66 | | `Bypass forced update dialog` | Bypass forced update dialog from app. | v6.4.0 ~ v6.4.66 | | `Bypass malicious app check` | Bypass malicious app check from app. | v6.4.10 ~ v6.4.66 | -| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. (Hidden for v6.4.67+) | v6.4.0 ~ v6.4.85 | +| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. (causing GW934 error for v6.4.67+) | v6.4.0 ~ v6.4.85 | | `XPE003 Fix` | Fix XPE003 issues when use bypass zimperium patch. | v6.4.56 ~ v6.4.66 | | `Bypass GW934 checksum` | Bypass the GW934 error rolled-out from MB server-side which prevent MBCP users from logging in to app. Only use this after applied all your patch needs. | v6.4.64 ~ v6.4.66 | | `Remove custom profile picture` | Force the use of default profile picture instead of your current one on MB's server side. | v6.4.0 ~ v6.4.66 | @@ -118,6 +119,7 @@ | `Bypass accessibility & malicious apps check` | Remove the restriction of using the app when an app using accessibility service or "malicious apps" like (HideMyAppList) installed. | v6.4.25 ~ v6.4.54 | | `Remove new root detection` | Remove the new Zimperium (ZDefend) root detection from app. (Now requires workaround for v6.4.56+) | v6.4.15 ~ v6.4.58 | | `Bypass new zimperium detection` | Bypass the root check from Zimperium within app. | v6.4.56 ~ v6.4.63 | +| `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. (causing GW934 error for v6.4.67+) | v6.4.60 ~ v6.5.6 | From 5fbf2c74ce5fe2e120ea66bab138746a44245327 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 17 Aug 2026 09:13:32 +0700 Subject: [PATCH 31/45] feat: patcher(mbcpapp.sh): show warn for v6.5.7+ when select specific install apk option Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index f60cf38..760d89e 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -474,7 +474,8 @@ do fi elif [ "$opt" == 'Install & delete local detection model & open app' ]; then - warn "This method only works with v6.4.58 ~ v6.5.6 !" + # 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 !" if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ] then warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!" From bb01c94dfa8d8c5f059fd21ddb21fae2db8604ca Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 31 Aug 2026 00:53:59 +0700 Subject: [PATCH 32/45] feat: patcher(mbcpapp.sh): check for v6.5.15+ and warn before run patch app func since v6.5.15, the check is more stricter, extended to all files in assets and apk after converted to apk it will trigger checksum fail error and throw GW934 error as response. fix is not implemented yet, but it depends on new lib : `libnframes.so`, without that the login button is not clickable. Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 760d89e..8e811ac 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -315,6 +315,8 @@ convert_apks() { run_patcher() { is_unpacked_lib && bash ./parse.sh && bash ./patch.sh + # check v6.5.15+ + [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libnframes.so ] && warn "You are using v6.5.15+! Patches continue to work but you can't login until a workaround is implemented !" } run_legacy_patcher() { From a21c61f40ed3d2d8c40140c10ea08a06fd4e7f54 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Mon, 31 Aug 2026 01:12:23 +0700 Subject: [PATCH 33/45] fix: patcher(mbcpapp.sh): warn does not show for v6.5.15+ it need to be displayed before run patcher. Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 8e811ac..40d5091 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -314,9 +314,9 @@ convert_apks() { } run_patcher() { - is_unpacked_lib && bash ./parse.sh && bash ./patch.sh # check v6.5.15+ [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libnframes.so ] && warn "You are using v6.5.15+! Patches continue to work but you can't login until a workaround is implemented !" + is_unpacked_lib && bash ./parse.sh && bash ./patch.sh } run_legacy_patcher() { From 45ec5e5e114bf9a9b45b80414db49730206519d6 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Wed, 9 Sep 2026 03:44:43 +0700 Subject: [PATCH 34/45] feat: patcher(mbcpapp.sh): confirmation before running patch app function for v6.5.15+ with new checksum mechanism only Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 40d5091..d995a01 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -315,7 +315,7 @@ convert_apks() { run_patcher() { # check v6.5.15+ - [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libnframes.so ] && warn "You are using v6.5.15+! Patches continue to work but you can't login until a workaround is implemented !" + [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libnframes.so ] && warn "You are using v6.5.15+! Patches continue to work but you can't login until a workaround is implemented !" && confirm || exit is_unpacked_lib && bash ./parse.sh && bash ./patch.sh } From d15a333726b683e619b6389b7aa14881459dba69 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Wed, 9 Sep 2026 03:51:19 +0700 Subject: [PATCH 35/45] docs: bump suggested version to v6.5.14 (semi-final) might be final if no workaround available for v6.5.15+ Signed-off-by: Cuynu --- README.md | 62 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 21bcfe3..030e447 100644 --- a/README.md +++ b/README.md @@ -56,40 +56,42 @@ ### [📦 `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* +
| ⚙️ 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.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 | +| `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 |
From bf39876c69bf57252b7c10e7fcc79548c09842b5 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Wed, 9 Sep 2026 15:13:48 +0700 Subject: [PATCH 36/45] fix: patcher(mbcpapp.sh): use `return 0` instead of `exit` Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index d995a01..5c44cfe 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -315,7 +315,7 @@ convert_apks() { run_patcher() { # check v6.5.15+ - [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libnframes.so ] && warn "You are using v6.5.15+! Patches continue to work but you can't login until a workaround is implemented !" && confirm || exit + [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libnframes.so ] && warn "You are using v6.5.15+! Patches continue to work but you can't login until a workaround is implemented !" && confirm || return 0 is_unpacked_lib && bash ./parse.sh && bash ./patch.sh } From f413ecfb68193a59e93fc913db2d9f7a9fce6501 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Wed, 9 Sep 2026 15:50:46 +0700 Subject: [PATCH 37/45] fix: patcher(mbcpapp.sh): wrong handling separate function fixed it Signed-off-by: Cuynu --- MBCPApp/mbcpapp.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh index 5c44cfe..8c3e56f 100755 --- a/MBCPApp/mbcpapp.sh +++ b/MBCPApp/mbcpapp.sh @@ -313,9 +313,15 @@ 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 ] && warn "You are using v6.5.15+! Patches continue to work but you can't login until a workaround is implemented !" && confirm || return 0 + [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libnframes.so ] && newbehavior is_unpacked_lib && bash ./parse.sh && bash ./patch.sh } From db7108419982cebdebcf56115c25254d0c760b2f Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sat, 12 Sep 2026 03:20:40 +0700 Subject: [PATCH 38/45] docs: update about new checksum measure with v6.5.15+, the checksum is enhanced... Signed-off-by: Cuynu --- README.md | 21 +++++++++++--------- docs/checksum_newapp.md | 43 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 docs/checksum_newapp.md diff --git a/README.md b/README.md index 030e447..bd5b237 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,18 @@ > > 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 : +
+ +- 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. + +
+ ## Introduction > Fact : MBCP / MBZDefend-Fix is my "hobby project", I maintain it in my free times :> @@ -338,15 +350,6 @@ 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 : -
- -- 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. - -
## Credits - [apktool](https://github.com/iBotPeaches/Apktool) diff --git a/docs/checksum_newapp.md b/docs/checksum_newapp.md new file mode 100644 index 0000000..553d891 --- /dev/null +++ b/docs/checksum_newapp.md @@ -0,0 +1,43 @@ + + +# 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 9 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 +``` \ No newline at end of file From 0630d8d02556a9b0ac7cd1743d8ad9d5ac8b3eb0 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sat, 12 Sep 2026 03:23:49 +0700 Subject: [PATCH 39/45] docs: wrong link Signed-off-by: Cuynu --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bd5b237..97a76f9 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ - More information about checksum measure :
-- Since v6.5.15+, the checksum is more strict, see [this explain](/docs/checksum_newapp.md) for more 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. From 65e71fd42e7cd426133df22935a77992e688c324 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sat, 12 Sep 2026 03:24:19 +0700 Subject: [PATCH 40/45] docs: wrong day Signed-off-by: Cuynu --- docs/checksum_newapp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/checksum_newapp.md b/docs/checksum_newapp.md index 553d891..e7f3308 100644 --- a/docs/checksum_newapp.md +++ b/docs/checksum_newapp.md @@ -4,7 +4,7 @@ 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 9 days, checksum appears. +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 @@ -40,4 +40,4 @@ mb.apk/assets/media_init_data mb.apk/assets/flutter_assets/assets/fonts/* mb.apk/assets/flutter_assets/fonts/* mb.apk/assets/flutter_assets/FontManifest.json -``` \ No newline at end of file +``` From 004ff0e974e54e2dc733cf0fbfbd4959e4607246 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 13 Sep 2026 13:13:44 +0700 Subject: [PATCH 41/45] feat: patches(remove_qr_wave.sh): introduce remove qr scanner wave patch Signed-off-by: Cuynu --- MBCPApp/patches/remove_qr_wave.sh | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 MBCPApp/patches/remove_qr_wave.sh diff --git a/MBCPApp/patches/remove_qr_wave.sh b/MBCPApp/patches/remove_qr_wave.sh new file mode 100644 index 0000000..497ec9c --- /dev/null +++ b/MBCPApp/patches/remove_qr_wave.sh @@ -0,0 +1,8 @@ +#!/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 From 35707bbecc4d66f3edf1b8e30296ee6c03b213c1 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 13 Sep 2026 13:21:29 +0700 Subject: [PATCH 42/45] feat: patches(spoof_appver.sh): adapt with v6.5.2x & mark v6.5.x as `legacy` Signed-off-by: Cuynu --- MBCPApp/patches/spoof_appver.sh | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/MBCPApp/patches/spoof_appver.sh b/MBCPApp/patches/spoof_appver.sh index 46943e7..d2d1868 100644 --- a/MBCPApp/patches/spoof_appver.sh +++ b/MBCPApp/patches/spoof_appver.sh @@ -12,6 +12,18 @@ 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' @@ -25,16 +37,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.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' +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' # v6.4.9x sed -i 's|6.4.99|6.4.99.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' From 968367822a06ec951c27094a5a3cc9da722ce6c1 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 13 Sep 2026 14:37:22 +0700 Subject: [PATCH 43/45] feat: patches(spoof_appver.sh): spoof more `versionCode` Signed-off-by: Cuynu --- MBCPApp/patches/spoof_appver.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/MBCPApp/patches/spoof_appver.sh b/MBCPApp/patches/spoof_appver.sh index d2d1868..191ddfb 100644 --- a/MBCPApp/patches/spoof_appver.sh +++ b/MBCPApp/patches/spoof_appver.sh @@ -150,6 +150,24 @@ 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' From d5eab6d854d40faeacdc36e04da265910f5fede8 Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 13 Sep 2026 14:54:45 +0700 Subject: [PATCH 44/45] feat: patches(target_sdk_34.sh): adapt with targetSdk 36 for v6.5.20+ Signed-off-by: Cuynu --- MBCPApp/patches/target_sdk_34.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MBCPApp/patches/target_sdk_34.sh b/MBCPApp/patches/target_sdk_34.sh index ac4e793..392aeee 100644 --- a/MBCPApp/patches/target_sdk_34.sh +++ b/MBCPApp/patches/target_sdk_34.sh @@ -5,4 +5,7 @@ # 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 From c89ae14ad16cc36ac979905a44e8752bf526e70b Mon Sep 17 00:00:00 2001 From: Cuynu Date: Sun, 11 Oct 2026 23:41:41 +0700 Subject: [PATCH 45/45] fix: patches(spoof_appver.sh): missing versionCode for v6.5.14 Signed-off-by: Cuynu --- MBCPApp/patches/spoof_appver.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MBCPApp/patches/spoof_appver.sh b/MBCPApp/patches/spoof_appver.sh index 191ddfb..b056436 100644 --- a/MBCPApp/patches/spoof_appver.sh +++ b/MBCPApp/patches/spoof_appver.sh @@ -144,6 +144,9 @@ 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'