diff --git a/.gitignore b/.gitignore
index 432ca9c..1bf31d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,5 @@ mbapk/
mbcpapp_apk/
mbcpapp_apk/
tools/
-.DS_STORE
\ No newline at end of file
+MBCPApp/patch.sh
+.DS_STORE
diff --git a/MBCPApp/patches/anime_resources/rating_illus_fiveStar.webp b/MBCPApp/blob_patches/anime_resources/rating_illus_fiveStar.webp
similarity index 100%
rename from MBCPApp/patches/anime_resources/rating_illus_fiveStar.webp
rename to MBCPApp/blob_patches/anime_resources/rating_illus_fiveStar.webp
diff --git a/MBCPApp/patches/anime_resources/rating_illus_fourStar.webp b/MBCPApp/blob_patches/anime_resources/rating_illus_fourStar.webp
similarity index 100%
rename from MBCPApp/patches/anime_resources/rating_illus_fourStar.webp
rename to MBCPApp/blob_patches/anime_resources/rating_illus_fourStar.webp
diff --git a/MBCPApp/patches/anime_resources/rating_illus_oneStar.webp b/MBCPApp/blob_patches/anime_resources/rating_illus_oneStar.webp
similarity index 100%
rename from MBCPApp/patches/anime_resources/rating_illus_oneStar.webp
rename to MBCPApp/blob_patches/anime_resources/rating_illus_oneStar.webp
diff --git a/MBCPApp/patches/anime_resources/rating_illus_threeStar.webp b/MBCPApp/blob_patches/anime_resources/rating_illus_threeStar.webp
similarity index 100%
rename from MBCPApp/patches/anime_resources/rating_illus_threeStar.webp
rename to MBCPApp/blob_patches/anime_resources/rating_illus_threeStar.webp
diff --git a/MBCPApp/patches/anime_resources/rating_illus_twoStar.webp b/MBCPApp/blob_patches/anime_resources/rating_illus_twoStar.webp
similarity index 100%
rename from MBCPApp/patches/anime_resources/rating_illus_twoStar.webp
rename to MBCPApp/blob_patches/anime_resources/rating_illus_twoStar.webp
diff --git a/MBCPApp/patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$1.smali b/MBCPApp/blob_patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$1.smali
similarity index 100%
rename from MBCPApp/patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$1.smali
rename to MBCPApp/blob_patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$1.smali
diff --git a/MBCPApp/patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$AppDetail.smali b/MBCPApp/blob_patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$AppDetail.smali
similarity index 100%
rename from MBCPApp/patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$AppDetail.smali
rename to MBCPApp/blob_patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$AppDetail.smali
diff --git a/MBCPApp/patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$AppInstallInfo.smali b/MBCPApp/blob_patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$AppInstallInfo.smali
similarity index 100%
rename from MBCPApp/patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$AppInstallInfo.smali
rename to MBCPApp/blob_patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin$AppInstallInfo.smali
diff --git a/MBCPApp/patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin.smali b/MBCPApp/blob_patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin.smali
similarity index 100%
rename from MBCPApp/patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin.smali
rename to MBCPApp/blob_patches/bypass_accessibility_applist/com/mbbank/utilities/mbbank_utilities/MbbankUtilitiesPlugin.smali
diff --git a/MBCPApp/patches/bypass_apptampering/ReadME.md b/MBCPApp/blob_patches/bypass_apptampering/ReadME.md
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/ReadME.md
rename to MBCPApp/blob_patches/bypass_apptampering/ReadME.md
diff --git a/MBCPApp/patches/bypass_apptampering/bin/mt/signature/KillerApplication$1.smali b/MBCPApp/blob_patches/bypass_apptampering/bin/mt/signature/KillerApplication$1.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/bin/mt/signature/KillerApplication$1.smali
rename to MBCPApp/blob_patches/bypass_apptampering/bin/mt/signature/KillerApplication$1.smali
diff --git a/MBCPApp/patches/bypass_apptampering/bin/mt/signature/KillerApplication.smali b/MBCPApp/blob_patches/bypass_apptampering/bin/mt/signature/KillerApplication.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/bin/mt/signature/KillerApplication.smali
rename to MBCPApp/blob_patches/bypass_apptampering/bin/mt/signature/KillerApplication.smali
diff --git a/MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$AccessibleObject.smali b/MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$AccessibleObject.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$AccessibleObject.smali
rename to MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$AccessibleObject.smali
diff --git a/MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$Class.smali b/MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$Class.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$Class.smali
rename to MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$Class.smali
diff --git a/MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$Executable.smali b/MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$Executable.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$Executable.smali
rename to MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$Executable.smali
diff --git a/MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$HandleInfo.smali b/MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$HandleInfo.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$HandleInfo.smali
rename to MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$HandleInfo.smali
diff --git a/MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$InvokeStub.smali b/MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$InvokeStub.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$InvokeStub.smali
rename to MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$InvokeStub.smali
diff --git a/MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$MethodHandle.smali b/MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$MethodHandle.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$MethodHandle.smali
rename to MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$MethodHandle.smali
diff --git a/MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$MethodHandleImpl.smali b/MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$MethodHandleImpl.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$MethodHandleImpl.smali
rename to MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$MethodHandleImpl.smali
diff --git a/MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$NeverCall.smali b/MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$NeverCall.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$NeverCall.smali
rename to MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/Helper$NeverCall.smali
diff --git a/MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/HiddenApiBypass.smali b/MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/HiddenApiBypass.smali
similarity index 100%
rename from MBCPApp/patches/bypass_apptampering/org/lsposed/hiddenapibypass/HiddenApiBypass.smali
rename to MBCPApp/blob_patches/bypass_apptampering/org/lsposed/hiddenapibypass/HiddenApiBypass.smali
diff --git a/MBCPApp/patches/bypass_rootold/BasicThreatInfo.smali b/MBCPApp/blob_patches/bypass_rootold/BasicThreatInfo.smali
similarity index 100%
rename from MBCPApp/patches/bypass_rootold/BasicThreatInfo.smali
rename to MBCPApp/blob_patches/bypass_rootold/BasicThreatInfo.smali
diff --git a/MBCPApp/patches/bypass_rootold/VGThreatAppInfo.smali b/MBCPApp/blob_patches/bypass_rootold/VGThreatAppInfo.smali
similarity index 100%
rename from MBCPApp/patches/bypass_rootold/VGThreatAppInfo.smali
rename to MBCPApp/blob_patches/bypass_rootold/VGThreatAppInfo.smali
diff --git a/MBCPApp/patches/bypass_rootold/VGThreatResponse.smali b/MBCPApp/blob_patches/bypass_rootold/VGThreatResponse.smali
similarity index 100%
rename from MBCPApp/patches/bypass_rootold/VGThreatResponse.smali
rename to MBCPApp/blob_patches/bypass_rootold/VGThreatResponse.smali
diff --git a/MBCPApp/patches/bypass_rootold/VGVirtualSpaceType.smali b/MBCPApp/blob_patches/bypass_rootold/VGVirtualSpaceType.smali
similarity index 100%
rename from MBCPApp/patches/bypass_rootold/VGVirtualSpaceType.smali
rename to MBCPApp/blob_patches/bypass_rootold/VGVirtualSpaceType.smali
diff --git a/MBCPApp/patches/bypass_rootold/VGVirtualTapType.smali b/MBCPApp/blob_patches/bypass_rootold/VGVirtualTapType.smali
similarity index 100%
rename from MBCPApp/patches/bypass_rootold/VGVirtualTapType.smali
rename to MBCPApp/blob_patches/bypass_rootold/VGVirtualTapType.smali
diff --git a/MBCPApp/patches/fix_df16211/R1Native.smali b/MBCPApp/blob_patches/fix_df16211/R1Native.smali
similarity index 100%
rename from MBCPApp/patches/fix_df16211/R1Native.smali
rename to MBCPApp/blob_patches/fix_df16211/R1Native.smali
diff --git a/MBCPApp/patches/fix_df16211/m1/M1RemoteService.smali b/MBCPApp/blob_patches/fix_df16211/m1/M1RemoteService.smali
similarity index 100%
rename from MBCPApp/patches/fix_df16211/m1/M1RemoteService.smali
rename to MBCPApp/blob_patches/fix_df16211/m1/M1RemoteService.smali
diff --git a/MBCPApp/patches/mbclassic/a_background_image.webp b/MBCPApp/blob_patches/mbclassic/a_background_image.webp
similarity index 100%
rename from MBCPApp/patches/mbclassic/a_background_image.webp
rename to MBCPApp/blob_patches/mbclassic/a_background_image.webp
diff --git a/MBCPApp/patches/mbclassic/general_bg_screenshot.webp b/MBCPApp/blob_patches/mbclassic/general_bg_screenshot.webp
similarity index 100%
rename from MBCPApp/patches/mbclassic/general_bg_screenshot.webp
rename to MBCPApp/blob_patches/mbclassic/general_bg_screenshot.webp
diff --git a/MBCPApp/patches/mbclassic/homeLanding_bg_main.webp b/MBCPApp/blob_patches/mbclassic/homeLanding_bg_main.webp
similarity index 100%
rename from MBCPApp/patches/mbclassic/homeLanding_bg_main.webp
rename to MBCPApp/blob_patches/mbclassic/homeLanding_bg_main.webp
diff --git a/MBCPApp/patches/mbclassic/loading_bg_main.webp b/MBCPApp/blob_patches/mbclassic/loading_bg_main.webp
similarity index 100%
rename from MBCPApp/patches/mbclassic/loading_bg_main.webp
rename to MBCPApp/blob_patches/mbclassic/loading_bg_main.webp
diff --git a/MBCPApp/patches/mbclassic/login_bg_main.webp b/MBCPApp/blob_patches/mbclassic/login_bg_main.webp
similarity index 100%
rename from MBCPApp/patches/mbclassic/login_bg_main.webp
rename to MBCPApp/blob_patches/mbclassic/login_bg_main.webp
diff --git a/MBCPApp/patches/mbclassic/qr_img_ThemeDefalut.webp b/MBCPApp/blob_patches/mbclassic/qr_img_ThemeDefalut.webp
similarity index 100%
rename from MBCPApp/patches/mbclassic/qr_img_ThemeDefalut.webp
rename to MBCPApp/blob_patches/mbclassic/qr_img_ThemeDefalut.webp
diff --git a/MBCPApp/patches/noel/a_background_image.png b/MBCPApp/blob_patches/noel/a_background_image.png
similarity index 100%
rename from MBCPApp/patches/noel/a_background_image.png
rename to MBCPApp/blob_patches/noel/a_background_image.png
diff --git a/MBCPApp/patches/noel/a_background_image.webp b/MBCPApp/blob_patches/noel/a_background_image.webp
similarity index 100%
rename from MBCPApp/patches/noel/a_background_image.webp
rename to MBCPApp/blob_patches/noel/a_background_image.webp
diff --git a/MBCPApp/patches/noel/bill_background_gold.png b/MBCPApp/blob_patches/noel/bill_background_gold.png
similarity index 100%
rename from MBCPApp/patches/noel/bill_background_gold.png
rename to MBCPApp/blob_patches/noel/bill_background_gold.png
diff --git a/MBCPApp/patches/noel/bill_background_gold.webp b/MBCPApp/blob_patches/noel/bill_background_gold.webp
similarity index 100%
rename from MBCPApp/patches/noel/bill_background_gold.webp
rename to MBCPApp/blob_patches/noel/bill_background_gold.webp
diff --git a/MBCPApp/patches/noel/coreBanking_img_successBackground.png b/MBCPApp/blob_patches/noel/coreBanking_img_successBackground.png
similarity index 100%
rename from MBCPApp/patches/noel/coreBanking_img_successBackground.png
rename to MBCPApp/blob_patches/noel/coreBanking_img_successBackground.png
diff --git a/MBCPApp/patches/noel/coreBanking_img_successBackground.webp b/MBCPApp/blob_patches/noel/coreBanking_img_successBackground.webp
similarity index 100%
rename from MBCPApp/patches/noel/coreBanking_img_successBackground.webp
rename to MBCPApp/blob_patches/noel/coreBanking_img_successBackground.webp
diff --git a/MBCPApp/patches/noel/customUI_img_classicMode.png b/MBCPApp/blob_patches/noel/customUI_img_classicMode.png
similarity index 100%
rename from MBCPApp/patches/noel/customUI_img_classicMode.png
rename to MBCPApp/blob_patches/noel/customUI_img_classicMode.png
diff --git a/MBCPApp/patches/noel/customUI_img_classicMode.webp b/MBCPApp/blob_patches/noel/customUI_img_classicMode.webp
similarity index 100%
rename from MBCPApp/patches/noel/customUI_img_classicMode.webp
rename to MBCPApp/blob_patches/noel/customUI_img_classicMode.webp
diff --git a/MBCPApp/patches/noel/general_bg_screenshot.png b/MBCPApp/blob_patches/noel/general_bg_screenshot.png
similarity index 100%
rename from MBCPApp/patches/noel/general_bg_screenshot.png
rename to MBCPApp/blob_patches/noel/general_bg_screenshot.png
diff --git a/MBCPApp/patches/noel/general_bg_screenshot.webp b/MBCPApp/blob_patches/noel/general_bg_screenshot.webp
similarity index 100%
rename from MBCPApp/patches/noel/general_bg_screenshot.webp
rename to MBCPApp/blob_patches/noel/general_bg_screenshot.webp
diff --git a/MBCPApp/patches/noel/general_bg_success.png b/MBCPApp/blob_patches/noel/general_bg_success.png
similarity index 100%
rename from MBCPApp/patches/noel/general_bg_success.png
rename to MBCPApp/blob_patches/noel/general_bg_success.png
diff --git a/MBCPApp/patches/noel/general_bg_success.webp b/MBCPApp/blob_patches/noel/general_bg_success.webp
similarity index 100%
rename from MBCPApp/patches/noel/general_bg_success.webp
rename to MBCPApp/blob_patches/noel/general_bg_success.webp
diff --git a/MBCPApp/patches/noel/homeLanding_bg_main.png b/MBCPApp/blob_patches/noel/homeLanding_bg_main.png
similarity index 100%
rename from MBCPApp/patches/noel/homeLanding_bg_main.png
rename to MBCPApp/blob_patches/noel/homeLanding_bg_main.png
diff --git a/MBCPApp/patches/noel/homeLanding_bg_main.webp b/MBCPApp/blob_patches/noel/homeLanding_bg_main.webp
similarity index 100%
rename from MBCPApp/patches/noel/homeLanding_bg_main.webp
rename to MBCPApp/blob_patches/noel/homeLanding_bg_main.webp
diff --git a/MBCPApp/patches/noel/loading_bg_main.png b/MBCPApp/blob_patches/noel/loading_bg_main.png
similarity index 100%
rename from MBCPApp/patches/noel/loading_bg_main.png
rename to MBCPApp/blob_patches/noel/loading_bg_main.png
diff --git a/MBCPApp/patches/noel/loading_bg_main.webp b/MBCPApp/blob_patches/noel/loading_bg_main.webp
similarity index 100%
rename from MBCPApp/patches/noel/loading_bg_main.webp
rename to MBCPApp/blob_patches/noel/loading_bg_main.webp
diff --git a/MBCPApp/patches/noel/login_bg_main.png b/MBCPApp/blob_patches/noel/login_bg_main.png
similarity index 100%
rename from MBCPApp/patches/noel/login_bg_main.png
rename to MBCPApp/blob_patches/noel/login_bg_main.png
diff --git a/MBCPApp/patches/noel/login_bg_main.webp b/MBCPApp/blob_patches/noel/login_bg_main.webp
similarity index 100%
rename from MBCPApp/patches/noel/login_bg_main.webp
rename to MBCPApp/blob_patches/noel/login_bg_main.webp
diff --git a/MBCPApp/patches/noel/qr_img_ThemeDefalut.png b/MBCPApp/blob_patches/noel/qr_img_ThemeDefalut.png
similarity index 100%
rename from MBCPApp/patches/noel/qr_img_ThemeDefalut.png
rename to MBCPApp/blob_patches/noel/qr_img_ThemeDefalut.png
diff --git a/MBCPApp/patches/noel/qr_img_ThemeDefalut.webp b/MBCPApp/blob_patches/noel/qr_img_ThemeDefalut.webp
similarity index 100%
rename from MBCPApp/patches/noel/qr_img_ThemeDefalut.webp
rename to MBCPApp/blob_patches/noel/qr_img_ThemeDefalut.webp
diff --git a/MBCPApp/patches/noel/theme_img_thumbnail.png b/MBCPApp/blob_patches/noel/theme_img_thumbnail.png
similarity index 100%
rename from MBCPApp/patches/noel/theme_img_thumbnail.png
rename to MBCPApp/blob_patches/noel/theme_img_thumbnail.png
diff --git a/MBCPApp/patches/noel/theme_img_thumbnail.webp b/MBCPApp/blob_patches/noel/theme_img_thumbnail.webp
similarity index 100%
rename from MBCPApp/patches/noel/theme_img_thumbnail.webp
rename to MBCPApp/blob_patches/noel/theme_img_thumbnail.webp
diff --git a/MBCPApp/patches/noinvoke/MBBHomeWidgetQR.smali b/MBCPApp/blob_patches/noinvoke/MBBHomeWidgetQR.smali
similarity index 100%
rename from MBCPApp/patches/noinvoke/MBBHomeWidgetQR.smali
rename to MBCPApp/blob_patches/noinvoke/MBBHomeWidgetQR.smali
diff --git a/MBCPApp/patches/noinvoke/MainActivity.smali b/MBCPApp/blob_patches/noinvoke/MainActivity.smali
similarity index 100%
rename from MBCPApp/patches/noinvoke/MainActivity.smali
rename to MBCPApp/blob_patches/noinvoke/MainActivity.smali
diff --git a/MBCPApp/patches/qr_white/homeLanding_bg_qrCode.gif b/MBCPApp/blob_patches/qr_white/homeLanding_bg_qrCode.gif
similarity index 100%
rename from MBCPApp/patches/qr_white/homeLanding_bg_qrCode.gif
rename to MBCPApp/blob_patches/qr_white/homeLanding_bg_qrCode.gif
diff --git a/MBCPApp/patches/remove_vmb20/GeneratedPluginRegistrant.smali b/MBCPApp/blob_patches/remove_vmb20/GeneratedPluginRegistrant.smali
similarity index 100%
rename from MBCPApp/patches/remove_vmb20/GeneratedPluginRegistrant.smali
rename to MBCPApp/blob_patches/remove_vmb20/GeneratedPluginRegistrant.smali
diff --git a/MBCPApp/patches/resources/font/README.md b/MBCPApp/blob_patches/resources/font/README.md
similarity index 100%
rename from MBCPApp/patches/resources/font/README.md
rename to MBCPApp/blob_patches/resources/font/README.md
diff --git a/MBCPApp/patches/resources/font/bold.ttf b/MBCPApp/blob_patches/resources/font/bold.ttf
similarity index 100%
rename from MBCPApp/patches/resources/font/bold.ttf
rename to MBCPApp/blob_patches/resources/font/bold.ttf
diff --git a/MBCPApp/patches/resources/font/medium.ttf b/MBCPApp/blob_patches/resources/font/medium.ttf
similarity index 100%
rename from MBCPApp/patches/resources/font/medium.ttf
rename to MBCPApp/blob_patches/resources/font/medium.ttf
diff --git a/MBCPApp/patches/resources/font/regular.ttf b/MBCPApp/blob_patches/resources/font/regular.ttf
similarity index 100%
rename from MBCPApp/patches/resources/font/regular.ttf
rename to MBCPApp/blob_patches/resources/font/regular.ttf
diff --git a/MBCPApp/patches/resources/raw/bottom_logo.png b/MBCPApp/blob_patches/resources/raw/bottom_logo.png
similarity index 100%
rename from MBCPApp/patches/resources/raw/bottom_logo.png
rename to MBCPApp/blob_patches/resources/raw/bottom_logo.png
diff --git a/MBCPApp/patches/resources/raw/cccd_back_0.mp3 b/MBCPApp/blob_patches/resources/raw/cccd_back_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cccd_back_0.mp3
rename to MBCPApp/blob_patches/resources/raw/cccd_back_0.mp3
diff --git a/MBCPApp/patches/resources/raw/cccd_back_1.mp3 b/MBCPApp/blob_patches/resources/raw/cccd_back_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cccd_back_1.mp3
rename to MBCPApp/blob_patches/resources/raw/cccd_back_1.mp3
diff --git a/MBCPApp/patches/resources/raw/cccd_back_3.mp3 b/MBCPApp/blob_patches/resources/raw/cccd_back_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cccd_back_3.mp3
rename to MBCPApp/blob_patches/resources/raw/cccd_back_3.mp3
diff --git a/MBCPApp/patches/resources/raw/cccd_front_0.mp3 b/MBCPApp/blob_patches/resources/raw/cccd_front_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cccd_front_0.mp3
rename to MBCPApp/blob_patches/resources/raw/cccd_front_0.mp3
diff --git a/MBCPApp/patches/resources/raw/cccd_front_1.mp3 b/MBCPApp/blob_patches/resources/raw/cccd_front_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cccd_front_1.mp3
rename to MBCPApp/blob_patches/resources/raw/cccd_front_1.mp3
diff --git a/MBCPApp/patches/resources/raw/cccd_front_3.mp3 b/MBCPApp/blob_patches/resources/raw/cccd_front_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cccd_front_3.mp3
rename to MBCPApp/blob_patches/resources/raw/cccd_front_3.mp3
diff --git a/MBCPApp/patches/resources/raw/cmnd_back_0.mp3 b/MBCPApp/blob_patches/resources/raw/cmnd_back_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmnd_back_0.mp3
rename to MBCPApp/blob_patches/resources/raw/cmnd_back_0.mp3
diff --git a/MBCPApp/patches/resources/raw/cmnd_back_1.mp3 b/MBCPApp/blob_patches/resources/raw/cmnd_back_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmnd_back_1.mp3
rename to MBCPApp/blob_patches/resources/raw/cmnd_back_1.mp3
diff --git a/MBCPApp/patches/resources/raw/cmnd_back_3.mp3 b/MBCPApp/blob_patches/resources/raw/cmnd_back_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmnd_back_3.mp3
rename to MBCPApp/blob_patches/resources/raw/cmnd_back_3.mp3
diff --git a/MBCPApp/patches/resources/raw/cmnd_front_0.mp3 b/MBCPApp/blob_patches/resources/raw/cmnd_front_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmnd_front_0.mp3
rename to MBCPApp/blob_patches/resources/raw/cmnd_front_0.mp3
diff --git a/MBCPApp/patches/resources/raw/cmnd_front_1.mp3 b/MBCPApp/blob_patches/resources/raw/cmnd_front_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmnd_front_1.mp3
rename to MBCPApp/blob_patches/resources/raw/cmnd_front_1.mp3
diff --git a/MBCPApp/patches/resources/raw/cmnd_front_3.mp3 b/MBCPApp/blob_patches/resources/raw/cmnd_front_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmnd_front_3.mp3
rename to MBCPApp/blob_patches/resources/raw/cmnd_front_3.mp3
diff --git a/MBCPApp/patches/resources/raw/cmqd_back_0.mp3 b/MBCPApp/blob_patches/resources/raw/cmqd_back_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmqd_back_0.mp3
rename to MBCPApp/blob_patches/resources/raw/cmqd_back_0.mp3
diff --git a/MBCPApp/patches/resources/raw/cmqd_back_1.mp3 b/MBCPApp/blob_patches/resources/raw/cmqd_back_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmqd_back_1.mp3
rename to MBCPApp/blob_patches/resources/raw/cmqd_back_1.mp3
diff --git a/MBCPApp/patches/resources/raw/cmqd_back_3.mp3 b/MBCPApp/blob_patches/resources/raw/cmqd_back_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmqd_back_3.mp3
rename to MBCPApp/blob_patches/resources/raw/cmqd_back_3.mp3
diff --git a/MBCPApp/patches/resources/raw/cmqd_front_0.mp3 b/MBCPApp/blob_patches/resources/raw/cmqd_front_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmqd_front_0.mp3
rename to MBCPApp/blob_patches/resources/raw/cmqd_front_0.mp3
diff --git a/MBCPApp/patches/resources/raw/cmqd_front_1.mp3 b/MBCPApp/blob_patches/resources/raw/cmqd_front_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmqd_front_1.mp3
rename to MBCPApp/blob_patches/resources/raw/cmqd_front_1.mp3
diff --git a/MBCPApp/patches/resources/raw/cmqd_front_3.mp3 b/MBCPApp/blob_patches/resources/raw/cmqd_front_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/cmqd_front_3.mp3
rename to MBCPApp/blob_patches/resources/raw/cmqd_front_3.mp3
diff --git a/MBCPApp/patches/resources/raw/ekyc_cccd.json b/MBCPApp/blob_patches/resources/raw/ekyc_cccd.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ekyc_cccd.json
rename to MBCPApp/blob_patches/resources/raw/ekyc_cccd.json
diff --git a/MBCPApp/patches/resources/raw/ekyc_cmnd.json b/MBCPApp/blob_patches/resources/raw/ekyc_cmnd.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ekyc_cmnd.json
rename to MBCPApp/blob_patches/resources/raw/ekyc_cmnd.json
diff --git a/MBCPApp/patches/resources/raw/ekyc_cmsq.json b/MBCPApp/blob_patches/resources/raw/ekyc_cmsq.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ekyc_cmsq.json
rename to MBCPApp/blob_patches/resources/raw/ekyc_cmsq.json
diff --git a/MBCPApp/patches/resources/raw/ekyc_id_card.json b/MBCPApp/blob_patches/resources/raw/ekyc_id_card.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ekyc_id_card.json
rename to MBCPApp/blob_patches/resources/raw/ekyc_id_card.json
diff --git a/MBCPApp/patches/resources/raw/ekyc_inter_passport.json b/MBCPApp/blob_patches/resources/raw/ekyc_inter_passport.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ekyc_inter_passport.json
rename to MBCPApp/blob_patches/resources/raw/ekyc_inter_passport.json
diff --git a/MBCPApp/patches/resources/raw/ekyc_passport.json b/MBCPApp/blob_patches/resources/raw/ekyc_passport.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ekyc_passport.json
rename to MBCPApp/blob_patches/resources/raw/ekyc_passport.json
diff --git a/MBCPApp/patches/resources/raw/ekyc_video.json b/MBCPApp/blob_patches/resources/raw/ekyc_video.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ekyc_video.json
rename to MBCPApp/blob_patches/resources/raw/ekyc_video.json
diff --git a/MBCPApp/patches/resources/raw/ekyc_video_no_voice.json b/MBCPApp/blob_patches/resources/raw/ekyc_video_no_voice.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ekyc_video_no_voice.json
rename to MBCPApp/blob_patches/resources/raw/ekyc_video_no_voice.json
diff --git a/MBCPApp/patches/resources/raw/ekyc_views_json_camera.json b/MBCPApp/blob_patches/resources/raw/ekyc_views_json_camera.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ekyc_views_json_camera.json
rename to MBCPApp/blob_patches/resources/raw/ekyc_views_json_camera.json
diff --git a/MBCPApp/patches/resources/raw/error.png b/MBCPApp/blob_patches/resources/raw/error.png
similarity index 100%
rename from MBCPApp/patches/resources/raw/error.png
rename to MBCPApp/blob_patches/resources/raw/error.png
diff --git a/MBCPApp/patches/resources/raw/id_card.json b/MBCPApp/blob_patches/resources/raw/id_card.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/id_card.json
rename to MBCPApp/blob_patches/resources/raw/id_card.json
diff --git a/MBCPApp/patches/resources/raw/id_card_back_0.mp3 b/MBCPApp/blob_patches/resources/raw/id_card_back_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/id_card_back_0.mp3
rename to MBCPApp/blob_patches/resources/raw/id_card_back_0.mp3
diff --git a/MBCPApp/patches/resources/raw/id_card_back_1.mp3 b/MBCPApp/blob_patches/resources/raw/id_card_back_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/id_card_back_1.mp3
rename to MBCPApp/blob_patches/resources/raw/id_card_back_1.mp3
diff --git a/MBCPApp/patches/resources/raw/id_card_back_3.mp3 b/MBCPApp/blob_patches/resources/raw/id_card_back_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/id_card_back_3.mp3
rename to MBCPApp/blob_patches/resources/raw/id_card_back_3.mp3
diff --git a/MBCPApp/patches/resources/raw/id_card_front_0.mp3 b/MBCPApp/blob_patches/resources/raw/id_card_front_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/id_card_front_0.mp3
rename to MBCPApp/blob_patches/resources/raw/id_card_front_0.mp3
diff --git a/MBCPApp/patches/resources/raw/id_card_front_1.mp3 b/MBCPApp/blob_patches/resources/raw/id_card_front_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/id_card_front_1.mp3
rename to MBCPApp/blob_patches/resources/raw/id_card_front_1.mp3
diff --git a/MBCPApp/patches/resources/raw/id_card_front_3.mp3 b/MBCPApp/blob_patches/resources/raw/id_card_front_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/id_card_front_3.mp3
rename to MBCPApp/blob_patches/resources/raw/id_card_front_3.mp3
diff --git a/MBCPApp/patches/resources/raw/international_passport_0.mp3 b/MBCPApp/blob_patches/resources/raw/international_passport_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/international_passport_0.mp3
rename to MBCPApp/blob_patches/resources/raw/international_passport_0.mp3
diff --git a/MBCPApp/patches/resources/raw/international_passport_1.mp3 b/MBCPApp/blob_patches/resources/raw/international_passport_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/international_passport_1.mp3
rename to MBCPApp/blob_patches/resources/raw/international_passport_1.mp3
diff --git a/MBCPApp/patches/resources/raw/international_passport_3.mp3 b/MBCPApp/blob_patches/resources/raw/international_passport_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/international_passport_3.mp3
rename to MBCPApp/blob_patches/resources/raw/international_passport_3.mp3
diff --git a/MBCPApp/patches/resources/raw/keep.xml b/MBCPApp/blob_patches/resources/raw/keep.xml
similarity index 100%
rename from MBCPApp/patches/resources/raw/keep.xml
rename to MBCPApp/blob_patches/resources/raw/keep.xml
diff --git a/MBCPApp/patches/resources/raw/mapdata.json b/MBCPApp/blob_patches/resources/raw/mapdata.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/mapdata.json
rename to MBCPApp/blob_patches/resources/raw/mapdata.json
diff --git a/MBCPApp/patches/resources/raw/nfc_screen2_popup_guide.mp3 b/MBCPApp/blob_patches/resources/raw/nfc_screen2_popup_guide.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/nfc_screen2_popup_guide.mp3
rename to MBCPApp/blob_patches/resources/raw/nfc_screen2_popup_guide.mp3
diff --git a/MBCPApp/patches/resources/raw/nfc_screen2_try_scan_voice.mp3 b/MBCPApp/blob_patches/resources/raw/nfc_screen2_try_scan_voice.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/nfc_screen2_try_scan_voice.mp3
rename to MBCPApp/blob_patches/resources/raw/nfc_screen2_try_scan_voice.mp3
diff --git a/MBCPApp/patches/resources/raw/passport_0.mp3 b/MBCPApp/blob_patches/resources/raw/passport_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/passport_0.mp3
rename to MBCPApp/blob_patches/resources/raw/passport_0.mp3
diff --git a/MBCPApp/patches/resources/raw/passport_1.mp3 b/MBCPApp/blob_patches/resources/raw/passport_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/passport_1.mp3
rename to MBCPApp/blob_patches/resources/raw/passport_1.mp3
diff --git a/MBCPApp/patches/resources/raw/passport_3.mp3 b/MBCPApp/blob_patches/resources/raw/passport_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/passport_3.mp3
rename to MBCPApp/blob_patches/resources/raw/passport_3.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_demo_face_0.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_face_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_demo_face_0.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_face_0.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_demo_face_1.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_face_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_demo_face_1.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_face_1.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_demo_face_3.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_face_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_demo_face_3.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_face_3.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_demo_start_0.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_start_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_demo_start_0.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_start_0.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_demo_start_1.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_start_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_demo_start_1.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_start_1.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_demo_start_3.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_start_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_demo_start_3.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_start_3.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_demo_voice_0.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_voice_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_demo_voice_0.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_voice_0.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_demo_voice_1.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_voice_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_demo_voice_1.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_voice_1.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_demo_voice_3.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_voice_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_demo_voice_3.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_demo_voice_3.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_face_0.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_face_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_face_0.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_face_0.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_face_1.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_face_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_face_1.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_face_1.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_face_3.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_face_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_face_3.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_face_3.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_voice_0.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_voice_0.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_voice_0.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_voice_0.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_voice_1.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_voice_1.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_voice_1.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_voice_1.mp3
diff --git a/MBCPApp/patches/resources/raw/singalarity_ai_voice_3.mp3 b/MBCPApp/blob_patches/resources/raw/singalarity_ai_voice_3.mp3
similarity index 100%
rename from MBCPApp/patches/resources/raw/singalarity_ai_voice_3.mp3
rename to MBCPApp/blob_patches/resources/raw/singalarity_ai_voice_3.mp3
diff --git a/MBCPApp/patches/resources/raw/top_logo_partner.png b/MBCPApp/blob_patches/resources/raw/top_logo_partner.png
similarity index 100%
rename from MBCPApp/patches/resources/raw/top_logo_partner.png
rename to MBCPApp/blob_patches/resources/raw/top_logo_partner.png
diff --git a/MBCPApp/patches/resources/raw/ui_json_fail.json b/MBCPApp/blob_patches/resources/raw/ui_json_fail.json
similarity index 100%
rename from MBCPApp/patches/resources/raw/ui_json_fail.json
rename to MBCPApp/blob_patches/resources/raw/ui_json_fail.json
diff --git a/MBCPApp/patches/resources/raw/video_intro_no_voice_0.mp4 b/MBCPApp/blob_patches/resources/raw/video_intro_no_voice_0.mp4
similarity index 100%
rename from MBCPApp/patches/resources/raw/video_intro_no_voice_0.mp4
rename to MBCPApp/blob_patches/resources/raw/video_intro_no_voice_0.mp4
diff --git a/MBCPApp/patches/resources/raw/video_intro_no_voice_1.mp4 b/MBCPApp/blob_patches/resources/raw/video_intro_no_voice_1.mp4
similarity index 100%
rename from MBCPApp/patches/resources/raw/video_intro_no_voice_1.mp4
rename to MBCPApp/blob_patches/resources/raw/video_intro_no_voice_1.mp4
diff --git a/MBCPApp/patches/resources/raw/video_intro_no_voice_3.mp4 b/MBCPApp/blob_patches/resources/raw/video_intro_no_voice_3.mp4
similarity index 100%
rename from MBCPApp/patches/resources/raw/video_intro_no_voice_3.mp4
rename to MBCPApp/blob_patches/resources/raw/video_intro_no_voice_3.mp4
diff --git a/MBCPApp/patches/resources/raw/video_intro_with_voice_0.mp4 b/MBCPApp/blob_patches/resources/raw/video_intro_with_voice_0.mp4
similarity index 100%
rename from MBCPApp/patches/resources/raw/video_intro_with_voice_0.mp4
rename to MBCPApp/blob_patches/resources/raw/video_intro_with_voice_0.mp4
diff --git a/MBCPApp/patches/resources/raw/video_intro_with_voice_1.mp4 b/MBCPApp/blob_patches/resources/raw/video_intro_with_voice_1.mp4
similarity index 100%
rename from MBCPApp/patches/resources/raw/video_intro_with_voice_1.mp4
rename to MBCPApp/blob_patches/resources/raw/video_intro_with_voice_1.mp4
diff --git a/MBCPApp/patches/resources/raw/video_intro_with_voice_3.mp4 b/MBCPApp/blob_patches/resources/raw/video_intro_with_voice_3.mp4
similarity index 100%
rename from MBCPApp/patches/resources/raw/video_intro_with_voice_3.mp4
rename to MBCPApp/blob_patches/resources/raw/video_intro_with_voice_3.mp4
diff --git a/MBCPApp/patches/resources/strings-vi/strings.xml b/MBCPApp/blob_patches/resources/strings-vi/strings.xml
similarity index 100%
rename from MBCPApp/patches/resources/strings-vi/strings.xml
rename to MBCPApp/blob_patches/resources/strings-vi/strings.xml
diff --git a/MBCPApp/patches/restore_oldreg/onboarding_illus_featureAccount.webp b/MBCPApp/blob_patches/restore_oldreg/onboarding_illus_featureAccount.webp
similarity index 100%
rename from MBCPApp/patches/restore_oldreg/onboarding_illus_featureAccount.webp
rename to MBCPApp/blob_patches/restore_oldreg/onboarding_illus_featureAccount.webp
diff --git a/MBCPApp/patches/restore_oldreg/onboarding_illus_featureFreeService.webp b/MBCPApp/blob_patches/restore_oldreg/onboarding_illus_featureFreeService.webp
similarity index 100%
rename from MBCPApp/patches/restore_oldreg/onboarding_illus_featureFreeService.webp
rename to MBCPApp/blob_patches/restore_oldreg/onboarding_illus_featureFreeService.webp
diff --git a/MBCPApp/patches/restore_oldreg/onboarding_illus_featureMBS.webp b/MBCPApp/blob_patches/restore_oldreg/onboarding_illus_featureMBS.webp
similarity index 100%
rename from MBCPApp/patches/restore_oldreg/onboarding_illus_featureMBS.webp
rename to MBCPApp/blob_patches/restore_oldreg/onboarding_illus_featureMBS.webp
diff --git a/MBCPApp/patches/restore_oldreg/onboarding_illus_featureShield.webp b/MBCPApp/blob_patches/restore_oldreg/onboarding_illus_featureShield.webp
similarity index 100%
rename from MBCPApp/patches/restore_oldreg/onboarding_illus_featureShield.webp
rename to MBCPApp/blob_patches/restore_oldreg/onboarding_illus_featureShield.webp
diff --git a/MBCPApp/patches/restore_oldreg/onboarding_img_referLinkNoneCoin.webp b/MBCPApp/blob_patches/restore_oldreg/onboarding_img_referLinkNoneCoin.webp
similarity index 100%
rename from MBCPApp/patches/restore_oldreg/onboarding_img_referLinkNoneCoin.webp
rename to MBCPApp/blob_patches/restore_oldreg/onboarding_img_referLinkNoneCoin.webp
diff --git a/MBCPApp/patches/restore_oldreg/onboarding_img_referLinkPersonalCoin.webp b/MBCPApp/blob_patches/restore_oldreg/onboarding_img_referLinkPersonalCoin.webp
similarity index 100%
rename from MBCPApp/patches/restore_oldreg/onboarding_img_referLinkPersonalCoin.webp
rename to MBCPApp/blob_patches/restore_oldreg/onboarding_img_referLinkPersonalCoin.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat.webp b/MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat01.webp b/MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat01.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat01.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat01.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat02.webp b/MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat02.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat02.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat02.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat03.webp b/MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat03.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat03.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat03.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat04.webp b/MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat04.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/customerService_img_avatarChat04.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/customerService_img_avatarChat04.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/eMBee_img_headerNew.private.webp b/MBCPApp/blob_patches/revert_old_eMBee/eMBee_img_headerNew.private.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/eMBee_img_headerNew.private.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/eMBee_img_headerNew.private.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/eMBee_img_headerNew.webp b/MBCPApp/blob_patches/revert_old_eMBee/eMBee_img_headerNew.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/eMBee_img_headerNew.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/eMBee_img_headerNew.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/eMBee_img_loginSupport.private.webp b/MBCPApp/blob_patches/revert_old_eMBee/eMBee_img_loginSupport.private.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/eMBee_img_loginSupport.private.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/eMBee_img_loginSupport.private.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/eMBee_img_loginSupport.webp b/MBCPApp/blob_patches/revert_old_eMBee/eMBee_img_loginSupport.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/eMBee_img_loginSupport.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/eMBee_img_loginSupport.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/homeLanding_img_avatarDefault.private.webp b/MBCPApp/blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.private.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/homeLanding_img_avatarDefault.private.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.private.webp
diff --git a/MBCPApp/patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp b/MBCPApp/blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp
similarity index 100%
rename from MBCPApp/patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp
rename to MBCPApp/blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp
diff --git a/MBCPApp/patches/semipriority/ic_logo_mb_text.svg b/MBCPApp/blob_patches/semipriority/ic_logo_mb_text.svg
similarity index 100%
rename from MBCPApp/patches/semipriority/ic_logo_mb_text.svg
rename to MBCPApp/blob_patches/semipriority/ic_logo_mb_text.svg
diff --git a/MBCPApp/patches/semipriority/welcom_img_eMbee.webp b/MBCPApp/blob_patches/semipriority/welcom_img_eMbee.webp
similarity index 100%
rename from MBCPApp/patches/semipriority/welcom_img_eMbee.webp
rename to MBCPApp/blob_patches/semipriority/welcom_img_eMbee.webp
diff --git a/MBCPApp/patches/skip_maintainscreen/com/vtap/VTapSetupPlugin.smali b/MBCPApp/blob_patches/skip_maintainscreen/com/vtap/VTapSetupPlugin.smali
similarity index 100%
rename from MBCPApp/patches/skip_maintainscreen/com/vtap/VTapSetupPlugin.smali
rename to MBCPApp/blob_patches/skip_maintainscreen/com/vtap/VTapSetupPlugin.smali
diff --git a/MBCPApp/common.sh b/MBCPApp/common.sh
new file mode 100644
index 0000000..aed894b
--- /dev/null
+++ b/MBCPApp/common.sh
@@ -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"
+}
diff --git a/MBCPApp/legacy_patch.sh b/MBCPApp/legacy_patch.sh
index a1865d4..0f2e620 100755
--- a/MBCPApp/legacy_patch.sh
+++ b/MBCPApp/legacy_patch.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
echo "Legacy patches list for MBCPApp :"
PS3='Select patch options :'
@@ -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 :"
diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh
index ceaae84..b04d4c4 100755
--- a/MBCPApp/mbcpapp.sh
+++ b/MBCPApp/mbcpapp.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# vim: expandtab tabstop=4 shiftwidth=4
FILEPATH=$(readlink -f "$0")
@@ -6,6 +6,7 @@ DIRPATH=$(dirname "$FILEPATH")
export DIRPATH
# Initial startup
+cd "$DIRPATH"
mkdir -p "$DIRPATH"/mbapk
mkdir -p "$DIRPATH"/mbcpapp_apk
mkdir -p "$DIRPATH"/tools
@@ -13,7 +14,7 @@ clear
# Check if user is running on an 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)
@@ -26,21 +27,23 @@ fi
if command -v figlet ; then
FIGLET=figlet
else
- echo "WARN : figlet not found, ignoring banner !"
+ warn "figlet not found, ignoring banner !"
FIGLET=:
fi
+. "$DIRPATH/common.sh"
+
# 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
# Check if user runs on macOS environment
if [[ $OSTYPE == 'darwin'* ]]; then
- echo "INFO : You have macOS environment, which is not supported !"
+ info "You have macOS environment, which is not supported !"
exit
fi
@@ -60,8 +63,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 ..
}
@@ -71,19 +74,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 || {
@@ -96,7 +99,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_'
@@ -177,7 +180,7 @@ convert_apks() {
}
run_patcher() {
- is_unpacked_lib && bash ./patch.sh
+ is_unpacked_lib && bash ./parse.sh && bash ./patch.sh
}
run_legacy_patcher() {
@@ -225,7 +228,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
@@ -267,10 +270,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
@@ -285,7 +288,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' )
diff --git a/MBCPApp/parse.sh b/MBCPApp/parse.sh
new file mode 100644
index 0000000..9acc9c5
--- /dev/null
+++ b/MBCPApp/parse.sh
@@ -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
diff --git a/MBCPApp/patch.sh b/MBCPApp/patch.sh
deleted file mode 100755
index d19c459..0000000
--- a/MBCPApp/patch.sh
+++ /dev/null
@@ -1,1015 +0,0 @@
-#!/bin/bash
-# vim: expandtab tabstop=4 shiftwidth=4
-# shellcheck disable=SC2016
-
-# Check if user is trying to run under WSL (Windows Subsystem for Linux)
-# Removing this detection part might cause project development to be STOPPED, You've been warned !
-if [ -f /proc/sys/fs/binfmt_misc/WSLInterop ]; then
-echo "Detected WSL (Windows Subsystem for Linux) in current environment !!"
-echo "INFO : MBCPApp Patcher must be run on actual or virtualized (non-WSL) Linux environment instead !!!"
-echo "INFO : Trying to remove WSL detection code might make the script malfunction !"
-exit
-fi
-
-if [[ $OSTYPE == 'darwin'* ]]; then
- echo "INFO : You have macOS environment, which is not supported !"
- exit
-fi
-
-# 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]}"
-}
-
-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
- ) && echo "INFO : [$target] -> [$replacement]" || echo "WARN : 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
- ) && echo "INFO : [$target] -> [$replacement]" || echo "WARN : replacing [$target] failed !"
-}
-
-manifest_remove() {
- sed -i "/$1/d" "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
-}
-
-get_mb_ver() {
- a="$(grep -m1 'versionName' "$DIRPATH"/mbapk/mbapk_unpacked/apktool.yml)"
- a="$(bb_split "$a" ':' '1')"
- bb_split "$a" '.' '2'
-}
-
-patch_finish() {
- 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"
-}
-
-echo ---------------------------
-echo 'Patch list for MBCPApp :'
-PS3='Select patch options : '
-select opt in 'Autopatch strings' 'Change app logo' 'Force portrait screen' 'Remove invoke to mbshield' 'Remove bulit-in fonts' 'Modify app theme' 'Remove garbage permission and activities' 'Remove eMBee' 'Revert old eMBee logo' 'Remove animated QR background' 'Remove banners & MiniApp' 'Remove VPN detection' 'Remove VNPAY VMB20' 'Restore old registration resources' 'Bypass accessibility & malicious apps check' 'Hide VTAP root detection activity & dialog' 'Remove new root detection' 'Bypass new zimperium detection' 'Remove app from launcher' 'Remove protection shield' 'Set targetSdkVersion to 35' 'Add modified resources' 'Add anime resources' 'Exit'
-do
- if [ "$opt" == 'Autopatch strings' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/lib ]
- then
- echo "Applying [Autopatch strings] patch..."
- echo "Patching strings in [libapp.so], please wait..."
- # 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'
-
-
-
- patch_finish "autopatch_strings"
- echo "Applied [Autopatch strings] patch !!!"
-
- else
- echo "ERROR : [mbapk_unpacked] folder not found, please unpack APK first !"
- echo "ERROR : Auto patch strings requires [mbapk_unpacked] in order to continue !"
- fi
-
- elif [ "$opt" == 'Force portrait screen' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "Applying patch [Force portrait screen]..."
- echo "Patching [AndroidManifest.xml]..."
- sed -i 's|fullSensor|portrait|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
- patch_finish "force_portrait_screen"
- echo "Applied [Force portrait screen] patch !!!"
- else
- echo "ERROR : [mbapk_unpacked] folder not found, please unpack APK first !"
- fi
-
- elif [ "$opt" == 'Remove protection shield' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "Apply patch [Remove protection shield]..."
- sed_libapp 's|get-protective-cyber-risk|get_protective_cyber_none|g'
- sed_libapp 's|Activate for Protection|Protection are disabled|g'
- echo "Removing resources..."
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_pending.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_actived.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_empty.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_illus_pending.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'
-
- # Private exclusive
- 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/shield_illus_pending.private.webp'
-
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_pending.private.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_actived.private.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_empty.private.webp'
-
-
- # Priority exclusive
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/shield_img_pending.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/shield_img_empty.webp'
-
- echo "NOTE : This doesn't remove the app protection shield, it just disable and remove the MB Protection Shield, which literally is the MIC Shield !"
- echo "Applied [Remove protection shield] patch !"
- else
- echo "ERROR : [mbapk_unpacked] folder not found, please unpack APK first !"
- fi
-
-
- elif [ "$opt" == 'Remove app from launcher' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "Applying patch [Remove app from launcher]..."
- echo "Patching [AndroidManifest.xml]..."
- sed -i 's|||g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
- else
- echo "ERROR : [mbapk_unpacked] folder not found, please unpack APK first !"
- fi
-
- elif [ "$opt" == 'Bypass accessibility & malicious apps check' ]; then
- if [ -d "$DIRPATH"/patches/bypass_accessibility_applist ]
- then
- if [ "$(get_mb_ver)" -lt 55 ] ; then
- echo "Applying patch [Bypass accessibility & malicious apps check]..."
- echo 'Copying patched code [MbbankUtilitiesPlugin]...'
- cp -r -f 'patches/bypass_accessibility_applist/com' 'mbapk/mbapk_unpacked/smali_classes3'
- echo 'Patching [AndroidManifest.xml]...'
- sed -i 's|| |g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
- echo 'Patching [libapp.so]...'
- sed_libapp 's|PackageName|packageMBBB|g'
- sed_libapp 's|packageName|packageMBBa|g'
- patch_finish "bypass_accessibility_malicious_app_check"
- echo "Applied [Bypass accessibility & malicious apps check] patch !!!"
- else
- echo "WARN : This patch is only applicable for v6.4.54 and lower"
- fi
- else
- echo "Patch not found ! Aborting :)"
- fi
-
- elif [ "$opt" == 'Remove garbage permission and activities' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "Applying patch [Remove garbage permission and activities]..."
- echo "Patching [AndroidManifest.xml]..."
- sed -i 's|android:protectionLevel="signature"|android:protectionLevel="normal"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
- manifest_remove 'android:name="com.android.vending.CHECK_LICENSE"'
- manifest_remove 'android:name="com.google.android.gms.permission.AD_ID"'
- manifest_remove "com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY"
- manifest_remove "com.vtap.MaintenanceActivity"
- manifest_remove "com.mbmobile.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
- manifest_remove "com.vkey.android.vguard.VGDialogActivity"
- patch_finish "remove_garbage_permission_and_activities"
- echo "Applied [Remove garbage permission and activities] patch !!!"
-
- else
- echo "[mbapk_unpacked] not found ! Please unpack APK !"
- fi
-
- elif [ "$opt" == 'Remove eMBee' ]; then
- echo "WARNING : Remove eMBee also remove customer support and any other options on eMBee Helper !"
- echo "Removing eMBee Customer support function..."
- sed_libapp 's|group_button_support|itsnotworthittouseem|g'
- sed_libapp 's|Customer support| |g'
- echo "Removing eMBee..."
- 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'
-
- patch_finish "remove_embee"
-
- echo "Applied [Remove eMBee] patch !!!"
-
- elif [ "$opt" == 'Remove VNPAY VMB20' ]; then
- if [ "$(get_mb_ver)" -gt 56 ] ; then
- echo "Applying patch..."
- rm -rf 'mbapk/mbapk_unpacked/smali_classes4/com/vnpay'
- rm -rf 'mbapk/mbapk_unpacked/smali_classes4/com/d5'
- rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/u4'
- rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/v4'
- rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/x2'
- rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/y4'
- rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/z4'
- rm -rf 'mbapk/mbapk_unpacked/smali/com/a5'
- rm -rf 'mbapk/mbapk_unpacked/smali/com/ay4'
- rm -rf 'mbapk/mbapk_unpacked/smali/com/az4'
- rm -rf 'mbapk/mbapk_unpacked/smali/com/c5'
- rm -rf 'mbapk/mbapk_unpacked/smali/com/d5'
- for i in {9..82}; do
- # skip 77, 78, 79
- case $i in
- 77 | 78 | 79 | 81 ) :; ;;
- *) rm -f "mbapk/mbapk_unpacked/smali_classes5/mbshield/EP$i.smali" ;;
- esac
- done
- rm -f 'mbapk/mnapk_unpacked/res/drawable-xhdpi/ic_home_vna.png'
- rm -f 'mbapk/mnapk_unpacked/res/drawable-xhdpi/logo_vnairline.png'
- rm -f 'mbapk/mnapk_unpacked/res/drawable-xxhdpi/ic_home_vna.png'
- rm -f 'mbapk/mnapk_unpacked/res/drawable-xxhdpi/logo_vnairline.png'
- echo "Removing resources..."
-
- cd "$DIRPATH" || exit 127
-
- # Remove activity
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20BlankActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.SearchingResultActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.FlightSearchingActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.FollowingFlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.FlightDetailActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20TimChuyenBayActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20ThoiGianActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20DiaDiemActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20HangHangKhongActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20LoadingActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.confirm.VMBConfirmBookActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20BookFlightSuccessActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20BookHistoryActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20TicketDetailsActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20TermActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20InfoServiceActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20ActivityThoiGianNew"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20BookFlightSuccessActivity2"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.CheckinActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.PnrInfoActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.InitChooseSeatActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.UpdateInfoActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.UpdatePassportInfoActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.ReCheckinActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.TicketPreviewActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.CheckinConditionAcitvity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.SendMailActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.TermConditionActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.FlightTrackingMapActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJInfoFlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.rename.VMBChangeNameActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.rename.VJDetailFeeActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.changeFlight.VJChangeFlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJListFlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJHistoryActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.history.VJInfoTicketActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJTermActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.history.VJDetailTicketActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.ancillary.VJAddOnMealActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20PaylaterActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.ebill.VMB20EBillActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.ebill.VMB20ConfirmExportBillActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJConfirmActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20FlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20AirportActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20IFlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20NewSortActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20DetailFlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VMBManagerBookingActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VMBDetailFeeActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VMBInfoFlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VMBSeatMapActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.seats.VMBInfoSeatActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.ancillary.VNBL.VMBVNBLActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Voucher.VMBListVoucherActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Voucher.VMBDetailVoucherActivity"'
- manifest_remove 'android:name="com.vnpay.tracking.ExitService"'
- manifest_remove 'android:name="com.vnpay.tracking.TrackingReceiver"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.contact.VMBAddInfoActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.contact.VMBPassengerContactActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.infobook.VMBNewInfoBookActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.search.VMBNewSearchActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.search.VMBSortINTFlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.iflight.VMBNewIFlightsActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.iflight.VMBQuotePriceIFlightActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.checkin.PnrReviewActivity"'
- manifest_remove 'android:name="com.vnpay.ticketlib.Activity.contact.VMBAddInfoActivity"'
-
- # stub
- sed -i 's|||g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
- manifest_remove 'android:name="_vemaybay_payment"'
- manifest_remove 'android:name="_vemaybay_payment_without_paymentcode"'
- manifest_remove 'android:name="_vemaybay_payment_paylater"'
-
- cp -f 'patches/remove_vmb20/GeneratedPluginRegistrant.smali' 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/base/partner/img_vnpay.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/base/partner/img_vna.webp'
- sed -i 's|vna_flight_landing|broken_vna_ehh_idk|g' "$DIRPATH"/mbapk/mbapk_unpacked/lib/arm64-v8a/libapp.so
- sed -i 's|vna_flight_landing|broken_vna_ehh_idk|g' "$DIRPATH"/mbapk/mbapk_unpacked/lib/armeabi-v7a/libapp.so
-
-
- echo "Applied patch [Remove VNPAY VMB20] !!"
- patch_finish "remove_vnpay_vmb20"
- else
- echo "WARN : This patch is only applicable for v6.4.56+"
- fi
-
- elif [ "$opt" == 'Revert old eMBee logo' ]; then
- if [ -d "$DIRPATH"/patches/revert_old_eMBee ]
- then
- echo "Removing new eMBee logo..."
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/customerService_img_avatarChat.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/customerService_img_avatarChat01.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/customerService_img_avatarChat02.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/customerService_img_avatarChat03.webp'
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/customerService_img_avatarChat04.webp'
- echo "Copying old eMBee logo..."
- cp -f 'patches/revert_old_eMBee/customerService_img_avatarChat.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/customerService_img_avatarChat01.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/customerService_img_avatarChat02.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/customerService_img_avatarChat03.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/customerService_img_avatarChat04.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/eMBee_img_headerNew.private.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/eMBee_img_headerNew.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/eMBee_img_loginSupport.private.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/eMBee_img_loginSupport.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
-
- # Priority exclusive
- cp -f 'patches/revert_old_eMBee/eMBee_img_headerNew.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority'
- cp -f 'patches/revert_old_eMBee/eMBee_img_loginSupport.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority'
-
- # Restore old eMBee account profile picture (present before on MB React Native)
- cp -f 'patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/homeLanding_img_avatarDefault.private.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority'
-
-
- patch_finish "revert_old_embee"
- echo "Applied [Revert old eMBee logo] patch !!!"
-
- else
- echo "[revert_old_eMBee] patch not found !"
- fi
-
- elif [ "$opt" == 'Remove invoke to mbshield' ]; then
- if [ -d "$DIRPATH"/patches/noinvoke ]
- then
- echo "Currently only support remove invoke mbshield to [io.flutter.plugins.MainActivity] and [MBBHomeWidgetQR] !!!"
- echo "Copying..."
- rm -f 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins/MainAcitivity.smali'
- rm -f 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins/MBBHomeWidgetQR.smali'
- cp -f 'patches/noinvoke/MainActivity.smali' 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins'
- cp -f 'patches/noinvoke/MBBHomeWidgetQR.smali' 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins'
- echo "Removing left over files..."
- for i in {0..83}; do
- case $i in
- *) rm -f "mbapk/mbapk_unpacked/smali_classes5/mbshield/EP$i.smali" ;;
- esac
- done
-
- patch_finish "remove_invoke_to_mbshield"
- echo "Applied [Remove invoke to mbshield] patch !!!"
- else
- echo "noinvoke patch not found!"
- fi
-
- elif [ "$opt" == 'Restore old registration resources' ]; then
- if [ -d "$DIRPATH"/patches/restore_oldreg ]
-then
- echo "Applying patch..."
- cp -f 'patches/restore_oldreg/onboarding_illus_featureAccount.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
- cp -f 'patches/restore_oldreg/onboarding_illus_featureFreeService.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
- cp -f 'patches/restore_oldreg/onboarding_illus_featureMBS.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
- cp -f 'patches/restore_oldreg/onboarding_illus_featureShield.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
- cp -f 'patches/restore_oldreg/onboarding_img_referLinkNoneCoin.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
- cp -f 'patches/restore_oldreg/onboarding_img_referLinkPersonalCoin.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
- patch_finish "restore_old_registration_resources"
- echo "Applied [Restore old registration resources] patch !!!"
-else
- echo "[restore_oldreg] not found !"
-fi
-
- elif [ "$opt" == 'Bypass new zimperium detection' ]; then
- if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali ]
- then
- echo "Applying patch..."
- echo 'Removing [libvvb2060.so]...'
- rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libvvb2060.so'
- rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libvvb2060.so'
- echo 'Removing [libtoolChecker.so]...'
- rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libtoolChecker.so'
- rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libtoolChecker.so'
- echo "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
- echo "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'
- echo "Patching [AndroidManifest.xml]..."
- manifest_remove 'android:name="android.permission.QUERY_ALL_PACKAGES"'
- echo "App data clear are mandatory in order to make app to not trigger root detect screen"
- patch_finish "bypass_new_zimperium_detection"
- echo "Applied [Bypass new zimperium detection] patch !!!"
-else
- echo "[UnderlyingVcl.smali] not found! Please clear patched app then unpack again!"
-fi
-
- # Test remove VPN detection function from bundle, that showing notice warn users to turn off VPN.
- elif [ "$opt" == 'Remove VPN detection' ]; then
- echo "Applying patch..."
- sed_libapp 's|vpn|app|g'
- patch_finish "remove_vpn_detection"
- echo "Applied [Remove VPN detection patch] !!!"
-
- elif [ "$opt" == 'Add anime resources' ]; then
- if [ -d "$DIRPATH"/patches/anime_resources ]
- then
- echo "Applying patch..."
- cp -f 'patches/anime_resources/rating_illus_fiveStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'
- cp -f 'patches/anime_resources/rating_illus_fourStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'
- cp -f 'patches/anime_resources/rating_illus_threeStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'
- cp -f 'patches/anime_resources/rating_illus_twoStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'
- cp -f 'patches/anime_resources/rating_illus_oneStar.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/'
- patch_finish "add_anime_resources"
- echo "Applied [Add anime resources] patch !"
- else
- echo "[anime_resources] not found !"
- fi
-
- elif [ "$opt" == 'Set targetSdkVersion to 35' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "Applying patch..."
- sed -i 's|targetSdkVersion: 34|targetSdkVersion: 35|g' "$DIRPATH"/mbapk/mbapk_unpacked/apktool.yml
- else
- echo "ERROR : [mbapk_unpacked] folder not found, please unpack APK first !"
- fi
-
- elif [ "$opt" == 'Remove animated QR background' ]; then
- if [ -d "$DIRPATH"/patches/qr_white ]
-then
- echo "This will remove animated QR on bottom navigation bar and replace with white background !"
- echo "Removing animated QR..."
- rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/homeLanding_bg_qrCode.gif'
- echo "Copying new static white background..."
- mv 'patches/qr_white/150.png' 'patches/qr_white/homeLanding_bg_qrCode.gif' > /dev/null 2>&1
- cp -f 'patches/qr_white/homeLanding_bg_qrCode.gif' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static'
- patch_finish "remove_animated_qr_background"
- echo "Applied [Remove animated QR background] patch !!!"
-else
- echo "[qr_white] not found !"
-fi
-
- elif [ "$opt" == 'Remove banners & MiniApp' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "Applying patch [Remove banners & MiniApp]..."
- echo 'Removing banner links from [libapp.so]...'
- sed_libapp 's|banner|remove|g'
- sed_libapp 's|marketplacehome|removemarketapp|g'
-
- echo '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'
-
- patch_finish "remove_banner_miniapp"
-
- echo "Applied [Remove banners & MiniApp] patch !!!"
-
- else
- echo "[mbapk_unpacked] folder not found ! Please unpack APK first !"
- fi
-
- elif [ "$opt" == 'Remove new root detection' ]; then
- if [ "$(get_mb_ver)" -lt 59 ] ; then
- echo "Applying [Remove new root detection] patch..."
- echo 'Removing [libZDefend.so]...'
- rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libZDefend.so'
- rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libZDefend.so'
- echo 'Removing [libvvb2060.so]...'
- rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libvvb2060.so'
- rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libvvb2060.so'
- echo 'Removing [libtoolChecker.so]...'
- rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libtoolChecker.so'
- rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libtoolChecker.so'
- echo 'Removing [libdesignersactivists.so]...'
- rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libdesignersactivists.so'
- rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libdesignersactivists.so'
- echo 'Removing related files...'
- sleep 3
- rm -rf 'mbapk/mbapk_unpacked/assets/zfiles'
- rm -f 'mbapk/mbapk_unpacked/assets/dlangV5.dat'
- rm -f 'mbapk/mbapk_unpacked/assets/dlangV5.en.dat'
- rm -f 'mbapk/mbapk_unpacked/assets/policy0'
- rm -f 'mbapk/mbapk_unpacked/assets/policy1'
- rm -f 'mbapk/mbapk_unpacked/assets/policy2'
- rm -f 'mbapk/mbapk_unpacked/assets/policy3'
- rm -f 'mbapk/mbapk_unpacked/assets/policy4'
- rm -f 'mbapk/mbapk_unpacked/assets/policy5'
- rm -f 'mbapk/mbapk_unpacked/assets/policy6'
- rm -f 'mbapk/mbapk_unpacked/assets/policy8'
- rm -f 'mbapk/mbapk_unpacked/assets/policy9'
- rm -f 'mbapk/mbapk_unpacked/assets/policym'
- rm -f 'mbapk/mbapk_unpacked/assets/rulesV5.dat'
- rm -rf 'mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl'
- rm -f 'mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali'
- echo "Patching [AndroidManifest.xml]"
- manifest_remove 'android:authorities="com.mbmobile.honor.essence.enter'
- manifest_remove 'android:authorities="com.mbmobile.inserted.thumbzilla.ireland'
- patch_finish "remove_new_root_detection"
- echo "Applied [Remove new root detection] patch !!!"
- else
- echo "WARN : This patch is only applicable for v6.4.58 and lower"
- fi
-
- elif [ "$opt" == 'Add modified resources' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "Applying patch [Add modified resources]..."
- echo "Copying modified resources..."
- cp -r -f 'patches/resources/raw' 'mbapk/mbapk_unpacked/res/'
- cp -f 'patches/resources/strings-vi/strings.xml' 'mbapk/mbapk_unpacked/res/values-vi/'
- patch_finish "add_modified_resources"
- echo "Applied [Add modified resources] patch !!!"
- else
- echo "[mbapk_unpacked] not found ! Please unpack APK first !"
- fi
-
-elif [ "$opt" == 'Remove bulit-in fonts' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "Applying patch [Remove bulit-in fonts]..."
- echo "Removing..."
- 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
- echo "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'
- echo 'Copying fix fonts...'
- # NFC scanning phase requires actual font in order to not throw exception
- cp -f 'patches/resources/font/bold.ttf' 'mbapk/mbapk_unpacked/res/font/'
- cp -f 'patches/resources/font/medium.ttf' 'mbapk/mbapk_unpacked/res/font/'
- cp -f 'patches/resources/font/regular.ttf' 'mbapk/mbapk_unpacked/res/font/'
- patch_finish "remove_bulitin_fonts"
- echo "Applied [Remove bulit-in fonts] patch !!!"
- else
- echo "[mbapk_unpacked] not found ! Please unpack APK first !"
- fi
-
-
-elif [ "$opt" == 'Modify app theme' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo 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
- if [ "$opt" == 'MBCP SemiPriority' ]; then
- echo 'Moving [priority] folder...'
- mv 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority' 'patches/semipriority/'
- echo 'Modifying QR background...'
- rm -f 'patches/semipriority/priority/qr_img_ThemeDefalut.webp'
- mv 'patches/semipriority/priority/a_background_image.webp' 'patches/semipriority/priority/qr_img_ThemeDefalut.webp'
- echo 'Renaming to [base]...'
- mv 'patches/semipriority/priority' 'patches/semipriority/base'
- echo 'Copying to [flutter_assets/assets/images/dynamic/base]'
- cp -r -f 'patches/semipriority/base' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic'
- echo 'Renaming back to [priority]'
- mv 'patches/semipriority/base' 'patches/semipriority/priority'
- echo 'Copying back to [flutter_assets]...'
- cp -r -f 'patches/semipriority/priority' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic'
- echo 'Copying [ic_logo_mb_text.svg]...'
- cp -f 'patches/semipriority/ic_logo_mb_text.svg' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/svgs/'
- echo 'Copying [welcom_img_eMbee.webp]...'
- cp -f 'patches/semipriority/welcom_img_eMbee.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- echo 'Cleaning...'
- rm -rf 'patches/semipriority/priority'
- patch_finish "semipriority_theme"
- echo "Applied [MBCP SemiPriority] theme."
-
-
-
- elif [ "$opt" == 'MBCP MBClassic' ]; then
- echo "Ensure that you did NOT applied SemiPriority theme before apply this theme !"
- echo "Otherwise it will conflicts like mixed SemiPriority and MB Classic theme, You've warned !!! "
- cp -f 'patches/mbclassic/a_background_image.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/mbclassic/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/mbclassic/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/mbclassic/loading_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/mbclassic/login_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/mbclassic/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- echo "Patching [libapp.so]..."
- 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"
- echo 'Applied [MBCP MBClassic] theme.'
-
- elif [ "$opt" == 'Noel 2024' ]; then
- echo "Ensure that you did NOT applied SemiPriority theme before apply this theme !"
- echo "Otherwise it will conflicts like mixed SemiPriority and Noel 2024 theme, You've warned !!! "
- cp -f 'patches/noel/a_background_image.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/bill_background_gold.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/coreBanking_img_successBackground.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/general_bg_success.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/loading_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/login_bg_main.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- ##############
- cp -f 'patches/noel/a_background_image.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/bill_background_gold.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/coreBanking_img_successBackground.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/general_bg_screenshot.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/general_bg_success.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/homeLanding_bg_main.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/loading_bg_main.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/login_bg_main.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'patches/noel/qr_img_ThemeDefalut.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- # Change theme preview
- cp -f 'patches/noel/customUI_img_classicMode.png' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
- cp -f '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
- echo "Patching [libapp.so]..."
- 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'
-
- patch_finish "noel2024_theme"
- echo "INFO : You WON'T be able to use other theme than Noel 2024 on app !"
-
- echo "Applied [Noel 2024] theme."
- elif [ "$opt" == 'Exit' ]; then
- bash patch.sh
- break
- fi
-done
-
-
- else
- echo "[mbapk_unpacked] folder not found, can't continue !"
- fi
-
-
-elif [ "$opt" == 'Change app logo' ]; then
- echo -------------------------------------------
- echo -------------------------------------------
- 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
- if [ "$opt" == '30/4-1/5' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ]
-then
- echo 'Removing old logos...'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-hdpi
- echo 'INFO : tries removed [mipmap-hdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-mdpi
- echo 'INFO : tries removed [mipmap-mdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xhdpi
- echo 'INFO : tries removed [mipmap-xhdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxhdpi
- echo 'INFO : tries removed [mipmap-xxhdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxxhdpi
- echo 'INFO : tries removed [mipmap-xxxhdpi] on [mbapk_unpacked/res] !'
- echo 'Copying new logos to [mbapk_unpacked/res] !!!'
- cp -r -f "$DIRPATH"/mbcpicons/thongnhatVN/mipmap-hdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/thongnhatVN/mipmap-mdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/thongnhatVN/mipmap-xhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/thongnhatVN/mipmap-xxhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/thongnhatVN/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- patch_finish "change_app_logo"
- echo 'Applied selected logo !'
- else
- echo "[mbapk_unpacked] not found ! Please unpack APK first !"
- fi
-
- elif [ "$opt" == 'MB Classic' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ]
-then
- echo 'Removing old logos...'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-hdpi
- echo 'INFO : tries removed [mipmap-hdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-mdpi
- echo 'INFO : tries removed [mipmap-mdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xhdpi
- echo 'INFO : tries removed [mipmap-xhdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxhdpi
- echo 'INFO : tries removed [mipmap-xxhdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxxhdpi
- echo 'INFO : tries removed [mipmap-xxxhdpi] on [mbapk_unpacked/res] !'
- echo 'Copying new logos to [mbapk_unpacked/res] !!!'
- cp -r -f "$DIRPATH"/mbcpicons/normal/mipmap-hdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/normal/mipmap-mdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/normal/mipmap-xhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/normal/mipmap-xxhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/normal/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- patch_finish "change_app_logo"
- echo 'Applied selected logo !'
- else
- echo "[mbapk_unpacked] not found ! Please unpack APK first !"
- fi
-
- elif [ "$opt" == 'Tet' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ]
-then
- echo 'Removing old logos...'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-hdpi
- echo 'INFO : tries removed [mipmap-hdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-mdpi
- echo 'INFO : tries removed [mipmap-mdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xhdpi
- echo 'INFO : tries removed [mipmap-xhdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxhdpi
- echo 'INFO : tries removed [mipmap-xxhdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxxhdpi
- echo 'INFO : tries removed [mipmap-xxxhdpi] on [mbapk_unpacked/res] !'
- echo 'Copying new logos to [mbapk_unpacked/res] !!!'
- cp -r -f "$DIRPATH"/mbcpicons/tet/mipmap-hdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/tet/mipmap-mdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/tet/mipmap-xhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/tet/mipmap-xxhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/tet/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- patch_finish "change_app_logo"
- echo 'Applied selected logo !'
- else
- echo "[mbapk_unpacked] not found ! Please unpack APK first !"
- fi
-
- elif [ "$opt" == 'Valentine 2025' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "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
- echo "Copying new logos to [mbapk_unpakced/res] !!!"
- cp -r -f "$DIRPATH"/mbcpicons/valentine/mipmap-hdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/valentine/mipmap-mdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/valentine/mipmap-xhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/valentine/mipmap-xxhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/valentine/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- patch_finish "change_app_logo"
- echo "Applied selected logo !"
- else
- ehco "[mbapk_unpacked] not found ! Please unpack APK first !"
- fi
-
- elif [ "$opt" == 'Summer 2025' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
- then
- echo "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
- echo "Copying new logos to [mbapk_unpakced/res] !!!"
- cp -r -f "$DIRPATH"/mbcpicons/summer2025/mipmap-hdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/summer2025/mipmap-mdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/summer2025/mipmap-xhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/summer2025/mipmap-xxhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/summer2025/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- patch_finish "change_app_logo"
- echo "Applied selected logo !"
- else
- ehco "[mbapk_unpacked] not found ! Please unpack APK first !"
- fi
-
-
- elif [ "$opt" == 'Noel' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ]
-then
- echo 'Removing old logos...'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-hdpi
- echo 'INFO : tries removed [mipmap-hdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-mdpi
- echo 'INFO : tries removed [mipmap-mdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xhdpi
- echo 'INFO : tries removed [mipmap-xhdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxhdpi
- echo 'INFO : tries removed [mipmap-xxhdpi] on [mbapk_unpacked/res] !'
- rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/res/mipmap-xxxhdpi
- echo 'INFO : tries removed [mipmap-xxxhdpi] on [mbapk_unpacked/res] !'
- echo 'Copying new logos to [mbapk_unpacked/res] !!!'
- cp -r -f "$DIRPATH"/mbcpicons/noel/mipmap-hdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/noel/mipmap-mdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/noel/mipmap-xhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/noel/mipmap-xxhdpi mbapk/mbapk_unpacked/res
- cp -r -f "$DIRPATH"/mbcpicons/noel/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- patch_finish "change_app_logo"
- echo 'Applied selected logo !'
- else
- echo "[mbapk_unpacked] not found ! Please unpack APK first !"
- fi
-
-
- elif [ "$opt" == 'Exit' ]; then
- bash patch.sh
-
- break
- fi
-done
-
- elif [ "$opt" == 'Hide VTAP root detection activity & dialog' ]; then
- if [ -d "$DIRPATH"/patches/skip_maintainscreen ]
- then
- echo "Applying [Hide VTAP root detection activity & dialog]..."
- # 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 'patches/bypass_rootold/BasicThreatInfo.smali' 'mbapk/mbapk_unpacked/smali_classes4/com/vkey/android/internal/vguard/engine/'
- cp -f 'patches/bypass_rootold/VGThreatAppInfo.smali' 'mbapk/mbapk_unpacked/smali_classes4/com/vkey/android/vguard/model/'
- cp -f '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'
- patch_finish "hide_vtap_root_detection_activity"
- echo "Applied [Hide VTAP root detection activity & dialog] patch !!!"
- else
- echo "Patch not found ! Aborting :)"
- fi
-
- elif [ "$opt" == 'Exit' ]; then
- exit
- fi
-done
-
diff --git a/MBCPApp/patches/TEMPLATE b/MBCPApp/patches/TEMPLATE
new file mode 100644
index 0000000..d955ef4
--- /dev/null
+++ b/MBCPApp/patches/TEMPLATE
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+# PATCHNAME:
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
diff --git a/MBCPApp/patches/add_anime_resources.sh b/MBCPApp/patches/add_anime_resources.sh
new file mode 100644
index 0000000..802ec45
--- /dev/null
+++ b/MBCPApp/patches/add_anime_resources.sh
@@ -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/'
diff --git a/MBCPApp/patches/add_modified_resources.sh b/MBCPApp/patches/add_modified_resources.sh
new file mode 100644
index 0000000..1b0bf39
--- /dev/null
+++ b/MBCPApp/patches/add_modified_resources.sh
@@ -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/'
diff --git a/MBCPApp/patches/autopatch_strings.sh b/MBCPApp/patches/autopatch_strings.sh
new file mode 100644
index 0000000..481d427
--- /dev/null
+++ b/MBCPApp/patches/autopatch_strings.sh
@@ -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'
diff --git a/MBCPApp/patches/bypass_accessibility_malicious_app_check.sh b/MBCPApp/patches/bypass_accessibility_malicious_app_check.sh
new file mode 100644
index 0000000..847b0c7
--- /dev/null
+++ b/MBCPApp/patches/bypass_accessibility_malicious_app_check.sh
@@ -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'
diff --git a/MBCPApp/patches/bypass_new_zimperium_detection.sh b/MBCPApp/patches/bypass_new_zimperium_detection.sh
new file mode 100644
index 0000000..53b8b0d
--- /dev/null
+++ b/MBCPApp/patches/bypass_new_zimperium_detection.sh
@@ -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"
diff --git a/MBCPApp/patches/change_app_logo.sh b/MBCPApp/patches/change_app_logo.sh
new file mode 100644
index 0000000..ed61e44
--- /dev/null
+++ b/MBCPApp/patches/change_app_logo.sh
@@ -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
diff --git a/MBCPApp/patches/force_portrait_screen.sh b/MBCPApp/patches/force_portrait_screen.sh
new file mode 100644
index 0000000..41c2180
--- /dev/null
+++ b/MBCPApp/patches/force_portrait_screen.sh
@@ -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
diff --git a/MBCPApp/patches/hide_vtap_root_detection_activity.sh b/MBCPApp/patches/hide_vtap_root_detection_activity.sh
new file mode 100644
index 0000000..2795d07
--- /dev/null
+++ b/MBCPApp/patches/hide_vtap_root_detection_activity.sh
@@ -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'
diff --git a/MBCPApp/patches/modify_app_theme.sh b/MBCPApp/patches/modify_app_theme.sh
new file mode 100644
index 0000000..0cddd98
--- /dev/null
+++ b/MBCPApp/patches/modify_app_theme.sh
@@ -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
diff --git a/MBCPApp/patches/remove_animated_qr_background.sh b/MBCPApp/patches/remove_animated_qr_background.sh
new file mode 100644
index 0000000..c354c4f
--- /dev/null
+++ b/MBCPApp/patches/remove_animated_qr_background.sh
@@ -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'
diff --git a/MBCPApp/patches/remove_app_from_launcher.sh b/MBCPApp/patches/remove_app_from_launcher.sh
new file mode 100644
index 0000000..dfda6b0
--- /dev/null
+++ b/MBCPApp/patches/remove_app_from_launcher.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+# PATCHNAME: Remove app from launcher
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+sed -i 's|||g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
diff --git a/MBCPApp/patches/remove_banner_miniapp.sh b/MBCPApp/patches/remove_banner_miniapp.sh
new file mode 100644
index 0000000..0fca977
--- /dev/null
+++ b/MBCPApp/patches/remove_banner_miniapp.sh
@@ -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'
diff --git a/MBCPApp/patches/remove_bulitin_fonts.sh b/MBCPApp/patches/remove_bulitin_fonts.sh
new file mode 100644
index 0000000..dbf2bf2
--- /dev/null
+++ b/MBCPApp/patches/remove_bulitin_fonts.sh
@@ -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/'
diff --git a/MBCPApp/patches/remove_embee.sh b/MBCPApp/patches/remove_embee.sh
new file mode 100644
index 0000000..68b7a5a
--- /dev/null
+++ b/MBCPApp/patches/remove_embee.sh
@@ -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'
diff --git a/MBCPApp/patches/remove_garbage_permission_and_activities.sh b/MBCPApp/patches/remove_garbage_permission_and_activities.sh
new file mode 100644
index 0000000..4b38b01
--- /dev/null
+++ b/MBCPApp/patches/remove_garbage_permission_and_activities.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+# PATCHNAME: Remove garbage permission & activities
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+sed -i 's|android:protectionLevel="signature"|android:protectionLevel="normal"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
+manifest_remove 'android:name="com.android.vending.CHECK_LICENSE"'
+manifest_remove 'android:name="com.google.android.gms.permission.AD_ID"'
+manifest_remove "com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY"
+manifest_remove "com.vtap.MaintenanceActivity"
+manifest_remove "com.mbmobile.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
+manifest_remove "com.vkey.android.vguard.VGDialogActivity"
diff --git a/MBCPApp/patches/remove_invoke_to_mbshield.sh b/MBCPApp/patches/remove_invoke_to_mbshield.sh
new file mode 100644
index 0000000..98befd4
--- /dev/null
+++ b/MBCPApp/patches/remove_invoke_to_mbshield.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+# PATCHNAME: Remove invoke to mbshield
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+warn "Currently only support remove invoke mbshield to [io.flutter.plugins.MainActivity] and [MBBHomeWidgetQR] !!!"
+info "Copying..."
+rm -f 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins/MainAcitivity.smali'
+rm -f 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins/MBBHomeWidgetQR.smali'
+cp -f 'blob_patches/noinvoke/MainActivity.smali' 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins'
+cp -f 'blob_patches/noinvoke/MBBHomeWidgetQR.smali' 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins'
+info "Removing leftover files..."
+for i in {0..83}; do
+ case $i in
+ *) rm -f "mbapk/mbapk_unpacked/smali_classes5/mbshield/EP$i.smali" ;;
+ esac
+done
diff --git a/MBCPApp/patches/remove_new_root_detection.sh b/MBCPApp/patches/remove_new_root_detection.sh
new file mode 100644
index 0000000..68b2ccb
--- /dev/null
+++ b/MBCPApp/patches/remove_new_root_detection.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+# PATCHNAME: Remove new root detection
+# MAXVER: 59
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+info 'Removing [libZDefend.so]...'
+rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libZDefend.so'
+rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libZDefend.so'
+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 [libdesignersactivists.so]...'
+rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libdesignersactivists.so'
+rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libdesignersactivists.so'
+
+info 'Removing related files...'
+rm -rf 'mbapk/mbapk_unpacked/assets/zfiles'
+rm -f 'mbapk/mbapk_unpacked/assets/dlangV5.dat'
+rm -f 'mbapk/mbapk_unpacked/assets/dlangV5.en.dat'
+rm -f 'mbapk/mbapk_unpacked/assets/policy0'
+rm -f 'mbapk/mbapk_unpacked/assets/policy1'
+rm -f 'mbapk/mbapk_unpacked/assets/policy2'
+rm -f 'mbapk/mbapk_unpacked/assets/policy3'
+rm -f 'mbapk/mbapk_unpacked/assets/policy4'
+rm -f 'mbapk/mbapk_unpacked/assets/policy5'
+rm -f 'mbapk/mbapk_unpacked/assets/policy6'
+rm -f 'mbapk/mbapk_unpacked/assets/policy8'
+rm -f 'mbapk/mbapk_unpacked/assets/policy9'
+rm -f 'mbapk/mbapk_unpacked/assets/policym'
+rm -f 'mbapk/mbapk_unpacked/assets/rulesV5.dat'
+rm -rf 'mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl'
+rm -f 'mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali'
+manifest_remove 'android:authorities="com.mbmobile.honor.essence.enter'
+manifest_remove 'android:authorities="com.mbmobile.inserted.thumbzilla.ireland'
diff --git a/MBCPApp/patches/remove_protection_shield.sh b/MBCPApp/patches/remove_protection_shield.sh
new file mode 100644
index 0000000..5b2f3f4
--- /dev/null
+++ b/MBCPApp/patches/remove_protection_shield.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+# PATCHNAME: Remove protection shield
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+sed_libapp 's|get-protective-cyber-risk|get_protective_cyber_none|g'
+sed_libapp 's|Activate for Protection|Protection are disabled|g'
+info "Removing resources..."
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_pending.webp'
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_actived.webp'
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_empty.webp'
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_illus_pending.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'
+
+# Private exclusive
+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/shield_illus_pending.private.webp'
+
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_pending.private.webp'
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_actived.private.webp'
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/shield_img_empty.private.webp'
+
+# Priority exclusive
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/shield_img_pending.webp'
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/shield_img_empty.webp'
+
+info "NOTE : This doesn't remove the app protection shield, it just disable and remove the MB Protection Shield, which literally is the MIC Shield !"
diff --git a/MBCPApp/patches/remove_vnpay_vmb20.sh b/MBCPApp/patches/remove_vnpay_vmb20.sh
new file mode 100644
index 0000000..09f6eef
--- /dev/null
+++ b/MBCPApp/patches/remove_vnpay_vmb20.sh
@@ -0,0 +1,113 @@
+#!/usr/bin/env bash
+# PATCHNAME: Remove VNPAY VMB20
+# MAXVER:
+# MINVER: 56
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+info "Removing smali..."
+rm -rf 'mbapk/mbapk_unpacked/smali_classes4/com/vnpay'
+rm -rf 'mbapk/mbapk_unpacked/smali_classes4/com/d5'
+rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/u4'
+rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/v4'
+rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/x2'
+rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/y4'
+rm -rf 'mbapk/mbapk_unpacked/smali_classes5/com/z4'
+rm -rf 'mbapk/mbapk_unpacked/smali/com/a5'
+rm -rf 'mbapk/mbapk_unpacked/smali/com/ay4'
+rm -rf 'mbapk/mbapk_unpacked/smali/com/az4'
+rm -rf 'mbapk/mbapk_unpacked/smali/com/c5'
+rm -rf 'mbapk/mbapk_unpacked/smali/com/d5'
+for i in {9..82}; do
+ # skip 77, 78, 79
+ case $i in
+ 77 | 78 | 79 | 81 ) :; ;;
+ *) rm -f "mbapk/mbapk_unpacked/smali_classes5/mbshield/EP$i.smali" ;;
+ esac
+done
+
+info "Removing resources..."
+rm -f 'mbapk/mnapk_unpacked/res/drawable-xhdpi/ic_home_vna.png'
+rm -f 'mbapk/mnapk_unpacked/res/drawable-xhdpi/logo_vnairline.png'
+rm -f 'mbapk/mnapk_unpacked/res/drawable-xxhdpi/ic_home_vna.png'
+rm -f 'mbapk/mnapk_unpacked/res/drawable-xxhdpi/logo_vnairline.png'
+
+# Remove activity
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20BlankActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.SearchingResultActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.FlightSearchingActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.FollowingFlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.FlightDetailActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20TimChuyenBayActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20ThoiGianActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20DiaDiemActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20HangHangKhongActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20LoadingActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.confirm.VMBConfirmBookActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20BookFlightSuccessActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20BookHistoryActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20TicketDetailsActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20TermActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20InfoServiceActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20ActivityThoiGianNew"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20BookFlightSuccessActivity2"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.CheckinActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.PnrInfoActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.InitChooseSeatActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.UpdateInfoActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.UpdatePassportInfoActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.ReCheckinActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.TicketPreviewActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.CheckinConditionAcitvity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.SendMailActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.TermConditionActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.FlightTracking.FlightTrackingMapActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJInfoFlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.rename.VMBChangeNameActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.rename.VJDetailFeeActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.changeFlight.VJChangeFlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJListFlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJHistoryActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.history.VJInfoTicketActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJTermActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.history.VJDetailTicketActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.ancillary.VJAddOnMealActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20PaylaterActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.ebill.VMB20EBillActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.ebill.VMB20ConfirmExportBillActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VJConfirmActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20FlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20AirportActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20IFlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20NewSortActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.VMB20DetailFlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VMBManagerBookingActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VMBDetailFeeActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VMBInfoFlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.VMBSeatMapActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.seats.VMBInfoSeatActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.VjAddOn.ancillary.VNBL.VMBVNBLActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Voucher.VMBListVoucherActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Voucher.VMBDetailVoucherActivity"'
+manifest_remove 'android:name="com.vnpay.tracking.ExitService"'
+manifest_remove 'android:name="com.vnpay.tracking.TrackingReceiver"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.contact.VMBAddInfoActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.contact.VMBPassengerContactActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.infobook.VMBNewInfoBookActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.search.VMBNewSearchActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.search.VMBSortINTFlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.iflight.VMBNewIFlightsActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.iflight.VMBQuotePriceIFlightActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.checkin.PnrReviewActivity"'
+manifest_remove 'android:name="com.vnpay.ticketlib.Activity.contact.VMBAddInfoActivity"'
+
+# stub
+sed -i 's|||g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
+manifest_remove 'android:name="_vemaybay_payment"'
+manifest_remove 'android:name="_vemaybay_payment_without_paymentcode"'
+manifest_remove 'android:name="_vemaybay_payment_paylater"'
+
+cp -f 'blob_patches/remove_vmb20/GeneratedPluginRegistrant.smali' 'mbapk/mbapk_unpacked/smali_classes4/io/flutter/plugins'
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/base/partner/img_vnpay.webp'
+rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/base/partner/img_vna.webp'
+sed_libapp 's|vna_flight_landing|broken_vna_ehh_idk|g'
diff --git a/MBCPApp/patches/remove_vpn_detection.sh b/MBCPApp/patches/remove_vpn_detection.sh
new file mode 100644
index 0000000..9bd09a6
--- /dev/null
+++ b/MBCPApp/patches/remove_vpn_detection.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+# PATCHNAME: Remove VPN detection
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+sed_libapp 's|vpn|app|g'
diff --git a/MBCPApp/patches/restore_old_registration_resources.sh b/MBCPApp/patches/restore_old_registration_resources.sh
new file mode 100644
index 0000000..82c5929
--- /dev/null
+++ b/MBCPApp/patches/restore_old_registration_resources.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+# PATCHNAME: Restore old registration resources
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+cp -f 'blob_patches/restore_oldreg/onboarding_illus_featureAccount.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
+cp -f 'blob_patches/restore_oldreg/onboarding_illus_featureFreeService.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
+cp -f 'blob_patches/restore_oldreg/onboarding_illus_featureMBS.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
+cp -f 'blob_patches/restore_oldreg/onboarding_illus_featureShield.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
+cp -f 'blob_patches/restore_oldreg/onboarding_img_referLinkNoneCoin.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
+cp -f 'blob_patches/restore_oldreg/onboarding_img_referLinkPersonalCoin.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/static/onboarding'
diff --git a/MBCPApp/patches/revert_old_embee.sh b/MBCPApp/patches/revert_old_embee.sh
new file mode 100644
index 0000000..cb3dc22
--- /dev/null
+++ b/MBCPApp/patches/revert_old_embee.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+# PATCHNAME: Revert old eMBee logo
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+info "Copying old eMBee logo..."
+cp -f 'blob_patches/revert_old_eMBee/customerService_img_avatarChat.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/customerService_img_avatarChat01.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/customerService_img_avatarChat02.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/customerService_img_avatarChat03.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/customerService_img_avatarChat04.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/eMBee_img_headerNew.private.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/eMBee_img_headerNew.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/eMBee_img_loginSupport.private.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/eMBee_img_loginSupport.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+
+# Priority exclusive
+cp -f 'blob_patches/revert_old_eMBee/eMBee_img_headerNew.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority'
+cp -f 'blob_patches/revert_old_eMBee/eMBee_img_loginSupport.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority'
+
+# Restore old eMBee account profile picture (present before on MB React Native)
+cp -f 'blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.private.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base'
+cp -f 'blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp' 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority'
diff --git a/MBCPApp/patches/target_sdk_35.sh b/MBCPApp/patches/target_sdk_35.sh
new file mode 100644
index 0000000..58c6bd2
--- /dev/null
+++ b/MBCPApp/patches/target_sdk_35.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+# PATCHNAME: Set targetSdkVersion to 35
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+sed -i 's|targetSdkVersion: 34|targetSdkVersion: 35|g' "$DIRPATH"/mbapk/mbapk_unpacked/apktool.yml