[SQUASH] refactor: treewide: separate patches, provide common common, refactor change_app_logo, commonize and enhance logging

adding new patches is now trivial:

  cd patches
  cp TEMPLATE patch_name_whatever.sh
  # then just fill in patch name and ver clamp if desired

this gets rid of the need for excessive if-elses and not-so-pleasing indents

for logging, instead of using pure echo, 4 new "levels" can be utilized
- `info` : normal
- `good` : info but have green color?
- `warn` : warning
- `err` : error

Signed-off-by: fukiame <fukiame@proton.me>
This commit is contained in:
Hikarie Fukirei 2025-07-30 13:46:47 +07:00
commit 0a89bce342
29 changed files with 907 additions and 21 deletions

3
.gitignore vendored
View file

@ -2,4 +2,5 @@ mbapk/
mbcpapp_apk/
mbcpapp_apk/
tools/
.DS_STORE
MBCPApp/patch.sh
.DS_STORE

79
MBCPApp/common.sh Normal file
View file

@ -0,0 +1,79 @@
#!/usr/bin/env bash
# vim: expandtab tabstop=4 shiftwidth=4
# imported from https://github.com/dylanaraps/pure-bash-bible
bb_split() {
# Usage: split "string" "delimiter"
IFS=$'\n' read -d "" -ra arr <<< "${1//$2/$'\n'}"
# printf '%s\n' "${arr[@]}"
printf '%s\n' "${arr[$3]}"
}
# imported from https://github.com/dylanaraps/pure-sh-bible
lstrip() {
# Usage: lstrip "string" "pattern"
printf '%s\n' "${1##$2}"
}
# imported from https://github.com/dylanaraps/pure-sh-bible
rstrip() {
# Usage: rstrip "string" "pattern"
printf '%s\n' "${1%%$2}"
}
getvar() {
# Usage: getline "n" "pattern" "file"
while IFS= read -r line; do
i=$((i+1))
[ "$i" = "$1" ] && printf '%s\n' "${line##$2}" && return
done < "$3"
}
sed_libapp() {
target=$(bb_split "$1" '|' '1')
replacement=$(bb_split "$1" '|' '2')
(
sed -i "$1" "$DIRPATH"/mbapk/mbapk_unpacked/lib/arm64-v8a/libapp.so
sed -i "$1" "$DIRPATH"/mbapk/mbapk_unpacked/lib/armeabi-v7a/libapp.so
) && info "[sed_libapp] [$target] -> [$replacement]" || warn "[sed_libapp] replacing [$target] failed !"
}
# libdesignersactivists.so are former known as libZDefend.so
# MB moved it to libdesignersactivists.so since v6.4.48+
# this currently is placeholder, and will be implemented later
sed_libzdefend() {
target=$(bb_split "$1" '|' '1')
replacement=$(bb_split "$1" '|' '2')
(
sed -i "$1" "$DIRPATH"/mbapk/mbapk_unpacked/lib/arm64-v8a/libdesignersactivists.so
sed -i "$1" "$DIRPATH"/mbapk/mbapk_unpacked/lib/armeabi-v7a/libdesignersactivists.so
) && info "[sed_libzdefend] [$target] -> [$replacement]" || warn "[sed_libzdefend] replacing [$target] failed !"
}
manifest_remove() {
sed -i "/$1/d" "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml && \
info "[manifest_remove] removing $1" || \
warn "[manifest_remove] removing $1 failed"
}
get_mb_ver() {
a="$(grep -m1 'versionName' "$DIRPATH"/mbapk/mbapk_unpacked/apktool.yml)"
a="$(bb_split "$a" ':' '1')"
bb_split "$a" '.' '2'
}
good() {
echo -e "\033[32m[$(date +"%H:%M:%S:%2N")] [INFO] $1\033[0m"
}
info() {
echo "[$(date +"%H:%M:%S:%2N")] [INFO] $1"
}
warn() {
echo -e "\033[33m[$(date +"%H:%M:%S:%2N")] [WARN] $1\033[0m"
}
err() {
echo -e "\033[31m[$(date +"%H:%M:%S:%2N")] [ERROR] $1\033[0m"
}

View file

