Compare commits

...
Sign in to create a new pull request.
Message SHA1
feat: zdefend-fix(action.sh): handle folk mount API for folkpatch
built-in mount API (which is magic mount) is enabled in case of no metamodule for folkpatch users.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-10-14 01:13:55 +07:00
daab5f1f1b
fix: remoteupdate.json: wrong zipUrl link
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-22 10:01:16 +07:00
8534a76f63
feat: bump v4.4-mb (p2)
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-22 09:58:40 +07:00
6a81cd4038
feat: bump v4.4-mb
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-22 09:57:43 +07:00
75b2c61bfc
feat: zdefend-fix(hosts): new zimperium eu host
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-14 03:31:05 +07:00
4f07820183
feat: zdefend-fix(action.sh): delete all files with size larger than 2000kb
only zimperium has such size

should not affect any other components like vkey vtap or ekyc

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-14 03:29:36 +07:00
8555518556
feat: zdefend-fix(action.sh): check for mountify & handle disabled metamodule
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-14 02:39:10 +07:00
bde1aa69aa
fix: zdefend-fix(action.sh): missing timeout check & wrong exit condition
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-14 02:27:11 +07:00
ad692e5db0
feat: zdefend-fix(action.sh): check for network before zimperium test
also detect for /data/adb/magisk before deleting /data/magisk and magisk backup

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-14 02:19:43 +07:00
393f25caf0
fix: zdefend-fix(module.prop): typo & correct vtap meaning
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-12 22:22:19 +07:00
dc1fb89fa1
feat: zdefend-fix(action.sh): new implementation for v6.5.7+
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-10 03:58:29 +07:00
0a0e468763
fix: zdefend-fix(customize.sh): module failing to install
due to incorrect app detection method

APKPATH is not present yet but still using it to check, cause false positive

