[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:
parent
d69960cba9
commit
0a89bce342
29 changed files with 907 additions and 21 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -2,4 +2,5 @@ mbapk/
|
||||||
mbcpapp_apk/
|
mbcpapp_apk/
|
||||||
mbcpapp_apk/
|
mbcpapp_apk/
|
||||||
tools/
|
tools/
|
||||||
.DS_STORE
|
MBCPApp/patch.sh
|
||||||
|
.DS_STORE
|
||||||
|
|
|
||||||
79
MBCPApp/common.sh
Normal file
79
MBCPApp/common.sh
Normal 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"
|
||||||
|
}
|
||||||
|
|
@ -34,8 +34,8 @@ if [ "$opt" == 'Bypass 1200 error [v6.4.45]' ]; then
|
||||||
# Checks for MBShield, if exists then exit function
|
# Checks for MBShield, if exists then exit function
|
||||||
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ]
|
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ]
|
||||||
then
|
then
|
||||||
echo "INFO : MBShield found on unpacked APK ! Bypass signature checks won't be possible if MBShield is present on current unpacked APK !"
|
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 "Please use supported version !!!"
|
||||||
echo "For React Native : MBBank/MB Lite v1.0 up to v6.3.11"
|
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 "For Flutter : MBBank v6.4.0 up to v6.4.21"
|
||||||
echo "Some specific version has no MBShield can also be used :"
|
echo "Some specific version has no MBShield can also be used :"
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ clear
|
||||||
|
|
||||||
# Check if user runs on actual Linux environment
|
# Check if user runs on actual Linux environment
|
||||||
if uname -a | grep -i Linux ; then
|
if uname -a | grep -i Linux ; then
|
||||||
echo "INFO : You have Linux environment :)"
|
info "You have Linux environment :)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if user is trying to run under WSL (Windows Subsystem for Linux)
|
# Check if user is trying to run under WSL (Windows Subsystem for Linux)
|
||||||
|
|
@ -27,20 +27,21 @@ fi
|
||||||
if command -v figlet ; then
|
if command -v figlet ; then
|
||||||
FIGLET=figlet
|
FIGLET=figlet
|
||||||
else
|
else
|
||||||
echo "WARN : figlet not found, ignoring banner !"
|
warn "figlet not found, ignoring banner !"
|
||||||
FIGLET=:
|
FIGLET=:
|
||||||
fi
|
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...'
|
echo 'Checking if Java exists...'
|
||||||
if ! java -version ; then
|
if ! java -version ; then
|
||||||
echo "ERROR : Java not found !!!"
|
err "Java not found !!!"
|
||||||
echo "INFO : Please install Java for your Linux distribution ! "
|
info "Please install Java for your Linux distribution ! "
|
||||||
exit 127
|
exit 127
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
COMMIT="$(git rev-parse --short HEAD)"
|
||||||
clear
|
clear
|
||||||
|
|
||||||
mbshield_found='MBShield found on [mbapk_unpacked/assets/mbshield.szip] !!!
|
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"
|
apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.4/APKEditor-1.4.4.jar"
|
||||||
|
|
||||||
cd tools && rm -rf ./*.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 apktool.jar "$apktool_link" || err "downloading apktool failed"
|
||||||
wget -q --show-progress -O apkeditor.jar "$apkeditor_link" || echo "ERROR : downloading apkeditor failed"
|
wget -q --show-progress -O apkeditor.jar "$apkeditor_link" || err "downloading apkeditor failed"
|
||||||
cd ..
|
cd ..
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -67,19 +68,19 @@ copy_assets() {
|
||||||
|
|
||||||
is_unpacked() {
|
is_unpacked() {
|
||||||
[ -d "$DIRPATH"/mbapk/mbapk_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() {
|
is_unpacked_lib() {
|
||||||
[ -d "$DIRPATH"/mbapk/mbapk_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() {
|
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() {
|
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() {
|
mb_apk_exist() {
|
||||||
ls "$DIRPATH"/mbapk/*.apk >/dev/null 2>&1 || {
|
ls "$DIRPATH"/mbapk/*.apk >/dev/null 2>&1 || {
|
||||||
|
|
@ -92,7 +93,7 @@ unpack_mbcp() {
|
||||||
local - ; set -e
|
local - ; set -e
|
||||||
{ apktool_exist && mb_apk_exist ; } || return 1
|
{ apktool_exist && mb_apk_exist ; } || return 1
|
||||||
rm -rf 'mbapk/mbapk_unpacked'
|
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..."
|
echo "Cleaning useless files..."
|
||||||
rm -rf 'mbapk/mbapk_unpacked/assets/_4A9w8flncUrhDOG8dyqLi_azBTYT3PlSXz0hiCzRQA_'
|
rm -rf 'mbapk/mbapk_unpacked/assets/_4A9w8flncUrhDOG8dyqLi_azBTYT3PlSXz0hiCzRQA_'
|
||||||
rm -rf 'mbapk/mbapk_unpacked/assets/0QDl12M5S2hKxoKF4cNI4kEX1qDQRMiOd34TXjSjy4M_'
|
rm -rf 'mbapk/mbapk_unpacked/assets/0QDl12M5S2hKxoKF4cNI4kEX1qDQRMiOd34TXjSjy4M_'
|
||||||
|
|
@ -173,7 +174,7 @@ convert_apks() {
|
||||||
}
|
}
|
||||||
|
|
||||||
run_patcher() {
|
run_patcher() {
|
||||||
is_unpacked_lib && bash ./patch.sh
|
is_unpacked_lib && bash ./parse.sh && bash ./patch.sh
|
||||||
}
|
}
|
||||||
|
|
||||||
run_legacy_patcher() {
|
run_legacy_patcher() {
|
||||||
|
|
@ -220,7 +221,7 @@ do
|
||||||
then
|
then
|
||||||
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ]
|
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ]
|
||||||
then
|
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 'You MUST grant root access to [com.android.shell] in order to extract assets !'
|
||||||
echo 'Trying to extract assets...'
|
echo 'Trying to extract assets...'
|
||||||
adb shell am force-stop com.mbmobile
|
adb shell am force-stop com.mbmobile
|
||||||
|
|
@ -262,10 +263,10 @@ then
|
||||||
adb pull /sdcard/assets mbapk/mbapk_unpacked/
|
adb pull /sdcard/assets mbapk/mbapk_unpacked/
|
||||||
adb shell rm -rf /sdcard/assets
|
adb shell rm -rf /sdcard/assets
|
||||||
else
|
else
|
||||||
echo "INFO : MBShield not found ! No need to extract assets !"
|
info "MBShield not found ! No need to extract assets !"
|
||||||
fi
|
fi
|
||||||
else
|
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 !"
|
echo "Please unpack APK first !"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -280,7 +281,7 @@ done
|
||||||
echo "Clearing [com.mbmobile] data..."
|
echo "Clearing [com.mbmobile] data..."
|
||||||
adb shell pm clear com.mbmobile
|
adb shell pm clear com.mbmobile
|
||||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
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' )
|
'Pull latest commit' )
|
||||||
|
|
|
||||||
84
MBCPApp/parse.sh
Normal file
84
MBCPApp/parse.sh
Normal 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
6
MBCPApp/patches/TEMPLATE
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# PATCHNAME:
|
||||||
|
# MAXVER:
|
||||||
|
# MINVER:
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
. "$DIRPATH"/common.sh
|
||||||
12
MBCPApp/patches/add_anime_resources.sh
Normal file
12
MBCPApp/patches/add_anime_resources.sh
Normal 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/'
|
||||||
10
MBCPApp/patches/add_modified_resources.sh
Normal file
10
MBCPApp/patches/add_modified_resources.sh
Normal 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/'
|
||||||
97
MBCPApp/patches/autopatch_strings.sh
Normal file
97
MBCPApp/patches/autopatch_strings.sh
Normal 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'
|
||||||
12
MBCPApp/patches/bypass_accessibility_malicious_app_check.sh
Normal file
12
MBCPApp/patches/bypass_accessibility_malicious_app_check.sh
Normal 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'
|
||||||
27
MBCPApp/patches/bypass_new_zimperium_detection.sh
Normal file
27
MBCPApp/patches/bypass_new_zimperium_detection.sh
Normal 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"
|
||||||
35
MBCPApp/patches/change_app_logo.sh
Normal file
35
MBCPApp/patches/change_app_logo.sh
Normal 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
|
||||||
7
MBCPApp/patches/force_portrait_screen.sh
Normal file
7
MBCPApp/patches/force_portrait_screen.sh
Normal 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
|
||||||
21
MBCPApp/patches/hide_vtap_root_detection_activity.sh
Normal file
21
MBCPApp/patches/hide_vtap_root_detection_activity.sh
Normal 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'
|
||||||
86
MBCPApp/patches/modify_app_theme.sh
Normal file
86
MBCPApp/patches/modify_app_theme.sh
Normal 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
|
||||||
13
MBCPApp/patches/remove_animated_qr_background.sh
Normal file
13
MBCPApp/patches/remove_animated_qr_background.sh
Normal 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'
|
||||||
7
MBCPApp/patches/remove_app_from_launcher.sh
Normal file
7
MBCPApp/patches/remove_app_from_launcher.sh
Normal 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
|
||||||
41
MBCPApp/patches/remove_banner_miniapp.sh
Normal file
41
MBCPApp/patches/remove_banner_miniapp.sh
Normal 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'
|
||||||
39
MBCPApp/patches/remove_bulitin_fonts.sh
Normal file
39
MBCPApp/patches/remove_bulitin_fonts.sh
Normal 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/'
|
||||||
34
MBCPApp/patches/remove_embee.sh
Normal file
34
MBCPApp/patches/remove_embee.sh
Normal 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
Loading…
Reference in a new issue