@ -34,8 +34,8 @@ if [ "$opt" == 'Bypass 1200 error [v6.4.45]' ]; then
# Checks for MBShield, if exists then exit function
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ]
then
echo "INFO : MBShield found on unpacked APK ! Bypass signature checks won't be possible if MBShield is present on current unpacked APK !"
echo "INFO : Please use supported version !!!"
info "MBShield found on unpacked APK ! Bypass signature checks won't be possible if MBShield 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"
echo "Some specific version has no MBShield can also be used :"

View file

@ -13,7 +13,7 @@ clear
# Check if user runs on actual Linux environment
if uname -a | grep -i Linux ; then
echo "INFO : You have Linux environment :)"
info "You have Linux environment :)"
fi
# Check if user is trying to run under WSL (Windows Subsystem for Linux)
@ -27,20 +27,21 @@ fi
if command -v figlet ; then
FIGLET=figlet
else
echo "WARN : figlet not found, ignoring banner !"
warn "figlet not found, ignoring banner !"
FIGLET=:
fi
COMMIT="$(git rev-parse --short HEAD)"
. "$DIRPATH/common.sh"
# Check if java exists on /usr/bin/java
# Check if java exists
echo 'Checking if Java exists...'
if ! java -version ; then
echo "ERROR : Java not found !!!"
echo "INFO : Please install Java for your Linux distribution ! "
err "Java not found !!!"
info "Please install Java for your Linux distribution ! "
exit 127
fi
COMMIT="$(git rev-parse --short HEAD)"
clear
mbshield_found='MBShield found on [mbapk_unpacked/assets/mbshield.szip] !!!
@ -56,8 +57,8 @@ download_tools() {
apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.4/APKEditor-1.4.4.jar"
cd tools && rm -rf ./*.jar
wget -q --show-progress -O apktool.jar "$apktool_link" || echo "ERROR : downloading apktool failed"
wget -q --show-progress -O apkeditor.jar "$apkeditor_link" || echo "ERROR : downloading apkeditor failed"
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"
cd ..
}
@ -67,19 +68,19 @@ copy_assets() {
is_unpacked() {
[ -d "$DIRPATH"/mbapk/mbapk_unpacked ] || {
echo "ERROR : [mbapk_unpacked] not found ! Please unpack APK first !" ; return 127
err "[mbapk_unpacked] not found ! Please unpack APK first !" ; return 127
}
}
is_unpacked_lib() {
[ -d "$DIRPATH"/mbapk/mbapk_unpacked/lib ] || {
echo "ERROR : [mbapk_unpacked/lib] folder not found ! Please unpack APK first !" ; return 127
err "[mbapk_unpacked/lib] folder not found ! Please unpack APK first !" ; return 127
}
}
apktool_exist() {
[ -f "$DIRPATH"/tools/apktool.jar ] || { echo "ERROR : apktool not found" ; return 127 ; }
[ -f "$DIRPATH"/tools/apktool.jar ] || { err "apktool not found" ; return 127 ; }
}
apkeditor_exist() {
[ -f "$DIRPATH"/tools/apkeditor.jar ] || { echo "ERROR : apkeditor not found" ; return 127 ; }
[ -f "$DIRPATH"/tools/apkeditor.jar ] || { err "apkeditor not found" ; return 127 ; }
}
mb_apk_exist() {
ls "$DIRPATH"/mbapk/*.apk >/dev/null 2>&1 || {
@ -92,7 +93,7 @@ unpack_mbcp() {
local - ; set -e
{ apktool_exist && mb_apk_exist ; } || return 1
rm -rf 'mbapk/mbapk_unpacked'
java -jar tools/apktool.jar d mbapk/*.apk -o mbapk/mbapk_unpacked -j"$(nproc)" || { echo "ERROR : Unpacking failed !" ; return 1 ; }
java -jar tools/apktool.jar d mbapk/*.apk -o mbapk/mbapk_unpacked -j"$(nproc)" || { err "Unpacking failed !" ; return 1 ; }
echo "Cleaning useless files..."
rm -rf 'mbapk/mbapk_unpacked/assets/_4A9w8flncUrhDOG8dyqLi_azBTYT3PlSXz0hiCzRQA_'
rm -rf 'mbapk/mbapk_unpacked/assets/0QDl12M5S2hKxoKF4cNI4kEX1qDQRMiOd34TXjSjy4M_'
@ -173,7 +174,7 @@ convert_apks() {
}
run_patcher() {
is_unpacked_lib && bash ./patch.sh
is_unpacked_lib && bash ./parse.sh && bash ./patch.sh
}
run_legacy_patcher() {
@ -220,7 +221,7 @@ do
then
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ]
then
echo "INFO : MBShield found ! Continuing !!!"
info "MBShield found ! Continuing !!!"
echo 'You MUST grant root access to [com.android.shell] in order to extract assets !'
echo 'Trying to extract assets...'
adb shell am force-stop com.mbmobile
@ -262,10 +263,10 @@ then
adb pull /sdcard/assets mbapk/mbapk_unpacked/
adb shell rm -rf /sdcard/assets
else
echo "INFO : MBShield not found ! No need to extract assets !"
info "MBShield not found ! No need to extract assets !"
fi
else
echo "ERROR : Can't find [mbapk/mbapk_unpacked] folder, cannot continue ! "
err "Can't find [mbapk/mbapk_unpacked] folder, cannot continue ! "
echo "Please unpack APK first !"
fi
@ -280,7 +281,7 @@ done
echo "Clearing [com.mbmobile] data..."
adb shell pm clear com.mbmobile
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
echo "INFO : Current logged in account will remain present, even if app data is cleared !"
info "Current logged in account will remain present, even if app data is cleared !"
;;
'Pull latest commit' )

84
MBCPApp/parse.sh Normal file
View file

@ -0,0 +1,84 @@
#!/usr/bin/env bash
# shellcheck disable=SC2295
# vim: expandtab tabstop=4 shiftwidth=4
[ -n "$DIRPATH" ] || {
echo 'ERROR : $DIRPATH not set, script ran standalone?'
exit 1
}
. "$DIRPATH/common.sh"
echo '#!/usr/bin/env bash
[ -n "$DIRPATH" ] || {
err "DIRPATH not set, script ran standalone?"
exit 1
}
[ -d "$DIRPATH"/mbapk/mbapk_unpacked ] || {
err "[mbapk_unpacked] folder not found, please unpack APK first !"
exit 127
}
. "$DIRPATH/common.sh"
applyPatch() {
good "Applying patch [$opt]"
if bash "$2" ; then
good "Patch [$opt] applied successfully"
echo "Patch applied by MBCPApp Patcher on $(uname -s -r) with commit : $(git rev-parse --short HEAD) at $(date)." > "mbapk/mbapk_unpacked/assets/mbcp_info/$1.inf"
else
err "Patch [$opt] failed"
fi
}
echo "--------------------------
Patch list for MBCPApp :"
PS3="Select patch options : "' > patch.sh
for f in patches/*.sh ; do
# name without suffix and prefix
n="$(rstrip "$f" '.sh')"
n="$(lstrip "$n" 'patches/')"
# patch infos
pname="$(getvar "2" "# PATCHNAME: " "$f")"
maxver="$(getvar "3" "# MAXVER: " "$f")"
minver="$(getvar "4" "# MINVER: " "$f")"
pname=${pname//[^a-zA-Z0-9_& ]/}
minver="${minver//[^0-9.]/}"
maxver="${maxver//[^0-9.]/}"
#echo "$f|$pname|$minver|$maxver"
[ -n "$pname" ] || {
warn "[parser] $f missing PATCHNAME, not adding"
continue
}
[ -n "$minver" ] && {
[ "$(get_mb_ver)" -gt "$minver" ] || {
info "[parser] skipping [$pname] as current version is lower than patch version clamp"
continue ; }
} || :
[ -n "$maxver" ] && {
[ "$(get_mb_ver)" -lt "$maxver" ] || {
info "[parser] skipping [$pname] as current version is higher than patch version clamp"
continue ; }
} || :
opts_arr+=" '$pname'"
append+=" '$pname') applyPatch $n $f ;;
"
done
opts_arr+=" 'Exit'"
#echo "$opts_arr"
echo "select opt in $opts_arr" >> patch.sh
echo 'do
case "$opt" in' >> patch.sh
echo "$append
'Exit' ) exit ;;
esac
done" >> patch.sh

6
MBCPApp/patches/TEMPLATE Normal file
View file

@ -0,0 +1,6 @@
#!/usr/bin/env bash
# PATCHNAME:
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh

View file

@ -0,0 +1,12 @@
#!/usr/bin/env bash
# PATCHNAME: Add anime resources
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
cp -f 'blob_patches/anime_resources/rating_illus_fiveStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'
cp -f 'blob_patches/anime_resources/rating_illus_fourStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'
cp -f 'blob_patches/anime_resources/rating_illus_threeStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'
cp -f 'blob_patches/anime_resources/rating_illus_twoStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'
cp -f 'blob_patches/anime_resources/rating_illus_oneStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'

View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
# PATCHNAME: Add modified resources
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
info "Copying modified resources..."
cp -r -f 'blob_patches/resources/raw' 'mbapk/mbapk_unpacked/res/'
cp -f 'blob_patches/resources/strings-vi/strings.xml' 'mbapk/mbapk_unpacked/res/values-vi/'

View file

@ -0,0 +1,97 @@
#!/usr/bin/env bash
# PATCHNAME: Autopatch strings
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
# App embedded links
# App update button url
sed_libapp 's|market://details?id=com.mbmobile|https://t.me/mbbpatch/2?ref=mbcp|g'
# Facebook button url
sed_libapp 's|https://www.facebook.com/VietnamMBBank?mibextid=LQQJ4d|https://gitlab.com/mbcp/mbbpatch/? |g'
# VNeID download url
sed_libapp 's|https://play.google.com/store/apps/details?id=com.vnid|https://www.apkmirror.com/uploads/?appcategory=vneid??|g'
# App embedded strings
sed_libapp 's|online OTP|DigitalOTP|g'
sed_libapp 's|Online OTP|DigitalOTP|g'
sed_libapp 's|MB Bank|MBCPApp|g'
sed_libapp 's|The lastest version|TG/GitLab: mbbpatch|g'
sed_libapp 's|User profile|View profile|g'
sed_libapp 's|User ID|Phone |g'
sed_libapp 's|MB Membership Package|MB Membership |g'
sed_libapp 's|email information|Email information|g'
sed_libapp 's|Premium Account Number|Open new lucky account|g'
sed_libapp 's|Cashback 150K| |g'
sed_libapp 's|Request for supplying password|Request for new password |g'
sed_libapp 's|ID card/ID card|Old/New ID card|g'
sed_libapp 's|Number of document|Number of id card |g'
sed_libapp 's|Your device will be locked if you enter incorrectly more than 5 times. Please try again or select the "Forgot password" feature to be reissued.|Your account will be locked if you enter incorrect password more tham 5 times. Please try again or use the "Forgot password" feature to reset. |g'
sed_libapp 's|Introduction to receive money|Invite using MB |g'
sed_libapp 's|Shopping- Entertainment- Investment|Flutter embedded MiniApps |g'
sed_libapp 's|Downloaded themes|Your owned themes|g'
sed_libapp 's|Coming soon|Placeholder|g'
sed_libapp 's|Coming Soon|Placeholder|g'
sed_libapp 's|MBBank app|MBCPApp |g'
# Adapt for v6.4.56+
sed_libapp 's|MBBank APP|MBCPApp |g'
# Adapt for v6.4.56+
sed_libapp 's|APP MBBank|MBCPApp |g'
sed_libapp 's|MBBank App|MBCPApp |g'
sed_libapp 's|App MBBank|MBCPApp |g'
sed_libapp 's|get notifications|Get notifications|g'
sed_libapp 's|Read the announcement|Notify with voice |g'
sed_libapp 's|Viettel post|Viettel Post|g'
sed_libapp 's|This service has been upgraded, please update the app to continue using the service|This app version is expired, please update or repatch with newer version. (GW525) |g'
sed_libapp 's|Welcome to the MBBank APP!|Thanks for login to MBCP~ |g'
sed_libapp 's|There is no device registered for DOTP|No active DigitalOTP device found :> |g'
sed_libapp 's|Transaction authentication code (OTP) has been sent to your phone number|DigitalOTP registration code (OTP) has been sent to your phone number : |g'
sed_libapp 's|You can request a new code later|You can request a new code after|g'
sed_libapp 's|Verification information is invalid, please contact hotline 1900545426 for support|EKYC failed, please go to our Telegram group (@mbbpatch) for details and help !!! |g'
# XPE002/XPE003 dialog contents :
sed_libapp 's|MB has detected that the device is currently not secure for performing transactions|This dialog are showing cuz server-side MB changes for rooted devices are enforced.|g'
sed_libapp 's|Please try closing and reopening the app, or reinstalling the MBCPApp from the app store to continue using the service.|If you are patching via Patcher with v6.4.59+ or newer, please repatch and dont include [Remove new root detection] patch.|g'
sed_libapp 's|Set up DigitalOTP|Setup DigitalOTP |g'
sed_libapp 's|Set up facial authentication|Setup eKYC for transactions |g'
sed_libapp 's|facial|seKYC |g'
sed_libapp 's|Dentification|Identifier |g'
sed_libapp 's|The data synchronization process was not successful, please restart the MBCPApp or redownload it on the app market|Unable to connect to MB server or VTAP isnt properly working. Please restart MBCPApp and try to login again. |g'
sed_libapp 's|Devices registered with DOTP|Active DigitalOTP devices |g'
sed_libapp 's|Select Digital OTP Setup / Configuration|3 dots / Setup DigitalOTP / Register |g'
sed_libapp 's|Total Balance in VND|Total balance in VND|g'
sed_libapp 's|Simply enter the DigitalOTP PIN, and the system will Autoally activate to process encryption and transaction authentication.|Simply enter the DigitalOTP PIN, and the VTAP system will activate to process encryption and transaction authentication. |g'
sed_libapp 's|productionrn|mbcpreleases|g'
sed_libapp 's|Momo|MoMo|g'
sed_libapp 's|Zalo Pay|ZolaPay |g'
sed_libapp 's|MB membership|MB Membership|g'
sed_libapp 's|Open account ice number|Open new account number|g'
sed_libapp 's|Link Management|Link management|g'
sed_libapp 's|Set as Default Account|Set as default account|g'
sed_libapp 's|Account Balance|Account balance|g'
sed_libapp 's|New release|Features |g'
sed_libapp 's|Challenge to receive gifts|Others |g'
sed_libapp 's|MB will Autoally transfer the entire remaining balance to the account you have selected|MB will transfer the balance from the closed account to the account you have selected. |g'
sed_libapp 's|You have not registered for D-OTP|DigitalOTP is not registered |g'
sed_libapp 's|Please register for D-OTP to use this feature|DigitalOTP is required for this feature. |g'
sed_libapp 's|Register D-OTP|Register now |g'
sed_libapp 's|The login session expired. Please login again|Login session are expired. Please login again|g'
sed_libapp 's|I understand|OKAY |g'
sed_libapp 's|Authentication with DigitalOTP|DigitalOTP authentication |g'
sed_libapp 's|DigitalOTP information|DigitalOTP Information|g'
sed_libapp 's|Do you want to exit the app?|Back button pressed. Exit ? |g'
sed_libapp 's|Exit application|Exit MBCPApp |g'
sed_libapp 's|To use this feature, please install|To use this feature, please setup |g'
sed_libapp 's|Setup D-OTP|Digital OTP|g'
sed_libapp 's|Your login session expired|Login session will end :< |g'
# Placeholder toolbox
sed_libapp 's|Shopping, entertainment|MBCPApp Toolbox |g'

View file

@ -0,0 +1,12 @@
#!/usr/bin/env bash
# PATCHNAME: Bypass accessibility & malicious apps check
# MAXVER: 55
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
info 'Copying patched [MbbankUtilitiesPlugin]...'
cp -r -f 'blob_patches/bypass_accessibility_applist/com' 'mbapk/mbapk_unpacked/smali_classes3'
manifest_remove 'uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"'
sed_libapp 's|PackageName|packageMBBB|g'
sed_libapp 's|packageName|packageMBBa|g'

View file

@ -0,0 +1,27 @@
#!/usr/bin/env bash
# PATCHNAME: Bypass new zimperium detection
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
#if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali ]
info 'Removing [libvvb2060.so]...'
rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libvvb2060.so'
rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libvvb2060.so'
info 'Removing [libtoolChecker.so]...'
rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libtoolChecker.so'
rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libtoolChecker.so'
info "Removing checksum from provider..."
sed -i 's|e1a14adc915d7ad159edf2668b0dfcb359cf86538642de0e425d027f66eb07b2||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali
sed -i 's|ca168a2ad00a92b8010d6801c3ca43e6df9f3701f084f6864399eaa4bbfaf56d||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali
sed -i 's|5c9a139e42e6e6032ddbc1092af9831b8142e4e5ae89700fc7828f5bd62e1671||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali
sed -i 's|c0a161a71738083df4298a0f03b0c54abf5bfda97c7d230875d97593733226ec||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali
info "Patching [libdesignersactivists.so]..."
sed_libzdefend 's|zimperium.c|zimperium.x|g'
sed_libzdefend 's|com.zimperium.threat.new|app.zimperiam.nonpop.all|g'
sed_libzdefend 's|com.zimperium.command|app.zimperiam.commall|g'
sed_libzdefend 's|com.zimperium.threat.get|app.zimperiam.nonpop.all|g'
sed_libzdefend 's|detection|freedom..|g'
manifest_remove 'android:name="android.permission.QUERY_ALL_PACKAGES"'
warn "Clearing app data is mandatory in order to not trigger root detect screen"

View file

@ -0,0 +1,35 @@
#!/usr/bin/env bash
# PATCHNAME: Change app logo
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
PS3='Select app icon variant to continue, or [7] to quit : '
select opt in 'MB Classic' 'Tet' 'Valentine 2025' '30/4-1/5' 'Summer 2025' 'Noel' 'Exit'
do
case "$opt" in
'MB Classic') variant="normal" ;;
'Tet') variant="tet" ;;
'Valentine 2025') variant="valentine" ;;
'30/4-1/5') variant="thongnhatVN" ;;
'Summer 2025') variant="summer2025" ;;
'Noel') variant="noel" ;;
'Exit') exit ;;
esac
info 'Removing old logos...'
rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-hdpi
rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-mdpi
rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xhdpi
rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxhdpi
rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxxhdpi
info 'Copying new logos to [mbapk_unpacked/res]...'
cp -r -f "$DIRPATH"/mbcpicons/"$variant"/mipmap-hdpi mbapk/mbapk_unpacked/res
cp -r -f "$DIRPATH"/mbcpicons/"$variant"/mipmap-mdpi mbapk/mbapk_unpacked/res
cp -r -f "$DIRPATH"/mbcpicons/"$variant"/mipmap-xhdpi mbapk/mbapk_unpacked/res
cp -r -f "$DIRPATH"/mbcpicons/"$variant"/mipmap-xxhdpi mbapk/mbapk_unpacked/res
cp -r -f "$DIRPATH"/mbcpicons/"$variant"/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
done

View file

@ -0,0 +1,7 @@
#!/usr/bin/env bash
# PATCHNAME: Force portrait screen
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
sed -i 's|fullSensor|portrait|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml

View file

@ -0,0 +1,21 @@
#!/usr/bin/env bash
# PATCHNAME: Hide VTAP root detection activity & dialog
# MAXVER:
# MINVER:
# shellcheck disable=SC1091,SC2016
. "$DIRPATH"/common.sh
# Adapt with v6.4.53+
sed -i 's|Lcom/vtap/MaintenanceActivity;|Lio/flutter/plugins/MainActivity;|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali_classes4/com/vtap/d.smali > /dev/null 2>&1
sed -i 's|Lcom/vtap/MaintenanceActivity;|Lio/flutter/plugins/MainActivity;|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali_classes4/com/vtap/VTapSetupPlugin.smali > /dev/null 2>&1
rm -f 'mbapk/mbapk_unpacked/smali_classes4/com/vtap/MaintenanceActivity.smali'
rm -f 'mbapk/mbapk_unpacked/smali_classes4/com/vtap/MaintenanceActivity$1.smali'
rm -f 'mbapk/mbapk_unpacked/smali_classes4/com/vkey/android/vguard/VGDialogActivity.smali'
sed -i 's|Lcom/vkey/android/vguard/VGDialogActivity;|Lio/flutter/plugins/MainActivity;|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali_classes4/com/vkey/android/dy.smali
# Bypass VKey root check that throw VGFullScreenDialogActivity then exit :)
cp -f 'blob_patches/bypass_rootold/BasicThreatInfo.smali' 'mbapk/mbapk_unpacked/smali_classes4/com/vkey/android/internal/vguard/engine/'
cp -f 'blob_patches/bypass_rootold/VGThreatAppInfo.smali' 'mbapk/mbapk_unpacked/smali_classes4/com/vkey/android/vguard/model/'
cp -f 'blob_patches/bypass_rootold/VGThreatResponse.smali' 'mbapk/mbapk_unpacked/smali_classes4/com/vkey/android/vguard/model/'
# Test crash fixes for some Android 13 devices
sed -i 's|invoke-virtual {v5, v12}, Lcom/vkey/android/vguard/model/VGThreatResponse;->setUsingLegacyMessage(Z)V| |g' 'mbapk/mbapk_unpacked/smali_classes4/com/vkey/android/eg.smali'

View file

@ -0,0 +1,86 @@
#!/usr/bin/env bash
# PATCHNAME: Modify app theme
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
info "In order to modify app theme, you must extract assets first if current unpacked APK has MBShield!"
PS3='Select themes : '
select opt in 'MBCP SemiPriority' 'MBCP MBClassic' 'Noel 2024' 'Exit'
do
case "$opt" in
'MBCP SemiPriority')
info 'Moving [priority] folder...'
cp -r 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority' 'blob_patches/semipriority/'
info 'Modifying QR background...'
cp 'blob_patches/semipriority/priority/a_background_image.webp' 'blob_patches/semipriority/priority/qr_img_ThemeDefalut.webp'
info 'Copying to [flutter_assets/assets/images/dynamic/base]'
cp -r -f 'blob_patches/semipriority/priority/*' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
info 'Copying [ic_logo_mb_text.svg]...'
cp -f 'blob_patches/semipriority/ic_logo_mb_text.svg' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/svgs/'
info 'Copying [welcom_img_eMbee.webp]...'
cp -f 'blob_patches/semipriority/welcom_img_eMbee.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
info 'Cleaning...'
rm -rf 'blob_patches/semipriority/priority'
patch_finish "semipriority_theme"
good "Applied [MBCP SemiPriority] theme."
;;
'MBCP MBClassic')
info "Ensure that SemiPriority theme is not applied before this !"
info "Otherwise it will have like mixed SemiPriority and MB Classic theme, You've been warned !!! "
cp -f 'blob_patches/mbclassic/a_background_image.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/mbclassic/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/mbclassic/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/mbclassic/loading_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/mbclassic/login_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/mbclassic/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenLoginClassic.png|https://gitlab.com/-/project/56341767/uploads/f585b28f88876db211f116d1d622031d/mbcp_login.png?git1|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenLoginClassic.png|https://gitlab.com/-/project/56341767/uploads/f585b28f88876db211f116d1d622031d/mbcp_login.png?git1|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_thumbnailClassic.png|https://gitlab.com/-/project/56341767/uploads/ba4f0923a4956ba379868e01c55e9cfb/thumb.png?aaaaaaa|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_thumbnailClassic.png|https://gitlab.com/-/project/56341767/uploads/ba4f0923a4956ba379868e01c55e9cfb/thumb.png?aaaaaaa|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenHomeClassic.png|https://gitlab.com/-/project/56341767/uploads/1d7fcf300167e87440220a6f0d28b8c1/mbcp_lobby.png?aaa|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenHomeClassic.png|https://gitlab.com/-/project/56341767/uploads/1d7fcf300167e87440220a6f0d28b8c1/mbcp_lobby.png?aaa|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenSuccessClassic.png|https://gitlab.com/-/project/56341767/uploads/d94e257eb6cf59865016a939541c32fc/mbcp_transfer.png?aaa|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenSuccessClassic.png|https://gitlab.com/-/project/56341767/uploads/d94e257eb6cf59865016a939541c32fc/mbcp_transfer.png?aaa|g'
patch_finish "mbclassic_theme"
good 'Applied [MBCP MBClassic] theme.'
;;
'Noel 2024')
info "Ensure that SemiPriority theme is not applied before this !"
info "Otherwise it will have like mixed SemiPriority and MB Classic theme, You've been warned !!! "
cp -f 'blob_patches/noel/a_background_image.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/bill_background_gold.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/coreBanking_img_successBackground.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/general_bg_success.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/loading_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/login_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
##############
cp -f 'blob_patches/noel/a_background_image.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/bill_background_gold.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/coreBanking_img_successBackground.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/general_bg_screenshot.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/general_bg_success.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/homeLanding_bg_main.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/loading_bg_main.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/login_bg_main.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/qr_img_ThemeDefalut.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
# Change theme preview
cp -f 'blob_patches/noel/customUI_img_classicMode.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/noel/customUI_img_classicMode.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
# Lockdown ability to change other theme, also force Noel 2024 theme
sed_libapp 's|theme|Noel |g'
sed_libapp 's|theme|Noel |g'
# Settings
sed_libapp 's|Change Noel |Noel 2024 |g'
sed_libapp 's|Change Noel |Noel 2024 |g'
warn "You WON'T be able to use other theme than Noel 2024 on app !"
good "Applied [Noel 2024] theme."
;;
'Exit') exit ;;
esac
done

View file

@ -0,0 +1,13 @@
#!/usr/bin/env bash
# PATCHNAME: Remove animated QR background
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
info "This will remove animated QR on bottom navigation bar and replace with white background !"
info "Removing animated QR..."
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/homeLanding_bg_qrCode.gif'
info "Copying new static white background..."
mv 'blob_patches/qr_white/150.png' 'blob_patches/qr_white/homeLanding_bg_qrCode.gif' > /dev/null 2>&1
cp -f 'blob_patches/qr_white/homeLanding_bg_qrCode.gif' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static'

View file

@ -0,0 +1,7 @@
#!/usr/bin/env bash
# PATCHNAME: Remove app from launcher
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
sed -i 's|<category android:name="android.intent.category.LAUNCHER"/>||g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml

View file

@ -0,0 +1,41 @@
#!/usr/bin/env bash
# PATCHNAME: Remove banners & MiniApp
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
sed_libapp 's|banner|remove|g'
sed_libapp 's|marketplacehome|removemarketapp|g'
info 'Removing related resources...'
rm -rf 'mbapk/mbapk_unpacked/assets/flutter_assets/packages'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.private.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/explore_img_defaultBanner.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/coreBanking_img_successBanner.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.private.webp'
# Priority exclusive
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/explore_img_defaultBanner.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/coreBanking_img_successBanner.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/homeLanding_img_defaultBanner.webp'
# Shield related resources
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/khien_img_hoadon.private.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/khien_img_muasam.private.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/khien_img_offline.private.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/khien_img_hoadon.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/khien_img_muasam.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/khien_img_offline.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/khien_img_hoadon.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/khien_img_muasam.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/khien_img_offline.webp'
#
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/banner_transfer_mass.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/banner_transfer_private.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/recap_banner.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/poster_cyberrisk_noti.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding/ads_banner_borigin.webp'

View file

@ -0,0 +1,39 @@
#!/usr/bin/env bash
# PATCHNAME: Remove bulit-in fonts
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Black.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-BlackItalic.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Bold.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-BoldItalic.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Extrabold.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-ExtraboldItalic.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCy-Extrathin.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCy-ExtrathinItalic.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Light.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-LightItalic.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Regular.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-RegularItalic.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Semibold.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-SemiboldItalic.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Thin.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-ThinItalic.otf'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/SF-Pro-Display-Medium.ttf'
rm -f 'mbapk/mbapk_unpacked/res/font/avenir_next_bold.ttf'
rm -f 'mbapk/mbapk_unpacked/res/font/bold.ttf'
rm -f 'mbapk/mbapk_unpacked/res/font/medium.ttf'
rm -f 'mbapk/mbapk_unpacked/res/font/regular.ttf'
rm -f 'mbapk/mbapk_unpacked/assets/insider.ttf'
# Placeholder font to fix display issues when open details balance notifications
info "Creating placeholder font..."
touch 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Regular.otf'
# Placeholder to prevent compiling resource fail
touch 'mbapk/mbapk_unpacked/res/font/avenir_next_bold.ttf'
info 'Copying fix fonts...'
# NFC scanning phase requires actual font in order to not throw exception
cp -f 'blob_patches/resources/font/bold.ttf' 'mbapk/mbapk_unpacked/res/font/'
cp -f 'blob_patches/resources/font/medium.ttf' 'mbapk/mbapk_unpacked/res/font/'
cp -f 'blob_patches/resources/font/regular.ttf' 'mbapk/mbapk_unpacked/res/font/'

View file

@ -0,0 +1,34 @@
#!/usr/bin/env bash
# PATCHNAME: Remove eMBee
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
warn "Remove eMBee also remove customer support and any other options on eMBee Helper !"
info "Removing eMBee Customer support function..."
sed_libapp 's|group_button_support|itsnotworthittouseem|g'
sed_libapp 's|Customer support| |g'
info "Removing assets..."
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_page.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_header.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_login.webp'
# Priority support
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_page.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_header.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_login.webp'
# Private support
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_page.private.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_login.private.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_header.private.webp'
# Adapt for v6.4.53+
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_headerNew.private.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_headerNew.webp'
# Private support
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_loginSupport.private.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_loginSupport.webp'
# Priority support
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_headerNew.webp'
rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_loginSupport.webp'

Some files were not shown because too many files have changed in this diff Show more