using find instead

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-10 03:39:26 +07:00
f0f5782839
feat: zdefend-fix(customize.sh): check for built-in magisk systemless hosts and disable it
it conflict with this module and need to be disabled

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-10 01:50:04 +07:00
83787fa675
feat: zdefend-fix(customize.sh): check for v6.5.7+ and use notify to use new method
while keep old method in codebase for who still use older app, with condition to check app version.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-06 17:46:02 +07:00
f55c7a5674
feat: zdefend-fix(customize.sh): use new method to detect original app
libvvb2060.so` is blacklisted by MB since v6.5.7+

if it's getting deleted, the app will refuse to login with checksum error dialog (GW934)

i switch to check for mbcp* instead, not found = original app

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-29 02:10:19 +07:00
2672c08d67
fix: zdefend-fix(customize.sh): missing folder condition checks
-q flag for some grep operations

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-16 19:23:10 +07:00
797a71f394
feat: zdefend-fix(customize.sh): remove vtap firmware from app data folder & misc changes
current firmware in app data folder only get removed if `fix_vtap_cert` patch is found in app

helpful for restoring old detection behavior

added grep check for magisk.db to check if `com.mbmobile` is in Denylist or not, some devices does not put the app to denylist even though the command is executed

remove restriction for bypassed app

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-09 12:30:38 +07:00
f034bc1e47
feat: zdefend-fix(customize.sh): check for older LSPosed and open link to install Vector
other LSPosed can be used aswell, as long as it newer than 7199+

older LSPosed causes [Device is not compatible] dialog in app with VTAP 40202 error [Runtime Tampering]

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-05 16:33:48 +07:00
d479bfa178
fix: remoteupdate.json: wrong zipUrl link
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-01 22:11:36 +07:00
77de34d008
feat: bump v4.3-mb
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-01 22:05:51 +07:00
80af150493
fix: zdefend-fix(customize.sh): missing flags
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-01 21:56:29 +07:00
7370badbf7
feat: zdefend-fix(customize.sh): handle app reinstallation fail in selinux permissive case
also cleanup after module installation

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-01 21:52:01 +07:00
5ccdc451c9
fix: zdefend-fix(customize.sh): app installation failure does not exit
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-01 21:07:43 +07:00
f1a4011be6
feat: zdefend-fix(customize.sh): handle reinstall app after MBCP app check
move selinux check to after app check

also handle app installation failure too

some other changes idk

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-01 20:34:31 +07:00
8345757644
fix: remoteupdate.json: wrong zipUrl link
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-01 17:59:37 +07:00
96cbf6ba7a
feat: bump v4.2-mb
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-01 17:48:33 +07:00
729d4b2d84
feat: zdefend-fix(customize.sh): handle selinux permissive & move from vtapfix to afterinstall
reinstalling app itself when selinux is permissive, so the app can work without vtap 40202 error

check selinux status before get apk path, so it wont show duplicate apk path

vtapfix is deprecated, it is now afterinstall page.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-05-01 17:28:17 +07:00
8130cd792b
feat: customize.sh: check for bindhost & require user to install bindhost variant instead
test

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-04-06 18:11:29 +07:00
b3ac7deb04
feat: customize.sh: set selinux to enforcing
helpful for some roms with permissive by default, fixes 40202 vtap fail for v6.4.80+ with new vtap check

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-02-05 21:43:00 +07:00
7d9d0e6944
fix: customize.sh: wrong ANDROIDSDK version
must be 32 instead, the flag is greeter than, not equal to 33, so it need to be 32.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-02-05 20:48:49 +07:00
bc3863ae7c
fix: remoteupdate.json: wrong zipUrl link
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-02-01 17:07:42 +07:00
e254f4f699
feat: bump v4.1-mb
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-02-01 17:03:31 +07:00
2d8bb3c61b
feat: customize.sh: check for already bypassed app
app comes with zimperium bypass patches does not need to install this module since it is useless anyway

for prebulit users, it's called FullTest variant.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-02-01 11:37:13 +07:00
08b489e6b1
feat: customize.sh: check vtap status again by call from vtapfail function & misc changes
added -q flag to not print all vtap status anymore

also check crash for old VTAP activity

no longer rely on root manager `packageName` to open vtapfix since it can be be randomized

added restore network after vtap fails multiple times

for `vtapstillfail`: notice that the fix is needed

new vtap phase and start app phase

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-28 17:17:38 +07:00
b92e2b5c45
feat: new VTAP fail ~check method & vtapfail/vtapstillfail as a function
using logcat for finding VTAP activity, if it exists then open vtapfix site

can handle some specific cases such as VTAP is provisioned, but the app not work and crashing or opens VTAP activity

it might happens with KernelSU (original packageName) , the app is triggering but VTAP still got provisioned

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-26 20:10:47 +07:00
31c180b3ac
fix: customize.sh: wrong second
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-24 17:30:57 +07:00
6ce64a430b
feat: do not block installation for kitsune 30.6 & nirtal magisk users
with warning about data risk and 15 seconds delay

someone created the another fork of mbzdefend-fix and push it to guthib and bullying me

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-24 17:27:39 +07:00
30b15d6e1d
fix: customize.sh: reduce to just exit instead of uninstalling malicious magisk app
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 18:05:30 +07:00
2b1b302abe
feat: customize.sh: timer before uninstallation
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 17:44:25 +07:00
99003729f1
feat: customize.sh: service.sh: detect and uninstall unknown magisk
there's new proprietary nirtal magisk, which is found from Telegram, this Magisk is unknown and the developer is anonymous.

it might malicious, and takes user data

im not going to allow use of this root impl, this commit will uninstall that proprietary nirtal magisk, as long as the app is not hidden with randomized packageName.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 17:16:24 +07:00
04779ece8f
fix: remoteupdate.json: wrong zipUrl
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 16:48:01 +07:00
2bc6f70950
readme: link fixes
brain issues

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 16:38:09 +07:00
cef398c817
readme: build guide & link changes
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 16:36:48 +07:00
732e93d59e
feat: bump v4.0-mb
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 16:33:41 +07:00
6c7ba9a9e3
feat: service.sh: delete module itself if proprietary kitsune mask is found
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 16:31:10 +07:00
32f85c3f51
feat: customize.sh: hide com.tsng.hidemyapplist package during module installation
vtap is flagging this application as runtime tampering

since this app is now outdated, there another fork for it like HMA-OSS or HMAL-OSS which is way lots better than the original one

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 01:46:22 +07:00
c6539569af
feat: customize.sh: enforce foss kitsune mask
there's new proprietary magisk based on the original kitsune mask, named as kitsune mask revived

this one is shit because it doesn't have source code and it's UI looks like vibe coded with liquid glass style

im not going to allow use of this root impl, this commit should work and prevent proprietary kitsune mask users from install this module, as long as the app is not hidden with randomized packageName.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-16 00:51:50 +07:00
9959338b38
fix: wrong ip
122.122.0.122 worked from rooted shell, but not with module installation:(

i'm going to use medium.com again

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-14 00:17:59 +07:00
3340176c10
feat: redirect to fake IP instead
also reference code

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-13 23:56:12 +07:00
bafb98b6a5
fix: customize.sh: unzip shortcut after termux bootstrap is found
prevent copy error for users who don't use termux

more effective

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-10 21:36:20 +07:00
3cc2cd590c
feat: customize.sh: depends on syslang to open right mbcpinstall page
also only display deleting /data/magisk if it's actually found

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-01-10 21:26:47 +07:00
0e76d406f0
readme: remove current module version
i forgotten to change this version when bumping new module version many times, its need to be removed for good so i don't need to worry about it anymore

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2025-12-19 16:56:13 +07:00
3edb8c2050
fix: remoteupdate.json: invaild link
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2025-12-19 16:44:48 +07:00
47c17e4ed6
feat: bump v3.9-mb
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2025-12-19 16:39:40 +07:00
8ac6746853
feat: action.sh: also check vtap provision status for action script
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2025-12-19 16:35:57 +07:00
3e18ede229
fix: remoteupdate.json: invaild link
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2025-12-18 16:21:27 +07:00
b61bbd4dc4
feat: bump v3.8-mb
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2025-12-18 16:07:40 +07:00
8e59ce4252
11 changed files with 416 additions and 91 deletions

View file

@ -1,9 +1,9 @@
# MB ZDefend Bypass Module for MB/MBCP
- Current module version : `v3.6-mb` | Download from [releases tab](https://git.disroot.org/cuynu/mbzdefend-fix/releases)
- Download from [releases tab](/mbcp/mbzdefend-fix/releases)
- Author : [Cuynu](https://git.disroot.org/cuynu) and [backslashxx](https://github.com/backslashxx) for sed script
- Author : [Cuynu](/cuynu) and [backslashxx](https://github.com/backslashxx) for sed script
- Status : Working with MBCP!
@ -14,6 +14,13 @@
## Why this exists ?
- Zimperium and MB Bank development team didn't respect our freedom and privacy by blocking rooted devices (KernelSU/KernelSU-Next/Magisk/APatch), device using LSPosed with a screen showing "THIẾT BỊ JAILBROKEN HOẶC ROOTED" or "JAILBROKEN DEVICE OR ROOTED" (in English) with only "Close app" option.
## Building
```
git clone https://git.disroot.org/mbcp/mbzdefend-fix.git
cd mbzdefend-fix
./createmodule.sh
```
## Source code
This project are licensed under [MIT License](https://git.disroot.org/cuynu/mbzdefend-fix).

View file

@ -1,8 +1,78 @@
# MBZDefend-Fix by Cuynu
Bypass new stupid MB Bank zimperium root/hook detection (does not bypass VTAP root detection)
Bypass MB Bank zimperium root/hook detection (does not bypass VTAP V-Key root detection)
Main repository : [Disroot Forgejo](https://git.disroot.org/mbcp/mbzdefend-fix/)
* As of v3.1-mb+, MBCP is required due to MB limitations from original app.
## Changelogs :
- v4.4-mb
```
feat: zdefend-fix(hosts): new zimperium eu host
feat: zdefend-fix(action.sh): delete all files with size larger than 2000kb
feat: zdefend-fix(action.sh): check for mountify & handle disabled metamodule
fix: zdefend-fix(action.sh): missing timeout check & wrong exit condition
feat: zdefend-fix(action.sh): check for network before zimperium test
fix: zdefend-fix(module.prop): typo & correct vtap meaning
feat: zdefend-fix(action.sh): new implementation for v6.5.7+
fix: zdefend-fix(customize.sh): module failing to install
feat: zdefend-fix(customize.sh): check for built-in magisk systemless hosts and disable it
feat: zdefend-fix(customize.sh): check for v6.5.7+ and use notify to use new method
feat: zdefend-fix(customize.sh): use new method to detect original app
fix: zdefend-fix(customize.sh): missing folder condition checks
feat: zdefend-fix(customize.sh): remove vtap firmware from app data folder & misc changes
feat: zdefend-fix(customize.sh): check for older LSPosed and open link to install Vector
```
- v4.3-mb
```
fix: zdefend-fix(customize.sh): missing flags
feat: zdefend-fix(customize.sh): handle app reinstallation fail in selinux permissive case
fix: zdefend-fix(customize.sh): app installation failure does not exit
feat: zdefend-fix(customize.sh): handle reinstall app after MBCP app check
```
- v4.2-mb
```
feat: zdefend-fix(customize.sh): handle selinux permissive & move from vtapfix to afterinstall
feat: customize.sh: check for bindhost & require user to install bindhost variant instead
feat: customize.sh: set selinux to enforcing
fix: customize.sh: wrong ANDROIDSDK version
```
- v4.1-mb
```
feat: customize.sh: check for already bypassed app
feat: customize.sh: check vtap status again by call from vtapfail function & misc changes
feat: new VTAP fail check method & vtapfail/vtapstillfail as a function
fix: customize.sh: wrong second
feat: do not block installation for kitsune 30.6 & nirtal magisk users
fix: customize.sh: reduce to just exit instead of uninstalling malicious magisk app
feat: customize.sh: timer before uninstallation
feat: customize.sh: service.sh: detect and uninstall unknown magisk
```
- v4.0-mb
```
feat: service.sh: delete module itself if proprietary kitsune mask is found
feat: customize.sh: hide com.tsng.hidemyapplist package during module installation
feat: customize.sh: enforce foss kitsune mask
fix: wrong ip
feat: redirect to fake IP instead
fix: customize.sh: unzip shortcut after termux bootstrap is found
feat: customize.sh: depends on syslang to open right mbcpinstall page
```
- v3.9-mb
```
feat: action.sh: also check vtap provision status for action script
```
- v3.8-mb
```
fix: customize.sh: execute denylist fix before vtap check
```
- v3.7-mb
```
feat: bump v3.7-mb
@ -20,8 +90,6 @@ feat: misc changes
- support english & vietnamese language for MBZDefend-Fix notification
- other changes idk
joke: im not (or is) a developer
```
- v3.5-mb

View file

@ -1,6 +1,6 @@
{
"version": "v3.7-mb",
"versionCode": "37",
"zipUrl": "https://git.disroot.org/mbcp/mbzdefend-fix/releases/download/v3.7-mb/mbzdefend_fix_7e94380.zip",
"version": "v4.4-mb",
"versionCode": "44",
"zipUrl": "https://git.disroot.org/mbcp/mbzdefend-fix/releases/download/v4.4-mb/mbzdefend_fix_6a81cd4.zip",
"changelog": "https://git.disroot.org/cuynu/mbzdefend-fix/raw/branch/main/module_new/CHANGELOG.md"
}

View file

@ -2,25 +2,56 @@
SYSLANGVI="$(getprop persist.sys.locale | grep vi-VN)"
INSTALLEN="https://git.disroot.org/mbcp/info_en/wiki/mbcpinstall"
INSTALLVI="https://git.disroot.org/mbcp/info_vi/wiki/mbcpinstall"
notmbcp() {
echo "MB Bank [com.mbmobile] is installed, but it seems like that the app is NOT MBCP"
echo "Please install MBCP v6.4.60+ in order to use this module !"
am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info/wiki/mbcpinstall
[[ $SYSLANGVI ]] && am start -a android.intent.action.VIEW -d $INSTALLVI || am start -a android.intent.action.VIEW -d $INSTALLEN
exit 1
}
vtapfail() {
echo "VTAP is not provisioned!"
echo "App first normal launch required!"
iptables -t nat -F OUTPUT
am start -n com.mbmobile/io.flutter.plugins.MainActivity
logcat -c
sleep 20
logcat -d | grep VGFullScreenDialog && vtapstillfail
am force-stop com.mbmobile
}
vtapstillfail() {
echo "VTAP provision failed or triggering! Cannot continue!"
echo "If you have low-end device (eg : Vsmart Joy 2+)"
echo "Try to reinstall module again 3 more times."
if [ $SYSLANGVI ]; then
am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_vi/wiki/afterinstall
exit 169
else
am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_en/wiki/afterinstall
exit 169
fi
}
# Check for original MB Bank app
for library in $(find /data/app -name libvvb2060.so | grep com.mbmobile) ; do notmbcp ; done
for library in $(find /data/app -name libtoolChecker.so | grep com.mbmobile) ; do notmbcp ; done
# Check VTAP status to ensure that it must be provisioned
echo "Checking VTAP status..."
echo "VTAP status : " && cat '/data/data/com.mbmobile/databases/vtap' | grep -q "true" && echo "VTAP is provisioned!" || vtapfail || exit 169
echo "Checking VTAP status again..."
cat '/data/data/com.mbmobile/databases/vtap' | grep -q "true" && echo "VTAP is provisioned!" || vtapstillfail || exit 169
# Delete /data/magisk if it exists so MB doesnt failling when eKYC with error code EKYC3002-MS6998 for Magisk users
echo "Deleting /data/magisk if it exists..."
[[ -d /data/magisk ]] && rm -r /data/magisk
[[ -d /data/adb/magisk ]] && rm -r /data/magisk
[[ -d /data/adb/magisk ]] && find /data/. -name 'magisk_backup*' -delete
echo Forcing stop MB Bank...
am force-stop com.mbmobile
echo Starting Flutter activity...
echo "ATTENTION : Network traffic will be redirected to [medium.com] for 20 seconds !!!"
echo "Press [Try again] after got 1005/1007 error on MB, so it's can bypass device not secure dialog !"
logcat -c
rm -rf /data/data/com.mbmobile/files/0*
rm -rf /data/data/com.mbmobile/files/1*
rm -rf /data/data/com.mbmobile/files/2*
@ -32,20 +63,80 @@ echo "Press [Try again] after got 1005/1007 error on MB, so it's can bypass devi
rm -rf /data/data/com.mbmobile/files/8*
rm -rf /data/data/com.mbmobile/files/9*
rm -rf /data/data/com.mbmobile/files/KNOV3PN*
rm -rf /data/data/com.mbmobile/files/zxpolicyme*
rm -rf /data/data/com.mbmobile/files/zxpolicy*
rm -rf /data/data/com.mbmobile/files/policyme*
find /data/data/com.mbmobile/files -size +2000k -delete
iptables -t nat -A OUTPUT -p tcp -d 0/0 -j DNAT --to-destination 162.159.153.4:443
am start -n com.mbmobile/io.flutter.plugins.MainActivity
# VPN connection requires 20 seconds, while normal one only requires 10 seconds
sleep 20
echo "Restoring network traffic"
iptables -t nat -F OUTPUT
if [ $SYSLANGVI ]; then
oldzimperium() {
echo "ATTENTION : Network traffic will be redirected to [medium.com] for 20 seconds !!!"
echo "Press [Try again] after got 1005/1007/VPN error on MB, so it's can bypass device not secure dialog !"
# Reference : https://superuser.com/questions/1248670/redirect-ip-to-another-ip-using-iptables
iptables -t nat -A OUTPUT -p tcp -j DNAT --to-destination 162.159.152.4
am start -n com.mbmobile/io.flutter.plugins.MainActivity
sleep 20
logcat -d | grep VGFullScreenDialog && vtapstillfail
echo "Restoring network traffic"
# Reference : https://gist.github.com/jstrosch/3190568 (Line 7)
iptables -t nat -F
if [ $SYSLANGVI ]; then
su -lp 2000 -c "cmd notification post -S bigtext -t 'MBZDefend-Fix' tag 'LƯU Ý : Vui lòng nhấn [Thử lại] tại màn hình báo lỗi 1005/1007/VPN để vào App MBCP.'" >/dev/null 2>&1
else
else
su -lp 2000 -c "cmd notification post -S bigtext -t 'MBZDefend-Fix' tag 'WARNING : Please click [Try again] on 1005/1007/VPN screen to continue entering MBCP App.'" >/dev/null 2>&1
fi
sleep 3
fi
sleep 3
}
nometamodule() {
echo "No meta-module installed! Please install one and reboot then try again!!!!"
echo "We recommend Hybird Mount..."
echo "Opening release page in 5 seconds..."
am start -a android.intent.action.VIEW -d https://github.com/Hybrid-Mount/meta-hybrid_mount/releases
sleep 5
exit 1
}
checkmetamodule() {
[ ! -d /data/adb/metamodule ] && nometamodule
}
folkmetamodulecheck() {
[ ! -d /data/adb/metamodule ] && folkHandle
}
folkHandle() {
# enable built-in meta magic mount folk mount api
touch /data/adb/.magic_mount_enable
echo "This module requires metamodule, but you don't have any installed"
echo "So we enabled built-in [Folk Mount API] instead. Please reboot and run action again."
exit 1
}
zimperiumpresent() {
echo "Zimperium still present! Cannot continue :("
echo "Checking if your current root implementation has metamodule..."
[ -f /data/adb/modules/mountify ] && echo "You are using [Mountify] metamodule!" && echo "Please install [bindhosts] module and use MBZDefend-Fix bindhosts variant or use custom DNS with host blocking instead!" && exit 1
[ -f /data/adb/metamodule/disable ] && echo "Current installed metamodule is disabled, enabling again!" && rm -f /data/adb/metamodule/disable && echo "Reboot and try again?" && exit 1
[ -f /data/adb/ksud ] && cat /data/adb/ksud | grep -q ksud::metamodule && checkmetamodule
# check for folkpatch before apatch
[ -f /data/adb/apd ] && cat /data/adb/apd | grep -q FolkPatch && folkmetamodulecheck
[ -f /data/adb/apd ] && cat /data/adb/apd | grep -q apd::metamodule && checkmetamodule
echo "Please remove any module override hosts, or use alternative DNS with zimperium host blocking!"
exit 1
}
strongerzimperium() {
echo "Testing network..."
curl -s --max-time 5 google.com | grep -q html* || echo "No network available, Cannot continue:(" || exit 1
echo "Testing zimperium..."
curl -s --max-time 10 gts.zimperium.com | grep -q html* && zimperiumpresent
echo "Enabling [com.mbmobile] app..."
pm enable com.mbmobile | grep -q enabled* && echo "[com.mbmobile] is now enabled!"
echo "Opening app..."
am start -n com.mbmobile/io.flutter.plugins.MainActivity
}
# check v6.5.7+
find /data/app -name libcode.so | grep -q com.mbmobile && strongerzimperium || oldzimperium

View file

@ -3,27 +3,188 @@
SYSLANGVI="$(getprop persist.sys.locale | grep vi-VN)"
ANDROIDSDK="$(getprop ro.build.version.sdk)"
INSTALLVI="https://git.disroot.org/mbcp/info_vi/wiki/mbcpinstall"
INSTALLEN="https://git.disroot.org/mbcp/info_en/wiki/mbcpinstall"
SELINUXSTATUS="$(getenforce)"
echo "SELinux status : $SELINUXSTATUS"
[ -f /data/local/tmp/lastappfail ] && echo "Last app installation fail: YES"
[ ! -f /data/local/tmp/lastappfail ] && echo "Last app installation fail : NO"
getapkpath() {
dumpsys package com.mbmobile | grep path: > /data/local/tmp/path.txt
sed -i 's| path: ||g' /data/local/tmp/path.txt
APKPATH="$(cat /data/local/tmp/path.txt)"
echo "APK Path: $APKPATH"
}
# Clear old iptables
iptables -t nat -F
alreadybypassed() {
echo "Current MBCP app comes with Zimperium bypass patches"
echo "There is no need to install this module."
echo "Continue anyway then."
}
nonfosskitsune() {
echo "Proprietary Kitsune found! Your data might be at risk!"
echo "Consider install older FOSS Kitsune Mask to protect your data!"
echo "If you agree with the risk, wait 15 seconds then module will continue to install"
sleep 15
}
maliciousmagisk() {
echo "Nirtal Magisk found! Your data might be at risk!"
echo "Consider install official Magisk to protect your data !"
echo "If you agree with the risk, wait 15 seconds then module will continue to install"
sleep 15
}
notmbcp() {
echo "MB Bank [com.mbmobile] is installed, but it seems like that the app is NOT MBCP"
echo "MB Bank [com.mbmobile] is installed, but the app is NOT MBCP :("
echo "Please install MBCP v6.4.60+ in order to use this module !"
am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info/wiki/mbcpinstall
[[ $SYSLANGVI ]] && am start -a android.intent.action.VIEW -d $INSTALLVI >/dev/null 2>&1 || am start -a android.intent.action.VIEW -d $INSTALLEN >/dev/null 2>&1
exit 1
}
bindhostfound() {
echo "Bindhost module found !!"
echo "Please install MBZDefend-Fix with [bindhost] variant instead!"
exit 1
}
# old HideMyAppList is triggering VTAP, that's why it's must be hidden
tsnghma() {
echo "Dr-TSNG HideMyAppList detected!"
echo "Hiding app..."
pm hide com.tsng.hidemyapplist >/dev/null 2>&1
}
oldlsposed() {
echo "--------INCOMPATIBLE LSPOSED DETECTED--------"
echo "You are using older version of LSPosed!"
echo "From MB v6.4.80+, you need to use LSPosed with 7199+"
echo "Please install newer LSPosed to continue."
echo "We recommend to use Vector, which is formly named as LSPosed."
echo "You can choose other LSPosed, as long as it newer than 7199+"
echo "---------------------------------------------"
am start -a android.intent.action.VIEW -d https://github.com/JingMatrix/Vector/releases >/dev/null 2>&1
echo "Also remove old LSPosed module if you install Vector!"
echo "After installed, reboot your device, clear MBCP app data, then install this module again."
exit 1
}
removeoldfw() {
echo "Removing old VTAP (V-Key) firmware..."
[ -f /data/data/com.mbmobile/files/firmware ] && rm -rf /data/data/com.mbmobile/files/firmware
[ -f /data/data/com.mbmobile/files/profile ] rm -rf /data/data/com.mbmobile/files/profile
}
vtapfail() {
echo "VTAP is not provisioned!"
echo "App first normal launch required!"
iptables -t nat -F
am start -n com.mbmobile/io.flutter.plugins.MainActivity
logcat -c
sleep 20
logcat -d | grep VGFullScreenDialog && vtapstillfail
logcat -d | grep -q com.vtap.MaintenanceActivity && vtapstillfail
am force-stop com.mbmobile
checkvtapagain
}
vtapstillfail() {
iptables -t nat -F
echo "VTAP provision failed or triggering! Cannot continue!"
echo "Please follow [afterinstall] for fix steps."
echo "In case if you already done :"
echo "Try to reinstall module again 3 more times."
sleep 3
if [ $SYSLANGVI ]; then
am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_vi/wiki/afterinstall >/dev/null 2>&1
am force-stop com.mbmobile
exit 169
else
am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_en/wiki/afterinstall >/dev/null 2>&1
exit 169
fi
}
checkvtapagain() {
echo "Checking VTAP status again..."
cat '/data/data/com.mbmobile/databases/vtap' | grep -q 'isProvisioningDone :true' && echo "VTAP is provisioned !" || vtapstillfail || exit 169
}
installfail() {
echo "App reinstallation failed, please check if CorePatch / Disable App Verification is working or not!"
touch /data/local/tmp/lastappfail
exit 1
}
selinuxhandle() {
getapkpath > /dev/null 2&>1
echo "SELinux is Permissive! Enforcing is required!"
echo "Forcing SELinux state to Enforcing..."
setenforce enforcing
echo "Reinstalling app..."
[ $(pm install $APKPATH | grep Success) ] && echo "Successful reinstall app!" || installfail
rm -rf /data/local/tmp/lastappfail
}
magiskhosts() {
echo "Magisk systemless hosts detected!"
echo "This module should be disabled to work with this module!"
touch /data/adb/modules/hosts/disable && echo "Disabled systemless hosts module!"
}
[[ -d /data/adb/modules/hosts ]] && magiskhosts
[[ -d /data/adb/modules/bindhosts ]] && bindhostfound
[[ -d /data/data/com.tsng.hidemyapplist ]] && tsnghma
[[ -d /data/data/io.github.Nirtal0.magisk ]] && maliciousmagisk
[[ -d /data/data/io.github.x0eg0.magisk ]] && nonfosskitsune
[ -d /data/adb/modules/zygisk_lsposed ] && cat /data/adb/modules/zygisk_lsposed/module.prop | grep versionCode=7024 && oldlsposed
# Check if MB is installed or nope
# Remove this one can cause the module does not work properly!
if [ -d /data/data/com.mbmobile ]; then
echo ""
echo "MB/MBCP app found on device!"
else
echo "MB/MBCP not found! Please install it!"
am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info/wiki/mbcpinstall
[[ $SYSLANGVI ]] && am start -a android.intent.action.VIEW -d $INSTALLVI || am start -a android.intent.action.VIEW -d $INSTALLEN >/dev/null 2>&1
exit 1
fi
# Check for original MB Bank app
# The module does NOT work with original unpatched app. It's pointless to remove the check. You think it works with original app? Nah.
find /data/app -name libtoolChecker.so | grep -q com.mbmobile && notmbcp
# last app reinstallation fail with selinux permissive
[ -f /data/local/tmp/lastappfail ] && selinuxhandle
# get apk path first
# only get apkpath if selinux is enforcing
# if the selinux state is permissive, handle app installation first, then getapkpath after it
[ $(getenforce | grep Enforcing) ] && getapkpath
# v6.4.80+ requires enforcing SELinux in order to prevent 40202 VTAP fail (Runtime Tampering) error
[ $(getenforce | grep Permissive) ] && selinuxhandle && getapkpath
# Check if Termux and it's bootstrap is initialized or not
# Remove this code broke Termux support
if [ -d /data/data/com.termux ]; then
if [[ -d /data/data/com.termux/files/home ]]; then
echo "Termux bootstrap found!"
appops set com.termux SYSTEM_ALERT_WINDOW allow
unzip -o "$ZIPFILE" 'script/MB_Bank.sh' -d '/data/user/0/com.termux/files/home/.shortcuts/'
else
echo "Termux bootstrap not found! Launching Termux..."
am start -n com.termux/com.termux.app.TermuxActivity
@ -35,13 +196,16 @@ else
echo "Termux not installed! skipping"
fi
# Check for original MB Bank app
for library in $(find /data/app -name libvvb2060.so | grep com.mbmobile) ; do notmbcp ; done
# Remove vtap (v-key) firmware from data folder (in case if fix vtap cert patch is applied)
# Helpful for older app version (v6.4.92+) or restore to older detection behavior in newer app
unzip -l $APKPATH | grep -q fix_vtap_cert* && removeoldfw
# Grant permission for MB/MBCP app
# Check for bypassed app
unzip -l $APKPATH | grep -q remove_new_zimperium_check* && alreadybypassed
# Grant permission for MB/MBCP app
if [ $ANDROIDSDK -gt 33 ]; then
if [ $ANDROIDSDK -gt 32 ]; then
echo "Granting MB/MBCP app permission..."
pm grant com.mbmobile android.permission.CAMERA
pm grant com.mbmobile android.permission.RECORD_AUDIO
@ -58,38 +222,34 @@ else
pm grant com.mbmobile android.permission.READ_PHONE_STATE
fi
unzip -o "$ZIPFILE" 'vtapnotinit.sh'
unzip -o "$ZIPFILE" 'vtapstillfail.sh'
chmod +x 'vtapstillfail.sh'
chmod +x 'vtapnotinit.sh'
# Delete /data/magisk if it exists so MB doesnt failling when eKYC with error code EKYC3002-MS6998 for Magisk users
echo Deleting /data/magisk if it exists...
[ -d /data/magisk ] && rm -r /data/magisk
[ -d /data/magisk ] && echo "Magisk folder found! deleting..." && rm -r /data/magisk
find /data -name 'magisk_backup*' -delete
echo ---------------------------
if [ -d /data/adb/magisk ]; then
echo "Enabling Denylist for [com.mbmobile]..."
magisk --denylist enable
magisk --denylist add com.mbmobile
cat /data/adb/magisk.db | grep mbmobile* > /dev/null 2>&1 && echo "[com.mbmobile] is in Denylist now, nice!" || echo "Failed to put [com.mbmobile] to Denylist! Please do it manually or follow afterinstall steps !!!"
else
echo "Magisk not detected! Skipping Denylist"
fi
# Check VTAP status to ensure that it must be provisioned
echo "Checking VTAP status..."
echo "VTAP status : " && cat '/data/data/com.mbmobile/databases/vtap' | grep "true" && echo "VTAP is provisioned!" || sh 'vtapnotinit.sh'
echo "Checking VTAP status again..."
cat '/data/data/com.mbmobile/databases/vtap' | grep "true" && echo "VTAP is provisioned!" || sh 'vtapstillfail.sh' || exit 169
echo Force closing MBBank app...
echo "------VTAP (V-Key) phase------"
echo "Checking VTAP (V-Key) status..."
cat '/data/data/com.mbmobile/databases/vtap' | grep -q 'isProvisioningDone :true' && echo "VTAP is provisioned !" || vtapfail || exit 169
echo Force closing MBCP app...
am force-stop com.mbmobile
echo "------------------------------"
# Clear device logcat to ensure that no previous VTAP activity exists
logcat -c
# Support for Biz MB Bank v2.0 (Flutter version)
for library in $(find /data/app -name libholdingshadow.so | grep com.mbbank.biz.prod) ; do rm $library ; done
sleep 2
unzip -o "$ZIPFILE" 'script/MB_Bank.sh' -d '/data/user/0/com.termux/files/home/.shortcuts/'
rm -rf /data/data/com.mbmobile/files/0*
rm -rf /data/data/com.mbmobile/files/1*
rm -rf /data/data/com.mbmobile/files/2*
@ -103,26 +263,45 @@ unzip -o "$ZIPFILE" 'script/MB_Bank.sh' -d '/data/user/0/com.termux/files/home/.
rm -rf /data/data/com.mbmobile/files/KNOV3PN*
rm -rf /data/data/com.mbmobile/files/zxpolicyme*
rm -rf /data/data/com.mbmobile/files/policyme*
oldzimperium() {
echo "------Start app phase------"
echo Starting Flutter activity...
echo "ATTENTION : Network traffic will be redirected to [medium.com] for 20 seconds !!!"
echo "Press [Try again] after got 1005/1007 error on MB, so it's can bypass device not secure dialog !"
iptables -t nat -A OUTPUT -p tcp -d 0/0 -j DNAT --to-destination 162.159.153.4:443
am start -n com.mbmobile/io.flutter.plugins.MainActivity
echo "Press [Try again] after got 1005/1007/VPN error on MB, so it's can bypass device not secure dialog !"
# Reference : https://superuser.com/questions/1248670/redirect-ip-to-another-ip-using-iptables
iptables -t nat -A OUTPUT -p tcp -j DNAT --to-destination 162.159.152.4
am start -n com.mbmobile/io.flutter.plugins.MainActivity >/dev/null 2>&1
sleep 20
echo "---------------------------"
# Look for VTAP activity from logcat
logcat -d | grep -q VGFullScreenDialog && vtapstillfail
logcat -d | grep -q com.vtap.MaintenanceActivity && vtapstillfail
echo "Restoring network traffic"
iptables -t nat -F OUTPUT
# Reference : https://gist.github.com/jstrosch/3190568 (Line 7)
iptables -t nat -F
if [ $SYSLANGVI ]; then
su -lp 2000 -c "cmd notification post -S bigtext -t 'MBZDefend-Fix' tag 'LƯU Ý : Vui lòng nhấn [Thử lại] tại màn hình báo lỗi 1005/1007/VPN để vào App MBCP. Sau khi thao tác xong, nên khởi động lại thiết bị ngay.'" >/dev/null 2>&1
[ -d /data/adb/magisk ] && am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_vi/wiki/vtapfix
[ -d /data/data/me.weishu.kernelsu ] && am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_vi/wiki/vtapfix
else
su -lp 2000 -c "cmd notification post -S bigtext -t 'MBZDefend-Fix' tag 'WARNING : Please click [Try again] on 1005/1007/VPN screen to continue entering MBCP App, then reboot your device ASAP.'" >/dev/null 2>&1
[ -d /data/adb/magisk ] && am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_en/wiki/vtapfix
[ -d /data/data/me.weishu.kernelsu ] && am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_en/wiki/vtapfix
su -lp 2000 -c "cmd notification post -S bigtext -t 'MBZDefend-Fix' tag 'WARNING : Please click [Try again] on 1005/1007/VPN screen to continue entering MBCP App, then reboot your device ASAP.'" >/dev/null 2>&1
fi
sleep 3
}
strongerzimperium() {
echo "You are using v6.5.7+, old method no longer work."
echo "Using new method instead."
echo "Disabling [com.mbmobile] app (to prevent open before fix)"
pm disable com.mbmobile | grep -q disabled* && echo "Reboot your device, and run [Action] for this module from root manager to continue!" || echo "Do not open app, reboot your device, run [Action] from root manager for this module to continue!"
}
# check for v6.5.7+ and notify to use new method
unzip -l $APKPATH | grep -q libcode.so && strongerzimperium || oldzimperium
# cleanup
rm -rf /data/local/tmp/path.txt
rm -rf /data/local/tmp/lastappfail

View file

@ -1,7 +1,7 @@
id=zdefend-fix
name=MB ZDefend Bypass
version=v3.7-mb
versionCode=37
version=v4.4-mb
versionCode=44
author=cuynu, xfirstnamelastname
description=Bypass "Rooted device or JAILBROKEN" screen for MBCP App by trick the app detection libraries. \nNOTE : This does not bypass VTAP scrren, you have to fix it yourself is you are using Magisk.
description=Bypass "Rooted device or JAILBROKEN" screen for MBCP App by trick the app detection libraries. \nNOTE : This does not bypass V-Key (VTAP) screen, you have to fix it if you are using Magisk (or original KernelSU).
updateJson=https://git.disroot.org/cuynu/mbzdefend-fix/raw/branch/main/module_new/remoteupdate.json

View file

@ -19,11 +19,14 @@ echo "Press [Try again] after got 1005/1007 error on MB, so it's can bypass devi
su -c rm -rf /data/data/com.mbmobile/files/zxpolicyme*
su -c rm -rf /data/data/com.mbmobile/files/policyme*
su -c iptables -t nat -A OUTPUT -p tcp -d 0/0 -j DNAT --to-destination 162.159.153.4:443
# Reference : https://superuser.com/questions/1248670/redirect-ip-to-another-ip-using-iptables
iptables -t nat -A OUTPUT -p tcp -j DNAT --to-destination 162.159.152.4
am start -n com.mbmobile/io.flutter.plugins.MainActivity
# VPN connection requires 20 seconds, while normal one only requires 10 seconds
sleep 20
echo "Restoring network traffic..."
echo "Restoring network traffic"
# Reference : https://gist.github.com/jstrosch/3190568 (Line 7)
iptables -t nat -F
su -c iptables -t nat -F OUTPUT
if [ $SYSLANGVI ]; then
su -lp 2000 -c "cmd notification post -S bigtext -t 'MBZDefend-Fix' tag 'LƯU Ý : Vui lòng nhấn [Thử lại] tại màn hình báo lỗi 1005/1007/VPN để vào App MBCP.'" >/dev/null 2>&1

View file

@ -6,7 +6,7 @@ done
# Delete /data/magisk if it exists so MB doesnt failling when eKYC with error code EKYC3002-MS6998 for Magisk users
[[ -d /data/magisk ]] && rm -r /data/magisk
rm -rf /data/data/com.mbmobile/files/0*
rm -rf /data/data/com.mbmobile/files/0*
rm -rf /data/data/com.mbmobile/files/1*
rm -rf /data/data/com.mbmobile/files/2*
rm -rf /data/data/com.mbmobile/files/3*

View file

@ -3,4 +3,4 @@
127.0.0.1 zimperium.com
127.0.0.1 cdn.zimperium.com
127.0.0.1 gts.zimperium.com
127.0.0.1 eu01.zimperium.com

View file

@ -1,7 +0,0 @@
#!/system/bin/sh
echo "VTAP is not provisioned!"
echo "App first normal launch required!"
iptables -t nat -F OUTPUT
am start -n com.mbmobile/io.flutter.plugins.MainActivity
sleep 10
am force-stop com.mbmobile

View file

@ -1,16 +0,0 @@
#!/system/bin/sh
SYSLANGVI="$(getprop persist.sys.locale | grep vi-VN)"
echo "VTAP provision failed! Cannot continue!"
echo "If you have low-end device (eg : Vsmart Joy 2+)"
echo "Try to reinstall module again 3 more times."
if [ $SYSLANGVI ]; then
am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_vi/wiki/vtapfix
else
am start -a android.intent.action.VIEW -d https://git.disroot.org/mbcp/info_en/wiki/vtapfix
fi
exit 100