refactor: mbcpapp.sh: use case switch instead of if-else

also move mbshield check strings out as vars

still ongoing

Signed-off-by: fukiame <fukiame@proton.me>
This commit is contained in:
Hikarie Fukirei 2025-07-28 23:10:07 +07:00
commit 6704773582

View file

@ -47,6 +47,14 @@ fi
COMMIT="$(git rev-parse --short HEAD)"
clear
mbshield_found='MBShield found on [mbapk_unpacked/assets/mbshield.szip] !!!
Patching operation is limited due to MBShield :(
You need to extract assets from Android device for some patching operation to works properly !!!'
mbshield_not_found='MBShield NOT found on [mbapk_unpacked/assets/]
Patching operation are all not limited at all !
Asset extraction are not needed :)'
download_tools() {
apktool_link="https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.12.0.jar"
apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.4/APKEditor-1.4.4.jar"
@ -161,33 +169,26 @@ echo -------------------------------------------------------------
PS3='Please select options to continue : '
select opt in 'Pull latest commit' 'Unpack APK' 'Convert apks to apk' 'Repack APK' 'Install patched app' 'MBShield Check' 'Patch App' 'Legacy patches' 'Extract assets [ROOT]' 'Launch MBCPApp/MBBank' 'Force close MBCPApp/MBBank' 'Clear MBCPApp/MBBank app data' 'Clean patched app' 'Download tools' 'Exit'
do
if [ "$opt" == 'Download tools' ]; then
download_tools
elif [ "$opt" == 'Unpack APK' ]; then
unpack_mbcp
elif [ "$opt" == 'Repack APK' ]; then
repack_mbcp
elif [ "$opt" == 'MBShield Check' ]; then
case "$opt" in
'Download tools' ) download_tools ;;
'Unpack APK' ) unpack_mbcp ;;
'Repack APK' ) repack_mbcp ;;
'Patch App' ) run_patcher ;;
'Legacy patches' ) run_legacy_patcher ;;
'MBShield Check' )
if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/ ]
then
if [ -f ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/assets/mbshield.szip ]
then
echo "MBShield found on [mbapk_unpacked/assets/mbshield.szip]" !!!
echo "Patching operation is limited due to MBShield :("
echo "You need to extract assets from Android device for some patching operation to works properly !!!"
echo "$mbshield_found"
else
echo "MBShield NOT found on [mbapk_unpacked/assets/]"
echo "Patching operation are all not limited at all !"
echo "Asset extraction are not needed :)"
fi
echo "$mbshield_not_found"
fi
else
echo "[mbapk_unpacked] not found ! Please unpack APK first !"
fi
elif [ "$opt" == 'Convert apks to apk' ]; then
;;
'Convert apks to apk' )
if ls ~/mbbpatch/MBCPApp/mbapk/*.apks >/dev/null 2>&1
then
echo "Converting apks to apk..."
@ -199,14 +200,8 @@ fi
else
echo "APKs missing, cannot continue !"
fi
elif [ "$opt" == 'Patch App' ]; then
run_patcher
elif [ "$opt" == 'Legacy patches' ]; then
run_legacy_patcher
elif [ "$opt" == 'Extract assets [ROOT]' ]; then
;;
'Extract assets [ROOT]' )
echo 'To extract encrypted assets [if current app has MBShield protection] you need rooted device'
echo 'And trigger a bulit-in app assets extraction !'
echo -------------------------------------------
@ -279,34 +274,35 @@ else
break
fi
done
elif [ "$opt" == 'Clear MBCPApp/MBBank app data' ]; then
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 !"
elif [ "$opt" == 'Pull latest commit' ]; then
git pull origin mbflutter
echo "Please run patcher again !"
exit
elif [ "$opt" == 'Launch MBCPApp/MBBank' ]; then
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
elif [ "$opt" == 'Force close MBCPApp/MBBank' ]; then
adb shell am force-stop com.mbmobile
elif [ "$opt" == 'Clean patched app' ]; then
echo "Cleaning, please wait..."
rm -f mbcpapp_apk/*.apk
rm -f mbcpapp_apk/*.zip
rm -f mbapk/*.apk
rm -f mbapk/*.apks
rm -rf mbapk/mbapk_unpacked
echo "Cleared !"
elif [ "$opt" == 'Install patched app' ]; then
;;
'Clear MBCPApp/MBBank app data' )
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 !"
;;
'Pull latest commit' )
git pull origin mbflutter
echo "Please run patcher again !"
exit
;;
'Launch MBCPApp/MBBank' )
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
;;
'Force close MBCPApp/MBBank' )
adb shell am force-stop com.mbmobile
;;
'Clean patched app' )
echo "Cleaning, please wait..."
rm -f mbcpapp_apk/*.apk
rm -f mbcpapp_apk/*.zip
rm -f mbapk/*.apk
rm -f mbapk/*.apks
rm -rf mbapk/mbapk_unpacked
echo "Cleared !"
;;
'Install patched app' )
echo 'Select your patched version to continue'
PS3='Select patched version to continue, or [3] to quit : '
select opt in 'App patched with newer version [v6.4.56 or higher]' 'App patched with older version [v6.4.55 or lower]' 'Exit'
@ -350,10 +346,7 @@ do
break
fi
done
elif [ "$opt" == 'Exit' ]; then
exit
break
fi
;;
'Exit' ) exit ;;
esac
done