diff --git a/LICENSE b/LICENSE
index 1fdcfd6..20bf2ec 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2025 MBCPApp Author.
+Copyright (c) 2026 Cuynu.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/MBCPApp/blob_patches/adaptive_ic_launcher/drawable/ic_launcher_background.xml b/MBCPApp/blob_patches/adaptive_ic_launcher/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..84372c1
--- /dev/null
+++ b/MBCPApp/blob_patches/adaptive_ic_launcher/drawable/ic_launcher_background.xml
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/MBCPApp/blob_patches/adaptive_ic_launcher/drawable/ic_launcher_foreground.xml b/MBCPApp/blob_patches/adaptive_ic_launcher/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..f8f6c8d
--- /dev/null
+++ b/MBCPApp/blob_patches/adaptive_ic_launcher/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MBCPApp/blob_patches/adaptive_ic_launcher/mipmap-anydpi-v26/ic_launcher.xml b/MBCPApp/blob_patches/adaptive_ic_launcher/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..93542a7
--- /dev/null
+++ b/MBCPApp/blob_patches/adaptive_ic_launcher/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/MBCPApp/blob_patches/adaptive_ic_launcher/mipmap-anydpi-v26/ic_launcher_round.xml b/MBCPApp/blob_patches/adaptive_ic_launcher/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..93542a7
--- /dev/null
+++ b/MBCPApp/blob_patches/adaptive_ic_launcher/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/MBCPApp/blob_patches/anime_resources/general_illus_versionUpdate.webp b/MBCPApp/blob_patches/anime_resources/general_illus_versionUpdate.webp
new file mode 100644
index 0000000..6f1e5a9
Binary files /dev/null and b/MBCPApp/blob_patches/anime_resources/general_illus_versionUpdate.webp differ
diff --git a/MBCPApp/blob_patches/anime_resources/rating_illus_fiveStar.webp b/MBCPApp/blob_patches/anime_resources/rating_illus_fiveStar.webp
index 7951d6a..097dc18 100644
Binary files a/MBCPApp/blob_patches/anime_resources/rating_illus_fiveStar.webp and b/MBCPApp/blob_patches/anime_resources/rating_illus_fiveStar.webp differ
diff --git a/MBCPApp/blob_patches/anime_resources/rating_illus_oneStar.webp b/MBCPApp/blob_patches/anime_resources/rating_illus_oneStar.webp
index 6ab483e..65d047c 100644
Binary files a/MBCPApp/blob_patches/anime_resources/rating_illus_oneStar.webp and b/MBCPApp/blob_patches/anime_resources/rating_illus_oneStar.webp differ
diff --git a/MBCPApp/blob_patches/anime_resources/rating_illus_twoStar.webp b/MBCPApp/blob_patches/anime_resources/rating_illus_twoStar.webp
index 2dc64c9..38a99b0 100644
Binary files a/MBCPApp/blob_patches/anime_resources/rating_illus_twoStar.webp and b/MBCPApp/blob_patches/anime_resources/rating_illus_twoStar.webp differ
diff --git a/MBCPApp/blob_patches/better_custombgscreen/customize_img_changeImageContent.png b/MBCPApp/blob_patches/better_custombgscreen/customize_img_changeImageContent.png
new file mode 100644
index 0000000..3e24c69
Binary files /dev/null and b/MBCPApp/blob_patches/better_custombgscreen/customize_img_changeImageContent.png differ
diff --git a/MBCPApp/blob_patches/bootleg_ekyc/dotp1_ekyc.png b/MBCPApp/blob_patches/bootleg_ekyc/dotp1_ekyc.png
new file mode 100644
index 0000000..8b33fd1
Binary files /dev/null and b/MBCPApp/blob_patches/bootleg_ekyc/dotp1_ekyc.png differ
diff --git a/MBCPApp/blob_patches/bootleg_ekyc/dotp2_ekyc.png b/MBCPApp/blob_patches/bootleg_ekyc/dotp2_ekyc.png
new file mode 100644
index 0000000..3c946ce
Binary files /dev/null and b/MBCPApp/blob_patches/bootleg_ekyc/dotp2_ekyc.png differ
diff --git a/MBCPApp/blob_patches/customvtap/custom_vtapdialog_activity.xml b/MBCPApp/blob_patches/customvtap/custom_vtapdialog_activity.xml
new file mode 100644
index 0000000..c6e0817
--- /dev/null
+++ b/MBCPApp/blob_patches/customvtap/custom_vtapdialog_activity.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MBCPApp/blob_patches/noti_ic/drawable-anydpi/ic_noti_star.xml b/MBCPApp/blob_patches/noti_ic/drawable-anydpi/ic_noti_star.xml
new file mode 100644
index 0000000..11451a3
--- /dev/null
+++ b/MBCPApp/blob_patches/noti_ic/drawable-anydpi/ic_noti_star.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MBCPApp/blob_patches/noti_ic/drawable-hdpi/ic_noti_star.png b/MBCPApp/blob_patches/noti_ic/drawable-hdpi/ic_noti_star.png
new file mode 100644
index 0000000..26c8dc0
Binary files /dev/null and b/MBCPApp/blob_patches/noti_ic/drawable-hdpi/ic_noti_star.png differ
diff --git a/MBCPApp/blob_patches/noti_ic/drawable-mdpi/ic_noti_star.png b/MBCPApp/blob_patches/noti_ic/drawable-mdpi/ic_noti_star.png
new file mode 100644
index 0000000..a213661
Binary files /dev/null and b/MBCPApp/blob_patches/noti_ic/drawable-mdpi/ic_noti_star.png differ
diff --git a/MBCPApp/blob_patches/noti_ic/drawable-xhdpi/ic_noti_star.png b/MBCPApp/blob_patches/noti_ic/drawable-xhdpi/ic_noti_star.png
new file mode 100644
index 0000000..0f5ab18
Binary files /dev/null and b/MBCPApp/blob_patches/noti_ic/drawable-xhdpi/ic_noti_star.png differ
diff --git a/MBCPApp/blob_patches/noti_ic/drawable-xxhdpi/ic_noti_star.png b/MBCPApp/blob_patches/noti_ic/drawable-xxhdpi/ic_noti_star.png
new file mode 100644
index 0000000..a582746
Binary files /dev/null and b/MBCPApp/blob_patches/noti_ic/drawable-xxhdpi/ic_noti_star.png differ
diff --git a/MBCPApp/blob_patches/qr_white/homeLanding_bg_qrCode.webp b/MBCPApp/blob_patches/qr_white/homeLanding_bg_qrCode.webp
new file mode 100644
index 0000000..73d752e
Binary files /dev/null and b/MBCPApp/blob_patches/qr_white/homeLanding_bg_qrCode.webp differ
diff --git a/MBCPApp/blob_patches/resources/strings-vi/strings.xml b/MBCPApp/blob_patches/resources/strings-vi/strings.xml
index de30098..a0ec615 100644
--- a/MBCPApp/blob_patches/resources/strings-vi/strings.xml
+++ b/MBCPApp/blob_patches/resources/strings-vi/strings.xml
@@ -29,7 +29,7 @@
Thu gọnĐã hiểu. Tiếp tụcHãy đưa mặt của bạn vào chính giữa khung hình~
- Bạn sẽ cần đọc to:
+ Bạn sẽ cần đọc to :Bạn vui lòng nhìn thẳng ạ 👀Bạn vui lòng nhìn thẳng ạ 👀Mặt của bạn đã ở đúng vị trí yêu cầu. Hãy giữ vững tay giúp MBCP nhé❤️
@@ -42,11 +42,11 @@
Hãy đưa mặt của bạn vào chính giữa khung hình~MBCP phát hiện có vài khuôn mặt, bạn làm ơn ra chỗ vắng người nhé~Đồng ý
- Đầu tiên, bạn cần đến nơi có đủ ánh sáng. Tháo bỏ mũ, khăn, khẩu trang, kính râm, loại bỏ lớp trang điểm nếu có.
- Giữ vững khuôn mặt của bạn trong suốt quá trình quay video eKYC
- Đọc to và rõ dãy số được hiển thị trên màn hình nha.
+ Đầu tiên, bạn cần đến nơi có đủ ánh sáng. Tháo bỏ mũ, khăn, khẩu trang, kính râm, bỏ lớp trang điểm nếu có.
+ Đưa khuôn mặt của bạn vào trong khung hình hiển thị trên màn hình, sau đó giữ vững tay, không rung lắc để có kết quả tốt nhất trong quá trình quay video eKYC. Đừng ngại hay tự ti về khuôn mặt của bạn vì thông tin khuôn mặt của bạn được lưu trữ an toàn trên máy chủ và không ai thực sự rảnh để trích xuất hình ảnh của bạn từ máy chủ ra để xem cả.
+ Đọc to và rõ dãy số được hiển thị trên màn hình (CHỈ áp dụng khi đăng ký tài khoản hay DigitalOTP. KHÔNG áp dụng khi đăng nhập thiết bị mới, chuyển khoản trên 10 triệu, hay đặt lại mật khẩu).Để điện thoại song song và ngang với gương mặt
- Hướng dẫn quay video
+ Hướng dẫn quay video xác thực eKYCQuay video khuôn mặt của bạn để xác minh không ai đang mạo danh bạn~Thông tin sinh trắc họcBắt đầu làm thử
@@ -61,8 +61,8 @@
Dữ liệu gương mặt không khớpQuay video không thành côngThu âm giọng nói không thành công
- Đang quay phim
- Hãy đọc to dãy số sau:
+ Đang quay video eKYC...
+ Đọc to dãy số sau giúp MBCP nhé :Mở rộng một nửaTrả lờiVideo
@@ -143,7 +143,7 @@
Mặt trướcTrang 2Chụp
- Căn cước công dân
+ Căn cước công dân hoặc Căn cướcCăn cướcChứng minh thưHộ chiếu
@@ -182,13 +182,13 @@
Đồng ýĐóngĐi đến "Cài đặt"
- Bạn vui lòng cấp quyền cho phép [APP_NAME] truy cập Camera và Microphone để thực hiện quá trình quay video
- Cấp quyền cho phép [APP_NAME] truy cập Camera và Microphone
- Bạn vui lòng cấp quyền cho phép [APP_NAME] truy cập Camera để chụp ảnh selfie của bạn
- Cấp quyền cho phép [APP_NAME] truy cập Camera
- Bạn vui lòng cấp quyền cho phép [APP_NAME] truy cập Microphone để thu âm giọng nói của bạn
- Cấp quyền cho phép [APP_NAME] truy cập Microphone
- Hãy cấp quyền cho phép [APP_NAME] truy cập máy ảnh và ghi âm trong "Cài đặt"
+ Bạn vui lòng cấp quyền cho phép App MBCP truy cập Camera và Microphone để thực hiện quá trình quay video
+ Cấp quyền cho phép App MBCP truy cập Camera và Microphone
+ Bạn vui lòng cấp quyền cho phép App MBCP truy cập Camera để chụp ảnh selfie của bạn
+ Cấp quyền cho phép App MBCP truy cập Camera
+ Bạn vui lòng cấp quyền cho phép App MBCP truy cập Microphone để thu âm giọng nói của bạn
+ Cấp quyền cho phép App MBCP truy cập Microphone
+ Hãy cấp quyền cho phép App MBCP truy cập máy ảnh và ghi âm trong "Cài đặt"Đã sao chép "%1$s" vào bảng nhớ tạm.Tìm kiếm999+
@@ -196,4 +196,12 @@
Đang tải…TẮTBẬT
+
+ Chạm để cài đặt QR
+ Vay online
+ Nạp tiền điện thoại
+ Nạp ĐT
+ Quét QR
+ Chuyển tiền
+
diff --git a/MBCPApp/blob_patches/resources/strings/strings.xml b/MBCPApp/blob_patches/resources/strings/strings.xml
new file mode 100644
index 0000000..122d676
--- /dev/null
+++ b/MBCPApp/blob_patches/resources/strings/strings.xml
@@ -0,0 +1,399 @@
+
+
+ OPC_NAME_NOT_SET_KEY
+ OPC_NETWORK_KEY
+ OPC_NETWORK_NAME_KEY
+ NO_OPC_SET
+ OPC_SHARED_PREFERENCES_FILE
+ OPC_SHARED_PREFERENCES_KEY
+ OPC_TOKEN_SERVICE_PROVIDER_KEY
+ OPC_TOKEN_SERVICE_PROVIDER_NAME_KEY
+
+ Navigate home
+ Navigate up
+ More options
+ Done
+ See all
+ Choose an app
+ OFF
+ ON
+ Alt+
+ Ctrl+
+ delete
+ enter
+ Function+
+ Meta+
+ Shift+
+ space
+ Sym+
+ Menu+
+ Search…
+ Clear query
+ Search query
+ Search
+ Submit query
+ Voice search
+ Share with
+ Share with %s
+ Collapse
+
+
+ Understand and continue
+ Please move the face into the frame
+ You will have to speak loudy these numbers on the screen
+ Please look straight
+ Please look straight
+ Your face is in the frame. Please hold your hand steady!
+ Please keep your face upright
+ Please keep your face upright
+ Please put the camera further away
+ Please put the camera closer
+ Please look straight
+ Please look straight
+ Please move your face fit in the frame
+ Found many faces in the frame. Please retake the selfie
+ Agree
+ Please remove scarf, mask, sunglasses, hat and take a photo in well-lit condition
+ Keep your face steady during video recording
+ Speak loudly and clearly the number on the screen
+ Hold your phone as high as your face
+ Video recording tutorial
+ Please take a video of your face to verify no one is impersonating you
+ Biometric information
+ Start demonstration
+ Verify information
+ Please watch the tutorial to know how to record video with the best quality
+ Cancel
+ Retry
+ Record selfie video failed
+ Please move your face fit in the frame
+ Your facial data does not match. Please try again
+ Your video is in low quality
+ Your facial data does not match
+ Failed. Please record the video again
+ Error. Please record your voice again
+ Recording
+ Speak loudly the number on the screen
+ androidx.startup
+ mbbank.onelink.me
+ MB Bank
+ This is an app widget description
+ com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior
+ com.google.android.material.bottomsheet.BottomSheetBehavior
+ Expand halfway
+ Characters entered %1$d of %2$d
+ Character limit exceeded %1$d of %2$d
+ %1$d/%2$d
+ Chip text
+ Clear text
+ Touch to setup QR
+ Touch to setup QR
+ cca90e65-5805-4c06-bc2d-930595fb2cf4
+ a4f49867dfa64435bea0bafc1f437f34
+ Enable
+ %1$s can't work properly unless you enable GMS/microG.
+ Enable GMS/microG
+ Install
+ GMS/microG is missing from your device. %1$s still runs without it but some features will be broken.
+ GMS/microG missing
+ Google Play services availability
+ Google Play services error
+ %1$s is having trouble with Google Play services. Please try again.
+ %1$s won't run without Google Play services, which are not supported by your device.
+ Update
+ %1$s won't run unless you update Google Play services.
+ Update Google Play services
+ %1$s won't run without Google Play services, which are currently updating.
+ New version of Google Play services needed. It will update itself shortly.
+ Open on phone
+ Sign in
+ Sign in with Google
+ Use password
+
+
+ SITE IS MALICIOUS
+ SITE IS NOT APPROVED
+ Continue Anyway
+ Go Back
+ Mark this site as "Trusted"
+ Copy
+ Link copied to clipboard
+ Unknown error
+ 162583259686-erd52s6o9832jno1lpa9on8t2djnicie.apps.googleusercontent.com
+ Hệ thống phát hiện ứng dụng %1$s có thể gây ra rủi ro bảo mật khi được sử dụng cùng với ứng dụng MBBank, vui lòng gỡ bỏ ứng dụng không tương thích.
+ Phát hiện ứng dụng không tương thích
+ Error
+ Advanced
+ Show dropdown menu
+ com.google.android.material.transformation.FabTransformationScrimBehavior
+ com.google.android.material.transformation.FabTransformationSheetBehavior
+ Copy link
+ Open in browser
+ Share link
+ Miscellaneous
+ Touch the fingerprint sensor
+ Fingerprint hardware not available.
+ This device does not have a fingerprint sensor
+ Too many attempts. Please try again later.
+ No fingerprints enrolled.
+ Fingerprint operation canceled by user.
+ Not recognized
+ https://mbmobilebanking6789.firebaseio.com
+ 162583259686
+ You cannot go back to the previous step. Please continue
+ Warning
+ Processing...
+ No PIN, pattern, or password set.
+ This device does not support PIN, pattern, or password.
+ Authentication canceled by user.
+ The server response is invalid or missing. Please try again
+ Please check your internet connection
+ AIzaSyAcxvc0vK4vJ3TzLe0PI9gqNIq8ZxmL5NI
+ 1:162583259686:android:884f0ccb6ad5e1ed
+ AIzaSyAcxvc0vK4vJ3TzLe0PI9gqNIq8ZxmL5NI
+ mbmobilebanking6789.appspot.com
+
+ com.google.android.material.behavior.HideBottomViewOnScrollBehavior
+ Dialog Icon
+ SDK initialization failed
+ SDK initialization success
+ https://mobile.useinsider.com/api/v1/test_device/add
+ https://mobile.useinsider.com/api/amplification/v1/poll
+ https://mobileanalytics.useinsider.com
+ /api/v1/test_device/add
+ /api/amplification/v1/poll
+ /api/v1/privacy/gdpr/consent/get
+ /api/v1/privacy/gdpr/consent/set
+ /api/v1/geofences
+ /api/v1/geofences/notify
+ /api/identity/v3/get
+ /api/message_center/v2/sdk/get
+ https://mobile.useinsider.com/api/v1/privacy/gdpr/consent/get
+ https://mobile.useinsider.com/api/v1/privacy/gdpr/consent/set
+ https://mobile.useinsider.com/api/v1/geofences
+ https://mobile.useinsider.com/api/v1/geofences/notify
+ https://mobile.useinsider.com/api/identity/v3/get
+ https://mobile.useinsider.com/api/logging/sdk/v2
+ https://mobile.useinsider.com/api/message_center/v2/sdk/get
+ Android
+ /api/v3/session/start
+ /api/v3/session/stop
+ https://mobile.useinsider.com/api/v3/session/start
+ https://mobile.useinsider.com/api/v3/session/stop
+ /api/gandalf/v2/live_push
+ /api/gandalf/v2/start_connection
+ /api/gandalf/v2/stop_connection
+ https://mobile.useinsider.com/api/gandalf/v2/live_push
+ https://mobile.useinsider.com/api/gandalf/v2/start_connection
+ https://mobile.useinsider.com/api/gandalf/v2/stop_connection
+ Tab
+ Label
+
+ ACTIVATE NOW
+ You’re browsing without mobile threat defense enabled. Your corporate policy requires activating your network security to continue.
+ Please activate mobile threat defense on your device
+ sans-serif
+ sans-serif-medium
+ sans-serif
+ :
+ Select AM or PM
+ Select hour
+ %1$s o'clock
+ Select minutes
+ %1$s minutes
+ cubic-bezier(0.4, 0.0, 1.0, 1.0)
+ cubic-bezier(0.0, 0.0, 0.2, 1.0)
+ path(M 0,0 C 0.05, 0, 0.133333, 0.06, 0.166666, 0.4 C 0.208333, 0.82, 0.25, 1, 1, 1)
+ cubic-bezier(0.0, 0.0, 1.0, 1.0)
+ cubic-bezier(0.4, 0.0, 0.2, 1.0)
+ Range end,
+ Range start,
+ AM
+ Switch to clock mode for the time input.
+ Hour
+ Minute
+ PM
+ Select time
+ Switch to text input mode for the time input.
+ New notification
+ Remove %1$s
+ More than %1$d new notifications
+ %1$d%2$s
+ Change to next month
+ Change to previous month
+ Current selection: %1$s
+ @android:string/cancel
+ OK
+ %1$s
+ Select Date
+ Selected date
+ Column of days: %1$s
+ Invalid format.
+ Example: %1$s
+ Use: %1$s
+ Invalid range.
+ Navigate to year %1$s
+ Out of range: %1$s
+ Start date – %1$s
+ %1$s – End date
+ %1$s – %2$s
+ Select Range
+ Start date – End date
+ Save
+ Date
+ End date
+ Start date
+ d
+ m
+ y
+ Switch to calendar input mode
+ Tap to switch to selecting a day
+ Switch to text input mode
+ Tap to switch to selecting a year
+ OK
+ Next
+ Kết thúc
+ Not set
+ Open the app to complete the activation of mobile threat defense.
+ OPEN APP
+ Open app to activate
+ Link is risky!
+ Threat detected
+ Agree
+ Please move the ID card into the frame
+ Make sure the photo is easy to read, with no blur or loss of angle or flare
+ Make sure your ID card is valid
+ Tutorial for taking photo of ID card
+ Please take a photo of your ID card to verify your information
+ ID card information
+ Change
+ Start capturing
+ Please select the type of document
+ Continue
+ Cancel
+ Do you want to continue to register?
+ Verify information
+ -
+ Back
+ Accept
+ Capture
+ Retake
+ Retry
+ Front
+ Page 2
+ Capture
+ Citizen identification
+ Citizen identification
+ Identification documents
+ Passport
+ Military ID card
+ You took the wrong side of the ID card. Please try again
+ Your photo is unqualified. Please retake a photo of ID
+ Cannot find the face on your ID card. Please retake the photo
+ Your ID card is not fully captured. Please try again (OCR005)
+ Your facial data on ID card and video do not match. Please try again
+ Your photo is unqualified. Please retake a photo of ID
+ Make sure your photos are easy to read, with no blur, loss of corners, or glare
+ Please move the ID card into the frame
+ Continue
+ Stop
+ Do you want to continue to register?
+ Yes
+ No
+ Do you want to go back to previous step?
+ Please keep your ID straight
+ Cannot find the face on your ID card
+ OK
+ Authentication failed
+ Authentication successfully
+ Cannot receive the data of identification session. Please try again
+ Identifier and bioID do not match
+ Cannot find the identifier
+ Your data is being manually reviewed
+ Cannot identify your data on video and ID card
+ Authentication failed
+ Successful registration with highest level
+ You have tried more than the permitted. Please contact the call center
+ Please try again. If not successful, please contact the call center
+ Cannot verify your data
+ You have exited the identification process
+ You are not qualify to take the next step
+ Show password
+ M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z
+ M2,4.27 L19.73,22 L22.27,19.46 L4.54,1.73 L4.54,1 L23,1 L23,23 L1,23 L1,4.27 Z
+ M2,4.27 L2,4.27 L4.54,1.73 L4.54,1.73 L4.54,1 L23,1 L23,23 L1,23 L1,4.27 Z
+ M3.27,4.27 L19.74,20.74
+ Agree
+ Close
+ Go to "Settings"
+ Please allow [APP_NAME] to access the camera and microphone for recording the video
+ Please allow [APP_NAME] to access the camera and microphone
+ Please allow [APP_NAME] to access the camera for taking selfie
+ Please allow [APP_NAME] to access the camera
+ Please allow [APP_NAME] to access the microphone for recording
+ Please allow [APP_NAME] to access the microphone
+ Please allow [APP_NAME] to access the camera and microphone in "Settings"
+ Allow this Site
+ "%1$s" copied to clipboard.
+ mbmobilebanking6789
+ QR Image
+ QR nhận tiền
+ This app may not work correctly without the requested permissions.
+ This app may not work correctly without the requested permissions. Open the app settings screen to modify app permissions.
+ For your security, MBBank app will not work on rooted or malware infected devices.
+ Để bảo mật cho bạn, ứng dụng MBBank sẽ không hoạt động trên các thiết bị root hoặc phần mềm độc hại.
+ Rooted device detected
+ Phát hiện thiết bị đã root
+ Search
+ Vui lòng giữ yên thẻ
+cho đến khi hoàn tất quy trình
+ Thiết bị đang sử dụng không tương thích
+ với chế độ NFC.
+
+Vui lòng sử dụng thiết bị khác và thử lại.
+ Thiết bị không tương thích
+ Kiểm tra CCCD gắn chip
+ Lưu ý
+ Xem video hướng dẫn trước khi thực hiện
+ 1. Chuẩn bị sẵn CCCD gắn chip hợp lệ, nguyên vẹn.
+ 2. Tháo ốp lưng điện thoại.
+ 3. Bật chế độ NFC và cấp quyền cho ứng dụng nếu có yêu cầu.
+ 4. Thao tác như video hướng dẫn.
+ 1. Cầm sẵn thẻ CCCD gắn chip.
+ 2. Áp sát thẻ vào lưng điện thoại.
+ 3. Di chuyển thẻ chậm rãi từ trên xuống dưới cho đến khi thiết bị rung và làm theo tín hiệu hướng dẫn.
+ 4. Giữ yên thẻ trong 5-10 giây.
+ 1. Áp sát thẻ vào lưng điện thoại.
+ 2. Di chuyển thẻ chậm rãi từ trên xuống dưới cho đến khi thiết bị rung và làm theo tín hiệu hướng dẫn.
+ SHOW THREATS
+ 999+
+ %1$s, %2$s
+
+ Tap to setup QR
+ Online loan
+ Phone recharge
+ Phone Recharge
+ Scan QR
+ Transfer
+
+ VideoPreviewActivity
+ Permissions Required
+ Loading…
+ Crop
+ Both input and output Uri must be specified
+ Edit Photo
+ Original
+ Crop
+ Therefore, override color resource (ucrop_color_toolbar_widget) in your app to make it work on pre-L devices
+ Rotate
+ Scale
+ OFF
+ ON
+ Đã sao chép "%1$s" vào bảng nhớ tạm.
+ Tìm kiếm
+ 999+
+ %1$s, %2$s
+ Đang tải…
+ TẮT
+ BẬT
+
diff --git a/MBCPApp/blob_patches/revert_old_eMBee/img_beerich.webp b/MBCPApp/blob_patches/revert_old_eMBee/img_beerich.webp
new file mode 100644
index 0000000..54bb445
Binary files /dev/null and b/MBCPApp/blob_patches/revert_old_eMBee/img_beerich.webp differ
diff --git a/MBCPApp/blob_patches/searchicon/README.md b/MBCPApp/blob_patches/searchicon/README.md
new file mode 100644
index 0000000..da18869
--- /dev/null
+++ b/MBCPApp/blob_patches/searchicon/README.md
@@ -0,0 +1,2 @@
+Credits : [FlatIcon](https://www.flaticon.com/free-icon/search-interface-symbol_54481)
+
diff --git a/MBCPApp/blob_patches/searchicon/search.png b/MBCPApp/blob_patches/searchicon/search.png
new file mode 100644
index 0000000..5c4bd84
Binary files /dev/null and b/MBCPApp/blob_patches/searchicon/search.png differ
diff --git a/MBCPApp/blob_patches/searchicon/search_718.png b/MBCPApp/blob_patches/searchicon/search_718.png
new file mode 100644
index 0000000..77afab9
Binary files /dev/null and b/MBCPApp/blob_patches/searchicon/search_718.png differ
diff --git a/MBCPApp/blob_patches/semipriority/ic_logo_mb_text_enforced.svg b/MBCPApp/blob_patches/semipriority/ic_logo_mb_text_enforced.svg
new file mode 100644
index 0000000..af2d6db
--- /dev/null
+++ b/MBCPApp/blob_patches/semipriority/ic_logo_mb_text_enforced.svg
@@ -0,0 +1,83 @@
+
+
diff --git a/MBCPApp/blob_patches/semipriority/welcom_img_eMbee.webp b/MBCPApp/blob_patches/semipriority/welcom_img_eMbee.webp
index 13f4b00..1eb58f3 100644
Binary files a/MBCPApp/blob_patches/semipriority/welcom_img_eMbee.webp and b/MBCPApp/blob_patches/semipriority/welcom_img_eMbee.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/a_background_image.webp b/MBCPApp/blob_patches/tretrung_theme/a_background_image.webp
new file mode 100644
index 0000000..a2c7a82
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/a_background_image.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/cardService_bg_cardMKT.webp b/MBCPApp/blob_patches/tretrung_theme/cardService_bg_cardMKT.webp
new file mode 100644
index 0000000..25e2a0e
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/cardService_bg_cardMKT.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/cardService_img_cardMKT.webp b/MBCPApp/blob_patches/tretrung_theme/cardService_img_cardMKT.webp
new file mode 100644
index 0000000..7a94823
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/cardService_img_cardMKT.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/general_bg_screenshot.webp b/MBCPApp/blob_patches/tretrung_theme/general_bg_screenshot.webp
new file mode 100644
index 0000000..e69f50b
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/general_bg_screenshot.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/general_bg_success.webp b/MBCPApp/blob_patches/tretrung_theme/general_bg_success.webp
new file mode 100644
index 0000000..5d531b8
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/general_bg_success.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/homeLanding_bg_main.webp b/MBCPApp/blob_patches/tretrung_theme/homeLanding_bg_main.webp
new file mode 100644
index 0000000..c5856fb
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/homeLanding_bg_main.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_PFM.webp b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_PFM.webp
new file mode 100644
index 0000000..3dfa6ef
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_PFM.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_assetsReport.webp b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_assetsReport.webp
new file mode 100644
index 0000000..6832cc7
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_assetsReport.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_dividerShadow.webp b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_dividerShadow.webp
new file mode 100644
index 0000000..c886cc2
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_dividerShadow.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_logoShadowMB.webp b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_logoShadowMB.webp
new file mode 100644
index 0000000..6d92260
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_logoShadowMB.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_logoShadowMBPriority.webp b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_logoShadowMBPriority.webp
new file mode 100644
index 0000000..6d92260
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_logoShadowMBPriority.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_logoShadowPrivate.webp b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_logoShadowPrivate.webp
new file mode 100644
index 0000000..6d92260
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/homeLanding_img_logoShadowPrivate.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/login_bg_main.webp b/MBCPApp/blob_patches/tretrung_theme/login_bg_main.webp
new file mode 100644
index 0000000..a2c7a82
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/login_bg_main.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/login_img_highlightElement.webp b/MBCPApp/blob_patches/tretrung_theme/login_img_highlightElement.webp
new file mode 100644
index 0000000..f9fae70
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/login_img_highlightElement.webp differ
diff --git a/MBCPApp/blob_patches/tretrung_theme/login_img_notification.webp b/MBCPApp/blob_patches/tretrung_theme/login_img_notification.webp
new file mode 100644
index 0000000..203e6b9
Binary files /dev/null and b/MBCPApp/blob_patches/tretrung_theme/login_img_notification.webp differ
diff --git a/MBCPApp/blob_patches/verified_badge/tick-mark.png b/MBCPApp/blob_patches/verified_badge/tick-mark.png
new file mode 100644
index 0000000..bd2386a
Binary files /dev/null and b/MBCPApp/blob_patches/verified_badge/tick-mark.png differ
diff --git a/MBCPApp/blob_patches/widget_dark/arrow.xml b/MBCPApp/blob_patches/widget_dark/arrow.xml
new file mode 100644
index 0000000..caf76c4
--- /dev/null
+++ b/MBCPApp/blob_patches/widget_dark/arrow.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
diff --git a/MBCPApp/blob_patches/widget_dark/mbb_home_widget_4x4_all.xml b/MBCPApp/blob_patches/widget_dark/mbb_home_widget_4x4_all.xml
new file mode 100644
index 0000000..2745190
--- /dev/null
+++ b/MBCPApp/blob_patches/widget_dark/mbb_home_widget_4x4_all.xml
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MBCPApp/common.sh b/MBCPApp/common.sh
index 21168c8..53388c3 100644
--- a/MBCPApp/common.sh
+++ b/MBCPApp/common.sh
@@ -3,7 +3,7 @@
# imported from https://github.com/dylanaraps/pure-bash-bible
bb_split() {
- # Usage: split "string" "delimiter"
+ # Usage: split "string" "delimiter" "count"
IFS=$'\n' read -d "" -ra arr <<< "${1//$2/$'\n'}"
# printf '%s\n' "${arr[@]}"
printf '%s\n' "${arr[$3]}"
@@ -29,6 +29,7 @@ strip_all() {
getvar() {
# Usage: getline "n" "pattern" "file"
+ i=0
while IFS= read -r line; do
i=$((i+1))
[ "$i" = "$1" ] && printf '%s\n' "${line##$2}" && return
@@ -44,6 +45,15 @@ sed_libapp() {
) && info "[sed_libapp] [$target] -> [$replacement]" || warn "[sed_libapp] replacing [$target] failed !"
}
+sed_libtian37() {
+ target=$(bb_split "$1" '|' '1')
+ replacement=$(bb_split "$1" '|' '2')
+ (
+ sed -i "$1" "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libanTian37.so \
+ "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libanTian37.so
+ ) && info "[sed_libtian37] [$target] -> [$replacement]" || warn "[sed_libtian37] 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
@@ -56,6 +66,22 @@ sed_libzdefend() {
) && info "[sed_libzdefend] [$target] -> [$replacement]" || warn "[sed_libzdefend] replacing [$target] failed !"
}
+iszdefend() {
+ if [[ -f mbapk/mbapk_unpacked/root/lib/arm64-v8a/libZDefend.so ]]; then
+ info "[libZDefend.so] is found! App resources extraction required!"
+ else
+ info "[libZDefend.so] is NOT found! No need app resources extraction :)"
+ fi
+}
+
+isvcm1() {
+ if [[ -f mbapk/mbapk_unpacked/root/lib/arm64-v8a/libvcm1.so ]]; then
+ warn "As of v6.4.86+, to extract assets, you need to clear app data and then open the app again!"
+ else
+ info "[libvcm1.so] not found! ignoring notice"
+ fi
+}
+
manifest_remove() {
sed -i "/$1/d" "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml && \
info "[manifest_remove] removing $1" || \
@@ -67,11 +93,12 @@ pblock() {
echo "$1" > "$blocker"
}
-get_mb_ver() {
+mb_ver() {
+ [ -z "$1" ] && return 42
a="$(grep -m1 'android:versionName' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml | tr ' ' '\n' | grep -m1 'android:versionName')"
a="$(bb_split "$a" '=' '1')"
a="$(strip_all "$a" '"')"
- bb_split "$a" '.' '2'
+ bb_split "$a" '.' "$1"
}
good() {
@@ -98,3 +125,5 @@ Press Y to confirm, press any other keys to cancel: " val
*) return 69 ;;
esac
}
+
+
diff --git a/MBCPApp/legacy_patch.sh b/MBCPApp/legacy_patch.sh
index 2dd0c1d..ecdc00d 100755
--- a/MBCPApp/legacy_patch.sh
+++ b/MBCPApp/legacy_patch.sh
@@ -1,18 +1,17 @@
#!/usr/bin/env bash
+echo "DO NOT use these patches with newer app!"
echo "Legacy patches list for MBCPApp :"
PS3='Select patch options :'
select opt in 'Bypass 1200 error [v6.4.45]' 'Bypass signature check' '[TEST] Remove v6.4.56 root detection' 'Exit'
do
-if [ "$opt" == 'Bypass 1200 error [v6.4.45]' ]; then
+ if [ "$opt" == 'Bypass 1200 error [v6.4.45]' ]; then
+ [ ! -f 'bypass1200/*.apks' ] && echo "Download the [v6.4.47] app from Telegram [@embeeapks] or Google Play API with versionCode 661" && echo "Then copy it to [bypass1200] folder!" && exit 1
echo "Notice : v6.4.45 are now got [GW525 - Force update !] !!!"
echo "This patch will remain available but you cannot bypass GW525 error !"
- mkdir bypass1200
- echo "Downloading v6.4.47 apks..."
- wget https://github.com/ghclonenah1/mbbpatch_release/releases/download/a/embee_v6.4.47_arm64-v8a_armeabi-v7a.apks -q --show-progress
- mv *.apks bypass1200/
+ mkdir -p bypass1200
echo "Unpacking..."
- java -jar tools/apkeditor.jar m -i bypass1200/*.apks -j$(nproc)
+ java -jar tools/apkeditor.jar m -i bypass1200/*.apks
java -jar tools/apktool.jar d bypass1200/*.apk -o bypass1200/unpacked -j$(nproc)
mv bypass1200/unpacked/lib/arm64-v8a/libapp.so mbapk/mbapk_unpacked/root/lib/arm64-v8a/
mv bypass1200/unpacked/lib/armeabi-v7a/libapp.so mbapk/mbapk_unpacked/root/lib/armeabi-v7a/
@@ -21,17 +20,17 @@ if [ "$opt" == 'Bypass 1200 error [v6.4.45]' ]; then
echo "Cleaning..."
rm -rf bypass1200
## MB Forced update to 658, it must be spoofed!
- echo "Patching [apktool.yml]..."
- sed -i 's|658|700|g' "$DIRPATH"/mbapk/mbapk_unpacked/apktool.yml
+ echo "Patching [AndroidManifest.xml]..."
+ sed -i 's|658|700|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
echo "This patch are applied by MBCPApp Patcher on $(uname -s -r) with commit :" $(git rev-parse --short HEAD) at $(git show -s --format=%cd HEAD). > 'mbapk/mbapk_unpacked/root/assets/mbcp_info/bypass_1200_error.inf'
- # Placeholder patch, not yet implemented
- elif [ "$opt" == 'Bypass signature check' ]; then
+ # Use bypass gw934 checksum for this patch instead
+ elif [ "$opt" == 'Bypass signature check' ]; then
echo "Applying patch [Bypass signature check]..."
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
+ if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
then
- # Checks for MBShield, if exists then exit function
+ # Checks for MBShield, if exists then exit function
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ]
then
info "MBShield found on unpacked APK ! Bypass signature checks won't be possible if MBShield is present on current unpacked APK !"
@@ -43,8 +42,7 @@ if [ "$opt" == 'Bypass 1200 error [v6.4.45]' ]; then
echo "MBBank v6.4.26 [versionCode : 626]"
echo "MBBank v6.4.45 [versionCode : 658]"
else
- echo "Function not yet implemented due to issues with original repo, check back later !"
-
+ echo "This patch is now a part of [Bypass GW934 checksum] patch, please exit legacy patch and continue with normal patch !"
fi
else
echo "APK are not unpacked ! Please unpack APK first !"
@@ -53,7 +51,6 @@ fi
elif [ "$opt" == '[TEST] Remove v6.4.56 root detection' ]; then
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali ]
then
-
echo "Applying patch..."
echo "Removing checksum from provider..."
sed -i 's|e1a14adc915d7ad159edf2668b0dfcb359cf86538642de0e425d027f66eb07b2||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
@@ -88,19 +85,18 @@ fi
mv 'temp/libweneedfreedom.so' 'temp/libdesignersactivists.so'
cp -f 'temp/libdesignersactivists.so' 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libdesignersactivists.so'
rm -rf temp
- echo "This patch are applied by MBCPApp Patcher on $(uname -s -r) with commit :" $(git rev-parse --short HEAD) at $(git show -s --format=%cd HEAD). > 'mbapk/mbapk_unpacked/assets/mbcp_info/remove_v6.4.56_root_detection.inf'
+ echo "This patch is applied by MBCPApp Patcher on $(uname -s -r) with commit :" $(git rev-parse --short HEAD) at $(git show -s --format=%cd HEAD). > 'mbapk/mbapk_unpacked/assets/mbcp_info/remove_v6.4.56_root_detection.inf'
echo "Applied [Remove v6.4.56 root detection] patch !!!"
else
- echo "[UnderlyingVcl.smali] not found! Please clear patched app then unpack again!"
+ echo "[UnderlyingVcl.smali] not found!"
fi
elif [ "$opt" == 'Exit' ]; then
clear
- ./mbcpapp.sh
- exit
- break
+ exit
+ break
fi
done
diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh
index 76de142..c4c181e 100755
--- a/MBCPApp/mbcpapp.sh
+++ b/MBCPApp/mbcpapp.sh
@@ -15,12 +15,12 @@ clear
. "$DIRPATH/common.sh"
# Check if user is running on an actual Linux environment
-if uname -a | grep -i Linux ; then
+if uname -a | grep -i Linux; then
info "You have Linux environment :)"
fi
# Check if figlet exists or not
-if command -v figlet ; then
+if command -v figlet; then
FIGLET=figlet
else
warn "figlet not found, ignoring banner !"
@@ -28,27 +28,25 @@ else
fi
# Check if java exists
-if ! java -version ; then
+if ! java -version; then
err "Java not found !!!"
- info "Please install Java for your Linux distribution ! "
+ info "Please install Java for your system ! "
exit 127
fi
# Check if wget exists
-if ! wget --version ; then
+if ! wget --version; then
err "wget not found !!!"
- info "Please install wget for your Linux distribution !"
+ info "Please install wget for your system !"
exit 127
fi
# Check if xmlstarlet exists
-if ! xmlstarlet --version ; then
+if ! xmlstarlet --version; then
err "xmlstarlet not found, please install it"
exit 127
fi
-
-
COMMIT="$(git rev-parse --short HEAD)"
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
clear
@@ -62,8 +60,8 @@ Patching operation are all not limited at all !
Asset extraction are not needed :)'
download_tools() {
- apktool_link="https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.12.0.jar"
- apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.5/APKEditor-1.4.5.jar"
+ apktool_link="https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_3.0.1.jar"
+ apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.7/APKEditor-1.4.7.jar"
cd tools && rm -rf ./*.jar
wget -q --show-progress -O apktool.jar "$apktool_link" || err "downloading apktool failed"
@@ -71,25 +69,47 @@ download_tools() {
cd ..
}
+darwindeps() {
+ PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
+}
+
+darwin() {
+ [ $(brew list | grep gnu-sed) ] && echo "gnu-sed is installed!" && darwindeps || echo "gnu-sed is not installed. Please install it!"
+}
+
+if uname -a | grep -i Darwin; then
+ info "You have macOS environment :)"
+ darwin
+ clear
+fi
+
copy_assets() {
- adb shell su -c cp -rf "/data/user/0/com.mbmobile/files/$1" /sdcard/assets
+ adb shell su -c cp -rf "/data/data/com.mbmobile/files/$1" /sdcard/assets
}
is_unpacked() {
[ -d "$DIRPATH"/mbapk/mbapk_unpacked ] || {
- err "[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/root/lib ] || {
- err "[mbapk_unpacked/root/lib] folder not found ! Please unpack APK first !" ; return 127
+ err "[mbapk_unpacked/root/lib] folder not found ! Please unpack APK first !"
+ return 127
}
}
apktool_exist() {
- [ -f "$DIRPATH"/tools/apktool.jar ] || { err "apktool not found" ; return 127 ; }
+ [ -f "$DIRPATH"/tools/apktool.jar ] || {
+ err "apktool not found"
+ return 127
+ }
}
apkeditor_exist() {
- [ -f "$DIRPATH"/tools/apkeditor.jar ] || { err "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 || {
@@ -99,10 +119,22 @@ mb_apk_exist() {
}
unpack_mbcp() {
- local - ; set -e
- { apkeditor_exist && mb_apk_exist ; } || return 1
+ [[ $(uname -a | grep Linux) ]] && local -
+ set -e
+ { apkeditor_exist && mb_apk_exist; } || return 0
rm -rf 'mbapk/mbapk_unpacked'
- java -jar tools/apkeditor.jar d -i mbapk/*.apk -o mbapk/mbapk_unpacked || { err "Unpacking failed !" ; return 1 ; }
+ rm -rf 'mbapk/*.apks'
+ rm -rf 'mbapk/*merged.apk'
+ java -jar tools/apkeditor.jar d -i mbapk/*.apk -o mbapk/mbapk_unpacked || {
+ err "Unpacking failed !"
+ return 1
+ }
+ touch 'mbapk/mbapk_unpacked/isreal_unpacked'
+ unzip -l mbapk/MBOriginal.apk | grep -oH "ic-appmb.ttf" && good "Current converted app is MBBank! Continuing" || {
+ err "Current converted app is NOT MBBank! Deleting files"
+ rm -rf mbapk/*
+ return 1
+ }
info "Cleaning useless files..."
rm -rf 'mbapk/mbapk_unpacked/root/assets/_4A9w8flncUrhDOG8dyqLi_azBTYT3PlSXz0hiCzRQA_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/0QDl12M5S2hKxoKF4cNI4kEX1qDQRMiOd34TXjSjy4M_'
@@ -172,48 +204,66 @@ unpack_mbcp() {
rm -rf 'mbapk/mbapk_unpacked/root/assets/U8M8_vW2i8G_dLkEBAPC1ARUe5wGRu8ebXKFfhZMvOw_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/uEmV2ugmVX1f4hLUo7L5kR4ukfV8Y04sHlpabtch9HE_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/X7Y6j7fmtuE5o33sw4Sh6Z97oMv_uaNPyZJ6PjF6l5M_'
+ # New zimperium for v6.4.72+
+ rm -rf 'mbapk/mbapk_unpacked/root/assets/Z1YbTXaPlMjbmWCKXXD0m4wkWyE0I6xxDebGhXz5igk_'
+ rm -rf 'mbapk/mbapk_unpacked/root/assets/zxwCzUaZ8itWQeAMKtyu52RbljJe1Pd8GuV7H4RPsy4_'
info "Creating [mbcp_info] folder..."
mkdir 'mbapk/mbapk_unpacked/root/assets/mbcp_info/'
info "Reformatting AndroidManifest.xml with xmlstarlet..."
mv "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml.orig
- xmlstarlet fo "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml.orig > "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
+ xmlstarlet fo "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml.orig >"$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
+
+ info "Changing minSdkVersion to 28..."
+ sed -i 's|android:minSdkVersion="24"|android:minSdkVersion="28"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
}
repack_mbcp() {
- { apktool_exist && is_unpacked ; } || return 1
+ { apktool_exist && is_unpacked; } || return 0
info "Repacking APK..."
- echo "Compiled by MBCPApp Patcher on $(uname -s -r) with commit $COMMIT at $(date). That's all xD" > 'mbapk/mbapk_unpacked/root/assets/mbcp_info/mbcpinfo.txt'
+ echo "Compiled with MBCPApp Patcher by $(whoami) on $(uname -s -r) with commit $COMMIT at $(date). That's all xD" >'mbapk/mbapk_unpacked/root/assets/mbcp_info/mbcpinfo.txt'
(
set -e
java -jar tools/apkeditor.jar b -i 'mbapk/mbapk_unpacked' -o mbcpapp_apk/MBCP_Flutter_TMP.apk
+ [ ! -f 'mbcpapp_apk/MBCP_Flutter_TMP.apk' ] && exit 1
info "Processing APK signature scheme v2/v3..."
- rm 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
- java -jar tools/apkeditor.jar b -t sig -i 'mbcpapp_apk/MBCP_Flutter_TMP.apk' -sig 'mbsig/signatures' -o 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
+ rm -rf mbcpapp_apk/MBCP_Flutter_SelfPatched*
+ java -jar tools/apkeditor.jar b -t sig -i 'mbcpapp_apk/MBCP_Flutter_TMP.apk' -sig 'mbsig/signatures' -o "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk"
rm 'mbcpapp_apk/MBCP_Flutter_TMP.apk'
) && {
- good 'Completed! Repacked APK are saved as [mbcpapp_apk/MBCP_Flutter_SelfPatched.apk] !!!'
+ good "Completed! Repacked APK are saved as [mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk] !!!"
good 'Install and trying to open it when ಠ‿ಠ'
- good 'If you are facing issues, report it on Telegram [@mbbpatch_eng] or Disroot Forgejo : mbbpatch !!'
+ good 'If you are facing issues, report it on Telegram [@mbcposs_en] or [@mbcposs] (for Vietnamese users) !!'
+ good 'It is recommended to report issues to [https://git.disroot.org/mbcp/mbbpatch/issues] instead !'
} || err 'ERROR : Repacking failed !'
}
+successunpack() {
+ if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/isreal_unpacked ]; then
+ echo -e "\033[32m"Unpacked."$1\033[0m"
+
+ else
+ echo -e "\033[31m"Not yet unpacked or not found."$1\033[0m"
+ fi
+}
+
check_mbshield() {
is_unpacked || return 1
- if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]
- then
+ if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]; then
info "$mbshield_found"
+ iszdefend
else
info "$mbshield_not_found"
fi
}
convert_apks() {
- local - ; set -e
+ [[ $(uname -a | grep Linux) ]] && local -
+ set -e
ls "$DIRPATH"/mbapk/*.apks >/dev/null 2>&1 || {
err "APKs missing, cannot continue !"
- return 1
+ return 0
}
apkeditor_exist
info "Converting apks to apk..."
@@ -221,6 +271,11 @@ convert_apks() {
mv mbapk/*.apk mbapk/MBOriginal.apk
info 'Cleaning left over [apks] files...'
rm -f mbapk/*.apks
+ unzip -l mbapk/MBOriginal.apk | grep -oH "ic-appmb.ttf" && good "Current converted app is MBBank! Continuing" || {
+ err "Current converted app is NOT MBBank! Deleting files"
+ rm -rf mbapk/*
+ return 1
+ }
info "You probably can continue to unpack APK!"
}
@@ -240,193 +295,192 @@ echo "Original APK must be inside [mbapk] folder !"
echo -------------------------------------------------------------
echo "Current commit : $COMMIT ($BRANCH)"
echo "Source code : https://git.disroot.org/mbcp/mbbpatch.git"
-echo "Made possible by Cuynu's brain with love <3"
+echo "Documentation : see [docs] folder"
+echo "Written from scratch by Cuynu with love <3"
+echo -------------------------------------------------------------
+echo App status : $(successunpack)
echo -------------------------------------------------------------
-warn "For your safety, avoid using any untrusted forks, like the bullsh*t [reMBCP] on GitHub"
-warn "[reMBCP] fork is claimed to be abusing the official repository and even bullying the author"
-warn "Always use the right official repository on Disroot or my self-hosted instance !"
-
# Main functions
PS3='Please select options to continue : '
-select opt in 'Pull latest commit' 'Unpack APK' 'Convert apks to apk' 'Repack APK' 'Install patched app' 'MBShield Check' 'Patch App' 'Legacy patches' 'Extract assets [ROOT]' 'Launch MBCPApp/MBBank' 'Force close MBCPApp/MBBank' 'Clear MBCPApp/MBBank app data' 'Clean patched app' 'Download tools' 'Exit'
-do
+select opt in 'Pull latest commit' 'Unpack APK' 'Convert apks to apk' 'Repack APK' 'Install patched app' 'MBShield Check' 'Patch App' 'Legacy patches' 'Extract assets [ROOT]' 'Launch MBCPApp/MBBank' 'Force close MBCPApp/MBBank' 'Clear MBCPApp/MBBank app data' 'Clean patched app' 'Download/update tools' 'Restart script' 'Exit'; do
case "$opt" in
- 'Download tools' ) download_tools ;;
- 'Unpack APK' ) unpack_mbcp ;;
- 'Repack APK' ) repack_mbcp ;;
- 'Patch App' ) run_patcher ;;
- 'Legacy patches' ) run_legacy_patcher ;;
- 'MBShield Check' ) check_mbshield ;;
- 'Convert apks to apk' ) convert_apks ;;
- 'Extract assets [ROOT]' )
- info 'To extract encrypted assets [if current app has MBShield protection] you need rooted device'
- info 'And trigger a bulit-in app assets extraction !'
- echo -------------------------------------------
- PS3='Select options continue, or [3] to quit : '
- select opt in 'Launch MBCPApp/MBBank' 'Extract assets' 'Exit'
-do
- if [ "$opt" == 'Launch MBCPApp/MBBank' ]; then
- adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
- info 'After app started, you MUST need to trigger assets extraction'
- info 'By trigger eKYC authetication with reset account password option or register DigitalOTP'
- info 'After you got into eKYC screen, close the app, then use Extract assets option to extract assets.'
- elif [ "$opt" == 'Extract assets' ]; then
- if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ]
-then
- if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]
-then
- info "MBShield found ! Continuing !!!"
- warn 'You MUST grant root access to [com.android.shell] in order to extract assets !'
- info 'Trying to extract assets...'
- adb shell am force-stop com.mbmobile
- adb shell rm -rf /sdcard/assets
- adb shell mkdir /sdcard/assets
- copy_assets flutter_assets
- copy_assets dexopt
- copy_assets font
- copy_assets mbshield
- copy_assets media_init_data
- copy_assets mlkit_barcode_models
- copy_assets models_bundled
- copy_assets mwebview
- copy_assets zfiles
- copy_assets crashlytics-build.properties
- copy_assets firmware
- copy_assets insider.ttf
- copy_assets dlangV5.dat
- copy_assets dlangV5.en.dat
- copy_assets policy0
- copy_assets policy1
- copy_assets policy2
- copy_assets policy3
- copy_assets policy4
- copy_assets policy5
- copy_assets policy6
- copy_assets policy8
- copy_assets policy9
- copy_assets policym
- copy_assets profile
- copy_assets rulesV5.dat
- copy_assets sgprofile
- copy_assets signature
- copy_assets smart_ekyc_finall.zip
- copy_assets version.json
- copy_assets vkeylicensepack
- copy_assets voscodesign.vky
- info 'Copying assets...'
- adb pull /sdcard/assets mbapk/mbapk_unpacked/root/
- adb shell rm -rf /sdcard/assets
- else
- info "MBShield not found ! No need to extract assets !"
- fi
-else
- err "Can't find [mbapk/mbapk_unpacked] folder, cannot continue ! "
- err "Please unpack APK first !"
- fi
+ 'Download/update tools') download_tools ;;
+ 'Unpack APK') unpack_mbcp ;;
+ 'Repack APK') repack_mbcp ;;
+ 'Patch App') run_patcher ;;
+ 'Legacy patches') run_legacy_patcher ;;
+ 'MBShield Check') check_mbshield ;;
+ 'Convert apks to apk') convert_apks ;;
+ 'Extract assets [ROOT]')
+ is_unpacked || exit 1
+ isvcm1
+ iszdefend
+ info 'To extract encrypted assets [if current app has MBShield protection] you need rooted device'
+ info 'And trigger a bulit-in app assets extraction !'
+ echo -------------------------------------------
+ PS3='Select options continue, or [3] to quit : '
+ select opt in 'Launch MBCPApp/MBBank' 'Extract assets' 'Exit'; do
+ if [ "$opt" == 'Launch MBCPApp/MBBank' ]; then
+ adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
+ info 'After app started, you MUST need to trigger assets extraction'
+ info 'By trigger eKYC authetication with reset account password option or register DigitalOTP'
+ info 'After you got into eKYC screen, close the app, then use Extract assets option to extract assets.'
+ elif [ "$opt" == 'Extract assets' ]; then
+ if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ]; then
+ if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]; then
+ info "MBShield found ! Continuing !!!"
+ warn 'You MUST grant root access to [com.android.shell] in order to extract assets !'
+ info 'Trying to extract assets...'
+ adb shell am force-stop com.mbmobile
+ adb shell rm -rf /sdcard/assets
+ adb shell mkdir /sdcard/assets
+ copy_assets flutter_assets
+ copy_assets dexopt
+ copy_assets font
+ copy_assets mbshield
+ copy_assets media_init_data
+ copy_assets mlkit_barcode_models
+ copy_assets models_bundled
+ copy_assets mwebview
+ copy_assets zfiles
+ copy_assets crashlytics-build.properties
+ copy_assets firmware
+ copy_assets insider.ttf
+ copy_assets dlangV5.dat
+ copy_assets dlangV5.en.dat
+ copy_assets policy0
+ copy_assets policy1
+ copy_assets policy2
+ copy_assets policy3
+ copy_assets policy4
+ copy_assets policy5
+ copy_assets policy6
+ copy_assets policy8
+ copy_assets policy9
+ copy_assets policym
+ copy_assets profile
+ copy_assets rulesV5.dat
+ copy_assets sgprofile
+ copy_assets signature
+ copy_assets smart_ekyc_finall.zip
+ copy_assets version.json
+ copy_assets vkeylicensepack
+ copy_assets voscodesign.vky
+ info 'Copying assets...'
+ adb pull /sdcard/assets mbapk/mbapk_unpacked/root/ && good "Assets copied to [mbapk_unpacked/root/] !" || err "Failed to copy assets ! Please try again."
+ info 'Removing leftover assets...'
+ adb shell rm -rf /sdcard/assets && good "Removed leftover assets !" || err "Failed to remove leftover assets from device !"
+ else
+ info "MBShield not found ! No need to extract assets !"
+ fi
+ else
+ err "Can't find [mbapk/mbapk_unpacked] folder, cannot continue ! "
+ err "Please unpack APK first !"
+ fi
- elif [ "$opt" == 'Exit' ]; then
- clear
+ elif [ "$opt" == 'Exit' ]; then
+ clear
+ bash mbcpapp.sh
+ break
+ fi
+ done
+ ;;
+ 'Restart script')
bash mbcpapp.sh
- break
- fi
-done
;;
- 'Clear MBCPApp/MBBank app data' )
- info "Clearing [com.mbmobile] data..."
- adb shell pm clear com.mbmobile
- adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
- info "Current logged in account will remain present, even if app data is cleared !"
- ;;
-
- 'Pull latest commit' )
- git pull origin mbflutter
- info "Please run patcher again !"
- exit
- ;;
- 'Launch MBCPApp/MBBank' )
- adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
- ;;
- 'Force close MBCPApp/MBBank' )
- adb shell am force-stop com.mbmobile
- ;;
- 'Clean patched app' )
- info "Cleaning, please wait..."
- rm -f mbcpapp_apk/*.apk
- rm -f mbcpapp_apk/*.zip
- rm -f mbapk/*.apk
- rm -f mbapk/*.apks
- rm -rf mbapk/mbapk_unpacked
- info "Cleared !"
- ;;
- 'Install patched app' )
- info 'Select your patched version to continue'
- PS3='Select patched version to continue, or [4] to quit : '
- select opt in 'App patched with newer version [v6.4.59+]' 'App patched with specific version' 'App patched with older version [v6.4.55 or lower]' 'Exit'
-do
-
- if [ "$opt" == 'App patched with newer version [v6.4.59+]' ]; then
- if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched.apk ]
- then
- warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
- warn "You must have connected Android device with USB debugging turned on in order to install !!!"
- adb kill-server
- adb start-server
- adb install 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
+ 'Clear MBCPApp/MBBank app data')
+ info "Clearing [com.mbmobile] data..."
+ adb shell pm clear com.mbmobile
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
- else
- err "[MBCP_Flutter_SelfPatched.apk] not found, cannot continue !"
- fi
-
- elif [ "$opt" == 'App patched with specific version' ]; then
- if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched.apk ]
- then
- warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
- warn "You must have connected Android device with USB debugging turned on in order to install !!!"
- adb kill-server
- adb start-server
- adb install 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
- # Delete zimperium detection files
- adb shell su -c rm -rf /data/data/com.mbmobile/files/0*
- adb shell su -c rm -rf /data/data/com.mbmobile/files/1*
- adb shell su -c rm -rf /data/data/com.mbmobile/files/2*
- adb shell su -c rm -rf /data/data/com.mbmobile/files/3*
- adb shell su -c rm -rf /data/data/com.mbmobile/files/4*
- adb shell su -c rm -rf /data/data/com.mbmobile/files/5*
- adb shell su -c rm -rf /data/data/com.mbmobile/files/6*
- adb shell su -c rm -rf /data/data/com.mbmobile/files/7*
- adb shell su -c rm -rf /data/data/com.mbmobile/files/8*
- adb shell su -c rm -rf /data/data/com.mbmobile/files/9*
- warn "ATTENTION : Network traffic will be redirected to [medium.com] for 20 seconds !!!"
- adb shell su -c 'iptables -t nat -A OUTPUT -p tcp -d 0/0 -j DNAT --to-destination 162.159.153.4:443'
- adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
- sleep 20
- info "Restoring network traffic"
- adb shell su -c 'iptables -t nat -F OUTPUT'
- info "Press [Try again] after got 1005/1007 error on MB, so it's can skip device not secure dialog !"
- else
- err "[MBCP_Flutter_SelfPatched.apk] not found, cannot continue !"
- fi
-
- elif [ "$opt" == 'App patched with older version [v6.4.55 or lower]' ]; then
- if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched.apk ]
- then
- warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
- warn "You must have connected Android device with USB debugging turned on in order to install !!!"
- adb kill-server
- adb start-server
- adb install 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
- adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
- else
- err "[MBCP_Flutter_SelfPatched.apk] not found, cannot continue !"
- fi
-
-
- elif [ "$opt" == 'Exit' ]; then
- PS3='Please select options to continue : '
- break
- fi
-done
+ info "Current logged in account will remain present, even if app data is cleared !"
;;
- 'Exit' ) exit ;;
+ 'Pull latest commit')
+ git pull origin mbflutter
+ info "Please run patcher again !"
+ exit
+ ;;
+ 'Launch MBCPApp/MBBank')
+ adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
+ ;;
+ 'Force close MBCPApp/MBBank')
+ adb shell am force-stop com.mbmobile
+ ;;
+ 'Clean patched app')
+ info "Cleaning, please wait..."
+ rm -f mbcpapp_apk/*.apk
+ rm -f mbcpapp_apk/*.zip
+ rm -f mbapk/*.apk
+ rm -f mbapk/*.apks
+ rm -rf mbapk/mbapk_unpacked
+ info "Cleared !"
+ ;;
+ 'Install patched app')
+ info 'Select your patched version to continue'
+ PS3='Select patched version to continue, or [4] to quit : '
+ select opt in 'App patched with newer version [v6.4.59+]' 'App patched with specific version' 'App patched with older version [v6.4.55 or lower]' 'Exit'; do
+
+ if [ "$opt" == 'App patched with newer version [v6.4.59+]' ]; then
+ if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ]; then
+ warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
+ warn "You must have connected Android device with USB debugging turned on in order to install !!!"
+ adb kill-server
+ adb start-server
+ adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk"
+ adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
+ else
+ err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !"
+ fi
+
+ elif [ "$opt" == 'App patched with specific version' ]; then
+ if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ]; then
+ warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
+ warn "You must have connected Android device with USB debugging turned on in order to install !!!"
+ adb kill-server
+ adb start-server
+ adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk"
+ # Delete zimperium detection files
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/0*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/1*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/2*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/3*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/4*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/5*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/6*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/7*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/8*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/9*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/KNOV3PN*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/zxpolicyme*
+ adb shell su -c rm -rf /data/data/com.mbmobile/files/policyme*
+ warn "ATTENTION : Network traffic will be redirected to [medium.com] for 20 seconds !!!"
+ adb shell su -c 'iptables -t nat -A OUTPUT -p tcp -d 0/0 -j DNAT --to-destination 162.159.153.4:443'
+ adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
+ sleep 20
+ info "Restoring network traffic"
+ adb shell su -c 'iptables -t nat -F OUTPUT'
+ info "Press [Try again] after got 1005/1007 error on MB, so it's can skip device not secure dialog !"
+ else
+ err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !"
+ fi
+
+ elif [ "$opt" == 'App patched with older version [v6.4.55 or lower]' ]; then
+ if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ]; then
+ warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
+ warn "You must have connected Android device with USB debugging turned on in order to install !!!"
+ adb kill-server
+ adb start-server
+ adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk"
+ adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
+ else
+ err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !"
+ fi
+
+ elif [ "$opt" == 'Exit' ]; then
+ PS3='Please select options to continue : '
+ break
+ fi
+ done
+ ;;
+ 'Exit') exit ;;
esac
done
diff --git a/MBCPApp/mbcpicons/git/test.png b/MBCPApp/mbcpicons/git/test.png
new file mode 100644
index 0000000..c58a08f
Binary files /dev/null and b/MBCPApp/mbcpicons/git/test.png differ
diff --git a/MBCPApp/parse.sh b/MBCPApp/parse.sh
index f91aa40..4878c5f 100644
--- a/MBCPApp/parse.sh
+++ b/MBCPApp/parse.sh
@@ -77,12 +77,36 @@ for f in patches/*.sh ; do
continue
}
[ -n "$minver" ] && {
- [ "$(get_mb_ver)" -gt "$minver" ] || {
+ chk="${minver//[^.]}"
+ [ "${#chk}" -ne 2 ] && {
+ warn "[parser] skipping [$pname] with malformed minver"
+ continue
+ }
+
+ minmajor="$(bb_split "$minver" '.' '0')"
+ minminor="$(bb_split "$minver" '.' '1')"
+ minpatch="$(bb_split "$minver" '.' '2')"
+
+ [ "$(( $(mb_ver 0) * 10000 + $(mb_ver 1) * 100 + $(mb_ver 2) ))" -lt \
+ "$(( minmajor * 10000 + minminor * 100 + minpatch ))" \
+ ] && {
info "[parser] skipping [$pname] as current version is lower than patch version clamp"
continue ; }
} || :
[ -n "$maxver" ] && {
- [ "$(get_mb_ver)" -lt "$maxver" ] || {
+ chk="${maxver//[^.]}"
+ [ "${#chk}" -ne 2 ] && {
+ warn "[parser] skipping [$pname] with malformed maxver"
+ continue
+ }
+
+ maxmajor="$(bb_split "$maxver" '.' '0')"
+ maxminor="$(bb_split "$maxver" '.' '1')"
+ maxpatch="$(bb_split "$maxver" '.' '2')"
+
+ [ "$(( $(mb_ver 0) * 10000 + $(mb_ver 1) * 100 + $(mb_ver 2) ))" -gt \
+ "$(( maxmajor * 10000 + maxminor * 100 + maxpatch ))" \
+ ] && {
info "[parser] skipping [$pname] as current version is higher than patch version clamp"
continue ; }
} || :
diff --git a/MBCPApp/patches/adaptive_ic_launcher.sh b/MBCPApp/patches/adaptive_ic_launcher.sh
new file mode 100644
index 0000000..d5715ad
--- /dev/null
+++ b/MBCPApp/patches/adaptive_ic_launcher.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+# PATCHNAME: Adaptive launcher icon
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+confirm "This will override all changes in [Change app icon], are you sure you want to apply?" || exit 69
+
+res="$DIRPATH/mbapk/mbapk_unpacked/resources/package_1/res/"
+blob="$DIRPATH/blob_patches/adaptive_ic_launcher/"
+
+cp -r "$blob"/* "$res"
+
+sed -i '0,/type=.font/s|^.*type="font".*| \n \n&|' "$res"/values/public.xml
diff --git a/MBCPApp/patches/add_anime_resources.sh b/MBCPApp/patches/add_anime_resources.sh
index 92bdad3..46d8cb0 100644
--- a/MBCPApp/patches/add_anime_resources.sh
+++ b/MBCPApp/patches/add_anime_resources.sh
@@ -10,3 +10,17 @@ cp -f 'blob_patches/anime_resources/rating_illus_fourStar.webp' 'mbapk/mbapk_unp
cp -f 'blob_patches/anime_resources/rating_illus_threeStar.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/'
cp -f 'blob_patches/anime_resources/rating_illus_twoStar.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/'
cp -f 'blob_patches/anime_resources/rating_illus_oneStar.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/'
+cp -f 'blob_patches/anime_resources/general_illus_versionUpdate.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/'
+cp -f 'blob_patches/anime_resources/general_illus_versionUpdate.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/'
+
+if [[ -d mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/quockhanh ]]; then
+ cp -f 'blob_patches/anime_resources/general_illus_versionUpdate.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/quockhanh/'
+else
+ info "[quockhanh] folder not found! skipping"
+fi
+
+if [[ -d mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/womendayvn ]]; then
+ cp -f 'blob_patches/anime_resources/general_illus_versionUpdate.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/womendayvn/'
+else
+ info "[womendayvn] folder not found! skipping"
+fi
diff --git a/MBCPApp/patches/add_modified_resources.sh b/MBCPApp/patches/add_modified_resources.sh
index 1d2da00..7d89036 100644
--- a/MBCPApp/patches/add_modified_resources.sh
+++ b/MBCPApp/patches/add_modified_resources.sh
@@ -8,3 +8,7 @@
info "Copying modified resources..."
cp -r -f 'blob_patches/resources/raw' 'mbapk/mbapk_unpacked/resources/package_1/res/'
cp -f 'blob_patches/resources/strings-vi/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values-vi/'
+cp -f 'blob_patches/resources/strings/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values/'
+info "Copying bootleg_ekyc..."
+cp -f 'blob_patches/bootleg_ekyc/dotp1_ekyc.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/digitalOtp_img_authenguide01.webp'
+cp -f 'blob_patches/bootleg_ekyc/dotp2_ekyc.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/digitalOtp_img_authenguide02.webp'
diff --git a/MBCPApp/patches/add_verified_badge.sh b/MBCPApp/patches/add_verified_badge.sh
new file mode 100644
index 0000000..e900978
--- /dev/null
+++ b/MBCPApp/patches/add_verified_badge.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+# PATCHNAME: Add verified badge
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+confirm "This patch will replace MIC protection shield with verified badge, including the unregistered package badge. Are you sure you want to apply?" || exit 169
+
+info "Moving icons..."
+# [actived] is typo from MB side.
+
+# Activated MIC protection shield
+#
+cp -f 'blob_patches/verified_badge/tick-mark.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/shield_img_actived.webp'
+# Private users
+cp -f 'blob_patches/verified_badge/tick-mark.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/shield_img_actived.private.webp'
+
+# Unactivated MIC protection shield
+cp -f 'blob_patches/verified_badge/tick-mark.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/shield_img_pending.webp'
+cp -f 'blob_patches/verified_badge/tick-mark.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/shield_img_pending.webp'
+# Private users
+cp -f 'blob_patches/verified_badge/tick-mark.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/shield_img_pending.private.webp'
+
+# Empty shield (when the expiry date of current protection shield is less than 10 days)
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/shield_img_empty.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/shield_img_empty.webp'
+# Private users
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/shield_img_empty.private.webp'
+
+# Processing shield for private users
+cp -f 'blob_patches/verified_badge/tick-mark.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_shield_processing.webp'
+
+# MIC Protection shield banners
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_hoadon.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_muasam.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_offline.webp'
+# Private users
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_hoadon.private.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_muasam.private.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_offline.private.webp'
diff --git a/MBCPApp/patches/autopatch_strings.sh b/MBCPApp/patches/autopatch_strings.sh
index dd4da18..e13fb4c 100644
--- a/MBCPApp/patches/autopatch_strings.sh
+++ b/MBCPApp/patches/autopatch_strings.sh
@@ -1,11 +1,24 @@
#!/usr/bin/env bash
# PATCHNAME: Autopatch strings
-# MAXVER: 67
+# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
-# App embedded links
+# Block forced update dialog (does not bypasses GW525)
+sed_libapp 's|version_check_update_config|version_nonapp_check_config'
+sed_libapp 's|currentVersion|currentMBdevsa'
+sed_libapp 's|minVersion|MBDEVSUCKS'
+
+# Bypass blacklist IP hashes
+sed_libapp 's|list_blocked_ip_hash|list_ip_blocked_hash'
+
+# Bypass malicious apps check
+sed_libapp 's|whitelistServices|Servicewhitelist'
+
+# XPE003 error fixes
+sed_libapp 's|isEnableTimeout|isEnableLockout'
+sed_libapp 's|zdefend_config|fua0am0_config'
# App update button url
sed_libapp 's|market://details?id=com.mbmobile|https://tinyurl.com/mbcpupdate??|'
@@ -33,7 +46,9 @@ sed_libapp 's|To provide the best experience, the MBBank APP needs access to som
# QR on "Other"
sed_libapp 's|QR receive|My QR |g'
-# Digital OTP related
+# Digital OTP related
+sed_libapp 's|To use transaction authentication feature with Online OTP, please signin APP MB Bank and implement Online OTP registration in the Installation item|DigitalOTP is not currently registered on your MBCP app. In order to use this feature, please login to MBCP and setup DigitalOTP, then try again. |'
+sed_libapp 's|When transacting via Internet banking or registering Online OTP on other device|Used for transactions via eMB or when registering DigitalOTP on other device |'
sed_libapp 's|online OTP|DigitalOTP|g'
sed_libapp 's|Online OTP|DigitalOTP|g'
sed_libapp 's|D-OTP Verification|DigitalOTP |g'
@@ -56,6 +71,7 @@ sed_libapp 's|Setup D-OTP|Digital OTP|g'
sed_libapp 's|Please remember the PIN to authenticate transactions through the MBBank APP on this device|Please remember the PIN to authenticate transactions through the MBCPApp on this device...|'
sed_libapp 's|DigitalOTP helps you authenticate online transactions quickly and securely.|DigitalOTP is requried for most action on the MB/MBCP app, please register.|'
+
# Notification via MB Bank app
sed_libapp 's|Receive balance change notifications via the MBBank APP for free|Receive balance change notifications via the MBCPApp are free. |'
sed_libapp 's|You switch to a completely new device (on which you have never logged into the MBBank App before)|You switch to a completely new device (which you have never logged into the MB/MBCP App before) |'
@@ -85,18 +101,18 @@ sed_libapp 's|You want to send a gift for the occasion?|You want to send a gift
sed_libapp 's|Intruction|How-to |g'
sed_libapp 's|MBBank will send the withdrawal verification code to the APP instead of SMS on the phone.|MB Bank will send the withdrawal verification code to MBCPApp instead of SMS as before. |'
-# Latest version check
+# Latest version check
sed_libapp 's|The lastest version|TG/Disroot:mbbpatch|'
-# Profile section
+# Profile section
sed_libapp 's|User profile|View profile|g'
sed_libapp 's|MB Membership Package|MB Membership |'
sed_libapp 's|email information|Email information|g'
-# Account related
+# Account related
sed_libapp 's|Premium Account Number|Open new lucky account|'
-# Cashback 150K badge (unused on v6.4.62+)
+# Cashback 150K badge (unused on v6.4.62+)
sed_libapp 's|Cashback 150K| |'
# Forgot password screen
@@ -104,12 +120,13 @@ sed_libapp 's|Request for supplying password|Request for new password |'
sed_libapp 's|ID card/ID card|Old/New ID card|g'
sed_libapp 's|Number of document|Number of ID card |g'
-# Wrong password dialog
+# Wrong password dialog
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 than 5 times. Please try again or use the "Forgot password" feature to reset. |'
# Others section on MB
sed_libapp 's|Introduction to receive money|Invite using MB |g'
sed_libapp 's|Viettel post|Viettel Post|g'
+sed_libapp 's|Scan QR|QR Scan|'
# MiniApp strings on homeLanding
sed_libapp 's|Shopping- Entertainment- Investment|Flutter embedded MiniApps |'
@@ -121,7 +138,7 @@ sed_libapp 's|Please come back later for more new themes!|Tips: Unofficial theme
sed_libapp 's|Change theme successfully|App theme changed :) |'
sed_libapp 's|Change theme|Store themes|'
-# Balance fluctuations notifications (Configuration -> Balance fluctuations notifications)
+# Balance fluctuations notifications (Configuration -> Balance fluctuations notifications)
sed_libapp 's|get notifications|Get notifications|g'
sed_libapp 's|Read the announcement|Notify with voice |'
@@ -138,7 +155,7 @@ sed_libapp 's|Start journey|Alright ! |'
sed_libapp 's|Go here to install the app|MBCPApp settings are here |'
-# EKYC error dialog
+# EKYC error dialog
sed_libapp 's|Verification information is invalid, please contact hotline 1900545426 for support|EKYC failed, please go to Telegram group (@mbbpatch_eng) for details and help !!! |'
# XPE002/XPE003 dialog :
@@ -173,7 +190,7 @@ sed_libapp 's|Zalo Pay|ZolaPay |'
sed_libapp 's|MB membership|MB Membership|g'
# Explore strings (homeLanding -> More -> Discovery)
-sed_libapp 's|New release|Features |g'
+sed_libapp 's|New release|Features |g'
sed_libapp 's|Challenge to receive gifts|Others |g'
# Close account hints (homeLanding -> Total balance VND -> See -> Close account)
@@ -181,7 +198,7 @@ sed_libapp 's|MB will Autoally transfer the entire remaining balance to the acco
# Expired login session dialog
sed_libapp 's|The login session expired. Please login again|Login session are expired. Please login again|'
-# Confirm button on dialog
+# Confirm button on dialog
sed_libapp 's|I understand|OKAY |g'
# Exit application dialog
@@ -213,6 +230,16 @@ sed_libapp 's|Online signature|Intrust CA certs|g'
# Changed theme toast
sed_libapp 's|Theme Changed Successfully|Applied selected theme :) |'
+# MB AI related strings (Present since v6.4.74+)
+sed_libapp 's|AI analyzes and extracts information|MB analyzes and extract information |'
+sed_libapp 's|Confirm the transfer information extracted by AI to proceed with the transfer|Confirm the transfer information extracted by MB to proceed with the transfer|'
+sed_libapp 's|AI analysis|MB Analysis|'
+sed_libapp 's|AI Money Transfer Paste| |'
+sed_libapp 's|AI Suggestion|MB Suggestion|'
+sed_libapp 's|Quick transfer using AI|Quick transfer |'
-# Placeholder toolbox
+
+# Placeholder toolbox
sed_libapp 's|Shopping, entertainment|MBCPApp Toolbox |'
+
+
diff --git a/MBCPApp/patches/better_custombgscreen.sh b/MBCPApp/patches/better_custombgscreen.sh
new file mode 100644
index 0000000..59f509d
--- /dev/null
+++ b/MBCPApp/patches/better_custombgscreen.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+# PATCHNAME: Better custom background screen
+# MAXVER:
+# MINVER: 6.4.83
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+info "Copying..."
+cp -f 'blob_patches/better_custombgscreen/customize_img_changeImageContent.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/customize_img_changeImageContent.webp'
+cp -f 'blob_patches/better_custombgscreen/customize_img_changeImageContent.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/customize_img_changeImageContent_2.webp'
+
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/customize_img_changeImageBG.webp'
diff --git a/MBCPApp/patches/block_adjust_volume_sekyc.sh b/MBCPApp/patches/block_adjust_volume_sekyc.sh
index 6baf082..ac48bdb 100644
--- a/MBCPApp/patches/block_adjust_volume_sekyc.sh
+++ b/MBCPApp/patches/block_adjust_volume_sekyc.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# PATCHNAME: Block adjust volume on sEKYC
-# MAXVER: 67
+# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
diff --git a/MBCPApp/patches/bypass_accessibility_malicious_app_check.sh b/MBCPApp/patches/bypass_accessibility_malicious_app_check.sh
index b04e3c5..423b093 100644
--- a/MBCPApp/patches/bypass_accessibility_malicious_app_check.sh
+++ b/MBCPApp/patches/bypass_accessibility_malicious_app_check.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# PATCHNAME: Bypass accessibility & malicious apps check
-# MAXVER: 55
+# MAXVER: 6.4.55
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
diff --git a/MBCPApp/patches/bypass_checksum.sh b/MBCPApp/patches/bypass_checksum.sh
index a6745ee..5daf1de 100644
--- a/MBCPApp/patches/bypass_checksum.sh
+++ b/MBCPApp/patches/bypass_checksum.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# PATCHNAME: Bypass GW934 checksum
-# MAXVER: 67
-# MINVER: 63
+# MAXVER: 6.4.67
+# MINVER: 6.4.63
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
@@ -18,11 +18,11 @@ fi
info "Extracting [app-debug.apk]..."
unzip -o 'tools/bypass/app-debug.apk' -d 'tools/bypass'
-mv 'tools/bypass/lib/arm64-v8a/libSignatureKiller.so' 'tools/bypass/lib/arm64-v8a/libmodft3.so'
+mv 'tools/bypass/lib/arm64-v8a/libSignatureKiller.so' 'tools/bypass/lib/arm64-v8a/libmodft3.so'
mv 'tools/bypass/lib/armeabi-v7a/libSignatureKiller.so' 'tools/bypass/lib/armeabi-v7a/libmodft3.so'
info "Moving libraries..."
-mv 'tools/bypass/lib/arm64-v8a/libmodft3.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a'
-mv 'tools/bypass/lib/armeabi-v7a/libmodft3.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a'
+mv 'tools/bypass/lib/arm64-v8a/libmodft3.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a'
+mv 'tools/bypass/lib/armeabi-v7a/libmodft3.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a'
mv 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libapp.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libmbcp.so'
mv 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libapp.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libmbcp.so'
diff --git a/MBCPApp/patches/bypass_new_zimperium_detection.sh b/MBCPApp/patches/bypass_new_zimperium_detection.sh
index 0bfc1aa..3eda1c0 100644
--- a/MBCPApp/patches/bypass_new_zimperium_detection.sh
+++ b/MBCPApp/patches/bypass_new_zimperium_detection.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# PATCHNAME: Bypass new zimperium detection
-# MAXVER: 63
+# MAXVER: 6.4.63
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
diff --git a/MBCPApp/patches/change_app_logo.sh b/MBCPApp/patches/change_app_logo.sh
index 7a76b7e..15dd607 100644
--- a/MBCPApp/patches/change_app_logo.sh
+++ b/MBCPApp/patches/change_app_logo.sh
@@ -6,18 +6,18 @@
. "$DIRPATH"/common.sh
PS3='Select app icon variant to continue : '
-select opt in 'MB Classic' 'Tet' 'Valentine 2025' 'SemiMonet' '30/4-1/5' '19/8-2/9 2025' 'Summer 2025' 'Mid-autumn festival' 'Noel' 'Exit'
+select opt in 'MB Classic' 'New Year 2023' 'Valentine 2025' 'SemiMonet' '30/4-1/5' '19/8-2/9 2025' 'Summer 2025' 'Mid-autumn festival 2025' 'Noel 2024' 'Exit'
do
case "$opt" in
'MB Classic') variant="normal" ;;
- 'Tet') variant="tet" ;;
+ 'New Year 2023') variant="tet" ;;
'Valentine 2025') variant="valentine" ;;
'SemiMonet') variant="semimonet" ;;
'30/4-1/5') variant="thongnhatVN" ;;
'19/8-2/9 2025') variant="quockhanh2025" ;;
'Summer 2025') variant="summer2025" ;;
- 'Mid-autumn festival') variant="trungthu" ;;
- 'Noel') variant="noel" ;;
+ 'Mid-autumn festival 2025') variant="trungthu" ;;
+ 'Noel 2024') variant="noel" ;;
'Exit') exit ;;
esac
@@ -27,7 +27,7 @@ do
rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/resources/package_1/res/mipmap-xhdpi
rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/resources/package_1/res/mipmap-xxhdpi
rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/resources/package_1/res/mipmap-xxxhdpi
-
+
info 'Copying new logos to [mbapk_unpacked/res]...'
cp -r -f "$DIRPATH"/mbcpicons/"$variant"/mipmap-hdpi mbapk/mbapk_unpacked/resources/package_1/res
cp -r -f "$DIRPATH"/mbcpicons/"$variant"/mipmap-mdpi mbapk/mbapk_unpacked/resources/package_1/res
diff --git a/MBCPApp/patches/custom_vtapscreen.sh b/MBCPApp/patches/custom_vtapscreen.sh
new file mode 100644
index 0000000..765ff29
--- /dev/null
+++ b/MBCPApp/patches/custom_vtapscreen.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+# PATCHNAME: Custom VTAP screen
+# MAXVER:
+# MINVER: 6.4.52
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+cp -f 'blob_patches/customvtap/custom_vtapdialog_activity.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/layout/activity_vgfull_screen_dialog.xml'
diff --git a/MBCPApp/patches/disable_membership.sh b/MBCPApp/patches/disable_membership.sh
index 06ddedd..5f46067 100644
--- a/MBCPApp/patches/disable_membership.sh
+++ b/MBCPApp/patches/disable_membership.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-# PATCHNAME: Disable MB Membership
-# MAXVER: 67
+# PATCHNAME: Disable MB Membership
+# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
diff --git a/MBCPApp/patches/fix_tian37.sh b/MBCPApp/patches/fix_tian37.sh
new file mode 100644
index 0000000..bb71130
--- /dev/null
+++ b/MBCPApp/patches/fix_tian37.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+# PATCHNAME: Tian37 Fix
+# MAXVER:
+# MINVER: 6.4.85
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+sed_libtian37 's|/proc/mountsb7/proc/fs/jbd2/| |'
+sed_libtian37 's|com.rifsxd.ksunext| |'
+sed_libtian37 's|/proc/fs/jbd2/loop*8 2>/dev/null| |'
+sed_libtian37 's|me.weishu.kernelsu| |'
+sed_libtian37 's|/proc/self/maps/| |'
+sed_libtian37 's|/data/adb/modules|/sdcard/Downloads|'
diff --git a/MBCPApp/patches/hide_vtap_root_detection_activity.sh b/MBCPApp/patches/hide_vtap_root_detection_activity.sh
index 859d7e0..417e794 100644
--- a/MBCPApp/patches/hide_vtap_root_detection_activity.sh
+++ b/MBCPApp/patches/hide_vtap_root_detection_activity.sh
@@ -1,26 +1,44 @@
#!/usr/bin/env bash
# PATCHNAME: Hide VTAP root detection activity & dialog
-# MAXVER: 67
+# 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
+if [[ -d mbapk/mbapk_unpacked/smali/classes4/com/vtap/ ]]; then
+ info "VTAP is found on [smali_classes4], Applying!"
+ # 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
+ sed -i 's|Lcom/vtap/MaintenanceActivity;|Lio/flutter/plugins/MainActivity;|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes4/com/vtap/VTapSetupPlugin.smali
+ 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/'
+ # Zygisk detection workaround test
+ sed -i 's|zygisk|giskzy|g' "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libvosWrapperEx.so
+ sed -i 's|zygisk|giskzy|g' "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libvosWrapperEx.so
-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' || /dev/null 2>&1
-rm -f 'mbapk/mbapk_unpacked/smali/classes4/com/vtap/MaintenanceActivity$1.smali' || /dev/null 2>&1
-rm -f 'mbapk/mbapk_unpacked/smali/classes4/com/vkey/android/vguard/VGDialogActivity.smali' || /dev/null 2>&1
-sed -i 's|Lcom/vkey/android/vguard/VGDialogActivity;|Lio/flutter/plugins/MainActivity;|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes4/com/vkey/android/dy.smali || /dev/null 2>&1
-# 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/' || /dev/null 2>&1
-cp -f 'blob_patches/bypass_rootold/VGThreatAppInfo.smali' 'mbapk/mbapk_unpacked/smali/classes4/com/vkey/android/vguard/model/' || /dev/null 2>&1
-cp -f 'blob_patches/bypass_rootold/VGThreatResponse.smali' 'mbapk/mbapk_unpacked/smali/classes4/com/vkey/android/vguard/model/' || /dev/null 2>&1
-# Adapt with v6.4.62+
-cp -f 'blob_patches/bypass_rootold/BasicThreatInfo.smali' 'mbapk/mbapk_unpacked/smali/classes3/com/vkey/android/internal/vguard/engine/' || /dev/null 2>&1
-cp -f 'blob_patches/bypass_rootold/VGThreatAppInfo.smali' 'mbapk/mbapk_unpacked/smali/classes3/com/vkey/android/vguard/model/'
-cp -f 'blob_patches/bypass_rootold/VGThreatResponse.smali' 'mbapk/mbapk_unpacked/smali/classes3/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'
-sed -i 's|invoke-virtual {v5, v12}, Lcom/vkey/android/vguard/model/VGThreatResponse;->setUsingLegacyMessage(Z)V| |g' 'mbapk/mbapk_unpacked/smali/classes3/com/vkey/android/eg.smali'
+ # 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'
+else
+ info "VTAP is not found on [smali_classes4], ignore copying!"
+fi
+
+if [[ -d mbapk/mbapk_unpacked/smali/classes3/com/vtap ]]; then
+ info "VTAP is found on [smali_classes3], Applying!"
+ # Adapt with v6.4.62+
+ cp -f 'blob_patches/bypass_rootold/BasicThreatInfo.smali' 'mbapk/mbapk_unpacked/smali/classes3/com/vkey/android/internal/vguard/engine/'
+ cp -f 'blob_patches/bypass_rootold/VGThreatAppInfo.smali' 'mbapk/mbapk_unpacked/smali/classes3/com/vkey/android/vguard/model/'
+ cp -f 'blob_patches/bypass_rootold/VGThreatResponse.smali' 'mbapk/mbapk_unpacked/smali/classes3/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/classes3/com/vkey/android/eg.smali'
+else
+ info "VTAP is not found on [smali_classes3], ignore copying!"
+ warn "Something wrong here! [smali_classes3] should contains VTAP !!!"
+ warn "Try to unpack app again !"
+ exit 1
+fi
diff --git a/MBCPApp/patches/legacy_hide_vtap.sh b/MBCPApp/patches/legacy_hide_vtap.sh
index 5780314..131fd1a 100644
--- a/MBCPApp/patches/legacy_hide_vtap.sh
+++ b/MBCPApp/patches/legacy_hide_vtap.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# PATCHNAME: Legacy hide VTAP activity & dialog
-# MAXVER: 67
+# MAXVER:
# MINVER:
# shellcheck disable=SC1091,SC2016
diff --git a/MBCPApp/patches/modify_app_theme.sh b/MBCPApp/patches/modify_app_theme.sh
index 2be0d23..65e8613 100644
--- a/MBCPApp/patches/modify_app_theme.sh
+++ b/MBCPApp/patches/modify_app_theme.sh
@@ -5,23 +5,35 @@
# 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' 'Mid-autumn festival' 'Exit'
-do
- case "$opt" in
- 'MBCP SemiPriority')
- info 'Moving [priority] folder...'
- cp -r 'mbapk/mbapk_unpacked/root/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/root/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/root/assets/flutter_assets/assets/svgs/'
- info 'Copying [welcom_img_eMbee.webp]...'
- cp -f 'blob_patches/semipriority/welcom_img_eMbee.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+prioritylogo() {
+ if [ -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/a_logo_img_addon.webp' ]
+then
+ warn "App newer than v6.4.79+ ! Using enforced logo instead"
+ info "Copying [ic_logo_mb_text_enforced.svg]..."
+ cp -f 'blob_patches/semipriority/ic_logo_mb_text_enforced.svg' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/svgs/ic_logo_mb_text.svg'
+else
+ info 'Copying [ic_logo_mb_text.svg]...'
+ cp -f 'blob_patches/semipriority/ic_logo_mb_text.svg' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/svgs/'
+fi
+}
+iszdefend
+PS3='Select themes : '
+select opt in 'MBCP SemiPriority' 'MBCP MBClassic' 'Noel 2024' 'Tre trung' 'Mid-autumn festival' 'Viet Nam' 'Exit'; do
+ case "$opt" in
+ 'MBCP SemiPriority')
+ info 'Moving [priority] folder...'
+ cp -r 'mbapk/mbapk_unpacked/root/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/root/assets/flutter_assets/assets/images/dynamic/base'
+ prioritylogo
+ info 'Copying [welcom_img_eMbee.webp]...'
+ cp -f 'blob_patches/semipriority/welcom_img_eMbee.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+
+ cat mbapk/mbapk_unpacked/root/lib/arm64-v8a/libapp.so | grep -a -oH filestatic >/dev/null 2>&1 && demopriority
+ demopriority() {
# Modify the demo screen
info 'Modifying demo screenshot...'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/module/onboarding/welcome/welcom_img_demoImage01.png|https://gitlab.com/-/project/56341767/uploads/1616c32f26051152de0ee7e60742c47b/priority1.png?ref=mbcpappgit|g'
@@ -33,12 +45,12 @@ do
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/module/onboarding/welcome/welcom_img_demoImage04.png|https://gitlab.com/-/project/56341767/uploads/7bd2d759bb1f2430016e272e27ceb72c/priority4.png?ref=mbcpappgit|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/module/onboarding/welcome/welcom_img_demoImage05.png|https://gitlab.com/-/project/56341767/uploads/7f5a42716cc32b0f9db78076c15d1cfa/priority5.png?ref=mbcpappgit|g'
+ }
- info 'Cleaning...'
- rm -rf 'blob_patches/semipriority/priority'
- echo "Patch applied by MBCPApp Patcher on $(uname -s -r) with commit : $(git rev-parse --short HEAD) at $(date)." > "mbapk/mbapk_unpacked/root/assets/mbcp_info/semipriority_theme.inf"
- good "Applied [MBCP SemiPriority] theme."
-
+ info 'Cleaning...'
+ rm -rf 'blob_patches/semipriority/priority'
+ echo "Patch applied by MBCPApp Patcher on $(uname -s -r) with commit : $(git rev-parse --short HEAD) at $(date)." >"mbapk/mbapk_unpacked/root/assets/mbcp_info/semipriority_theme.inf"
+ good "Applied [MBCP SemiPriority] theme."
;;
'Mid-autumn festival')
@@ -62,46 +74,51 @@ do
cp -f 'blob_patches/trungthu_theme/bill_background_gold.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
cp -f 'blob_patches/trungthu_theme/coreBanking_img_successBackground.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
cp -f 'blob_patches/trungthu_theme/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
-
+
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/onboarding/onboarding_illus_a80.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/onboarding/onboarding_img_a80Banner.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/onboarding/onboarding_img_a80Code.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/onboarding/onboarding_bg_a80Landing.webp'
- sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_thumbnail_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/227ca0fc0dd1b5b3973690c3f9031c27/thumb.png?app=mbcp11|g'
- sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenLoading_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/27f934ed3f55c3214185bc193cfdfe2b/preview1.png?app=mbcpapp|g'
- sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenLogin_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/4f5f5398f57ce629b195f0fa6eb21f2a/preview2.png?ref=mbcp1|g'
- sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenHome_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/b0b35d05a0752b6eec0dd19d50f15afd/preview3.png?ref=mbcp|g'
- sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenSuccess_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/c61050db4674a181978b6f868c100aa6/preview4.png?ref=mbcpapp|g'
- sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenShare_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/2bd471b0b9ef7f96b05020bb4af304ed/preview5.png?ref=mbcp1|g'
- echo "Patch applied by MBCPApp Patcher on $(uname -s -r) with commit : $(git rev-parse --short HEAD) at $(date)." > "mbapk/mbapk_unpacked/root/assets/mbcp_info/midautumn_theme.inf"
- good "Applied [Mid-autumn festival] theme."
+ cat mbapk/mbapk_unpacked/root/lib/arm64-v8a/libapp.so | grep -a -oH filestatic >/dev/null 2>&1 && demotrungthu
+ demotrungthu() {
+ sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_thumbnail_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/227ca0fc0dd1b5b3973690c3f9031c27/thumb.png?app=mbcp11|g'
+ sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenLoading_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/27f934ed3f55c3214185bc193cfdfe2b/preview1.png?app=mbcpapp|g'
+ sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenLogin_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/4f5f5398f57ce629b195f0fa6eb21f2a/preview2.png?ref=mbcp1|g'
+ sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenHome_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/b0b35d05a0752b6eec0dd19d50f15afd/preview3.png?ref=mbcp|g'
+ sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenSuccess_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/c61050db4674a181978b6f868c100aa6/preview4.png?ref=mbcpapp|g'
+ sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenShare_quockhanh.png|https://gitlab.com/-/project/56341767/uploads/2bd471b0b9ef7f96b05020bb4af304ed/preview5.png?ref=mbcp1|g'
+ }
+ echo "Patch applied by MBCPApp Patcher on $(uname -s -r) with commit : $(git rev-parse --short HEAD) at $(date)." >"mbapk/mbapk_unpacked/root/assets/mbcp_info/midautumn_theme.inf"
+ good "Applied [Mid-autumn festival] 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/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/mbclassic/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/mbclassic/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/mbclassic/loading_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/mbclassic/login_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/mbclassic/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ '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/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/mbclassic/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/mbclassic/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/mbclassic/loading_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/mbclassic/login_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/mbclassic/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cat mbapk/mbapk_unpacked/root/lib/arm64-v8a/libapp.so | grep -a -oH filestatic >/dev/null 2>&1 && demombclassic
+ demombclassic() {
# Modify theme preview on settings
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_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_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'
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'
@@ -116,46 +133,50 @@ do
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/module/onboarding/welcome/welcom_img_demoImage04.png|https://gitlab.com/-/project/56341767/uploads/76f1288713391966cfc750388f7f47b2/classic4.png?ref=mbcpappgit1|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/module/onboarding/welcome/welcom_img_demoImage05.png|https://gitlab.com/-/project/56341767/uploads/b9063205666549f28fc6c9c0c99e2336/classic5.png?ref=mbcpappgit1|g'
-
- echo "Patch applied by MBCPApp Patcher on $(uname -s -r) with commit : $(git rev-parse --short HEAD) at $(date)." > "mbapk/mbapk_unpacked/root/assets/mbcp_info/mbclassic_theme.inf"
- good 'Applied [MBCP MBClassic] theme.'
+ }
+ echo "Patch applied by MBCPApp Patcher on $(uname -s -r) with commit : $(git rev-parse --short HEAD) at $(date)." >"mbapk/mbapk_unpacked/root/assets/mbcp_info/mbclassic_theme.inf"
+ 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/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/bill_background_gold.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/coreBanking_img_successBackground.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/general_bg_success.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/loading_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/login_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- # New trungthu
- cp -f 'blob_patches/noel/a_background_image.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
- cp -f 'blob_patches/noel/bill_background_gold.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
- cp -f 'blob_patches/noel/coreBanking_img_successBackground.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
- cp -f 'blob_patches/noel/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
- cp -f 'blob_patches/noel/general_bg_success.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
- cp -f 'blob_patches/noel/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
- cp -f 'blob_patches/noel/loading_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
- cp -f 'blob_patches/noel/login_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
- cp -f 'blob_patches/noel/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+ '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/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/bill_background_gold.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/coreBanking_img_successBackground.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/general_bg_success.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/loading_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/login_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ # New trungthu
+ cp -f 'blob_patches/noel/a_background_image.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+ cp -f 'blob_patches/noel/bill_background_gold.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+ cp -f 'blob_patches/noel/coreBanking_img_successBackground.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+ cp -f 'blob_patches/noel/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+ cp -f 'blob_patches/noel/general_bg_success.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+ cp -f 'blob_patches/noel/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+ cp -f 'blob_patches/noel/loading_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+ cp -f 'blob_patches/noel/login_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+ cp -f 'blob_patches/noel/qr_img_ThemeDefalut.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/trungthu'
+
+ ##############
+ cp -f 'blob_patches/noel/a_background_image.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/bill_background_gold.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/coreBanking_img_successBackground.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/general_bg_screenshot.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/general_bg_success.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/homeLanding_bg_main.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/loading_bg_main.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/login_bg_main.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/qr_img_ThemeDefalut.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ # Change theme preview
+ cp -f 'blob_patches/noel/customUI_img_classicMode.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+ cp -f 'blob_patches/noel/customUI_img_classicMode.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
+
+ cat mbapk/mbapk_unpacked/root/lib/arm64-v8a/libapp.so | grep -a -oH filestatic >/dev/null 2>&1 && noel2024lib
+ noel2024lib() {
- ##############
- cp -f 'blob_patches/noel/a_background_image.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/bill_background_gold.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/coreBanking_img_successBackground.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/general_bg_screenshot.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/general_bg_success.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/homeLanding_bg_main.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/loading_bg_main.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/login_bg_main.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/qr_img_ThemeDefalut.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- # Change theme preview
- cp -f 'blob_patches/noel/customUI_img_classicMode.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
- cp -f 'blob_patches/noel/customUI_img_classicMode.webp' 'mbapk/mbapk_unpacked/root/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'
@@ -164,7 +185,7 @@ do
sed_libapp 's|Change Noel |Noel 2024 |g'
# Modify the demo screen
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/module/onboarding/welcome/welcom_img_demoImage01.png|https://gitlab.com/-/project/56341767/uploads/bab657a5c0a9d0c4e0f7ddd5ba5772e9/noel1.png?ref=mbcpappgit1234|g'
-
+
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/module/onboarding/welcome/welcom_img_demoImage02.png|https://gitlab.com/-/project/56341767/uploads/8314efa7352360a84df8ec8315ee587b/noel2.png?ref=mbcpappgit1234|g'
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/module/onboarding/welcome/welcom_img_demoImage03.png|https://gitlab.com/-/project/56341767/uploads/f05f1e2fc54d24d99504141d65a107e8/noel3.png?ref=mbcpappgit1234|g'
@@ -174,9 +195,44 @@ do
sed_libapp 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/module/onboarding/welcome/welcom_img_demoImage05.png|https://gitlab.com/-/project/56341767/uploads/2d78975896a9f640d1f1e5af06fd1922/noel5.png?ref=mbcpappgit1234|g'
warn "You WON'T be able to use other theme than Noel 2024 on app !"
- echo "Patch applied by MBCPApp Patcher on $(uname -s -r) with commit : $(git rev-parse --short HEAD) at $(date)." > "mbapk/mbapk_unpacked/root/assets/mbcp_info/noel2024_theme.inf"
- good "Applied [Noel 2024] theme."
+ }
+ echo "Patch applied by MBCPApp Patcher on $(uname -s -r) with commit : $(git rev-parse --short HEAD) at $(date)." >"mbapk/mbapk_unpacked/root/assets/mbcp_info/noel2024_theme.inf"
+ good "Applied [Noel 2024] theme."
;;
- 'Exit') exit ;;
+ 'Tre trung')
+ info "Applying..."
+ cp -f 'blob_patches/tretrung_theme/login_img_notification.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel/'
+ cp -f 'blob_patches/tretrung_theme/login_img_highlightElement.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+ cp -f 'blob_patches/tretrung_theme/login_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+ cp -f 'blob_patches/tretrung_theme/login_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel/loading_bg_main.webp'
+ cp -f 'blob_patches/tretrung_theme/login_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel/qr_img_ThemeDefalut.webp'
+
+ rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel/customUI_img_noelMode.webp'
+ rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel/a_logo_img_addon.webp'
+
+ cp -f 'blob_patches/tretrung_theme/homeLanding_img_PFM.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+ cp -f 'blob_patches/tretrung_theme/homeLanding_img_assetsReport.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+ cp -f 'blob_patches/tretrung_theme/homeLanding_bg_main.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+ cp -f 'blob_patches/tretrung_theme/general_bg_success.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+ cp -f 'blob_patches/tretrung_theme/general_bg_success.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel/coreBanking_img_successBackground.webp'
+ cp -f 'blob_patches/tretrung_theme/general_bg_success.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel/bill_background_gold.webp'
+ cp -f 'blob_patches/tretrung_theme/general_bg_screenshot.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+ cp -f 'blob_patches/tretrung_theme/cardService_img_cardMKT.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+ cp -f 'blob_patches/tretrung_theme/cardService_bg_cardMKT.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+ cp -f 'blob_patches/tretrung_theme/a_background_image.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/noel'
+
+ ;;
+ 'Viet Nam')
+ [ ! -d "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/tetbinhngo ] && err "This theme is only suitable for app with [tetbinhngo] theme. Current unpacked app does not have it!" && exit 1
+ info "Applying..."
+ rm -rf "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/tetbinhngo/*.webp
+ rm -rf "$DIRPATH"/tmpvn
+ mkdir "$DIRPATH"/tmpvn
+ git clone https://git.disroot.org/mbcp/mb-flutter-themes "$DIRPATH"/tmpvn
+ mv tmpvn/mbstore_theme_original/tuhaovietnam/e0050e73-fc22-4ca8-b1eb-6672ab948c01/images/*.png "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/tetbinhngo/
+ rm -rf tmpvn
+ rename png webp "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/tetbinhngo/*.png
+ ;;
+ 'Exit') exit ;;
esac
done
diff --git a/MBCPApp/patches/noti_ic.sh b/MBCPApp/patches/noti_ic.sh
new file mode 100644
index 0000000..cc15d82
--- /dev/null
+++ b/MBCPApp/patches/noti_ic.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+# PATCHNAME: Proper notification icon
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+res="$DIRPATH/mbapk/mbapk_unpacked/resources/package_1/res/"
+mfs="$DIRPATH/mbapk/mbapk_unpacked/AndroidManifest.xml"
+blob="$DIRPATH/blob_patches/noti_ic/"
+
+cp -r "$blob"/* "$res"
+
+sed -i '0,/type=.font/s|^.*type="font".*| \n&|' "$res"/values/public.xml
+
+sed -i 's|^.*android:name="flutterEmbedding".*| \n \n&|g' "$mfs"
+sed -i 's|^.*com.google.firebase.messaging.FirebaseMessagingRegistrar.*| \n \n \n \n&|g' "$mfs"
diff --git a/MBCPApp/patches/remove_animated_qr_background.sh b/MBCPApp/patches/remove_animated_qr_background.sh
index 69186e0..dece6bf 100644
--- a/MBCPApp/patches/remove_animated_qr_background.sh
+++ b/MBCPApp/patches/remove_animated_qr_background.sh
@@ -7,7 +7,14 @@
info "This will remove animated QR on bottom navigation bar and replace with white background !"
info "Removing animated QR..."
-rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/homeLanding_bg_qrCode.gif'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/homeLanding_bg_qrCode.gif'
+# Adapt with v6.4.77+
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/homeLanding_bg_qrCode.webp'
+
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/root/assets/flutter_assets/assets/images/static'
+# Adapt with v6.4.77+
+cp -f 'blob_patches/qr_white/homeLanding_bg_qrCode.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static'
+# Unknown homeLanding_bg_qrCode
+cp -f 'blob_patches/qr_white/homeLanding_bg_qrCode.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/homeLanding_bg_qrCode.webp'
+
diff --git a/MBCPApp/patches/remove_banner_miniapp.sh b/MBCPApp/patches/remove_banner_miniapp.sh
index 57b23e8..0af60c4 100644
--- a/MBCPApp/patches/remove_banner_miniapp.sh
+++ b/MBCPApp/patches/remove_banner_miniapp.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# PATCHNAME: Remove banners & MiniApp
-# MAXVER: 67
+# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
@@ -37,7 +37,7 @@ rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/pri
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/khien_img_muasam.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/khien_img_offline.webp'
-#
+#
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/banner_transfer_mass.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/banner_transfer_private.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/recap_banner.webp'
diff --git a/MBCPApp/patches/remove_bulitin_fonts.sh b/MBCPApp/patches/remove_bulitin_fonts.sh
index 6bd7f5b..1560629 100644
--- a/MBCPApp/patches/remove_bulitin_fonts.sh
+++ b/MBCPApp/patches/remove_bulitin_fonts.sh
@@ -27,9 +27,10 @@ rm -f 'mbapk/mbapk_unpacked/resources/package_1/res/font/bold.ttf'
rm -f 'mbapk/mbapk_unpacked/resources/package_1/res/font/medium.ttf'
rm -f 'mbapk/mbapk_unpacked/resources/package_1/res/font/regular.ttf'
rm -f 'mbapk/mbapk_unpacked/root/assets/insider.ttf'
-# Placeholder font to fix display issues when open details balance notifications
+rm -rf 'mbapk/mbapk_unpacked/root/assets/font'
+# Placeholder font to fix display issues when open details balance notifications
info "Creating placeholder font..."
-touch 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/fonts/AvertaStdCY-Regular.otf'
+touch 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/fonts/AvertaStdCY-Regular.otf'
# Placeholder to prevent compiling resource fail
touch 'mbapk/mbapk_unpacked/resources/package_1/res/font/avenir_next_bold.ttf'
info 'Copying fix fonts...'
@@ -37,3 +38,9 @@ info 'Copying fix fonts...'
cp -f 'blob_patches/resources/font/bold.ttf' 'mbapk/mbapk_unpacked/resources/package_1/res/font/'
cp -f 'blob_patches/resources/font/medium.ttf' 'mbapk/mbapk_unpacked/resources/package_1/res/font/'
cp -f 'blob_patches/resources/font/regular.ttf' 'mbapk/mbapk_unpacked/resources/package_1/res/font/'
+
+# MB Marketplace (MiniApp) fonts
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/packages/market_place/assets/fonts/AvertaStdCy-Bold.ttf'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/packages/market_place/assets/fonts/AvertaStdCY-Regular.ttf'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/packages/market_place/assets/fonts/AvertaStdCy-Semibold.ttf'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/packages/market_place/assets/fonts/Montserrat-Medium.ttf'
diff --git a/MBCPApp/patches/remove_custompfp.sh b/MBCPApp/patches/remove_custompfp.sh
index 8cc6ddf..e98b6f0 100644
--- a/MBCPApp/patches/remove_custompfp.sh
+++ b/MBCPApp/patches/remove_custompfp.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-# PATCHNAME: Remove custom profile picture
-# MAXVER: 67
+# PATCHNAME: Remove custom profile picture
+# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
diff --git a/MBCPApp/patches/remove_embee.sh b/MBCPApp/patches/remove_embee.sh
index 1990d75..9bd24d8 100644
--- a/MBCPApp/patches/remove_embee.sh
+++ b/MBCPApp/patches/remove_embee.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# PATCHNAME: Remove eMBee
-# MAXVER: 67
+# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
@@ -19,8 +19,8 @@ rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/bas
# Priority support
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_page.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_header.webp'
-rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_login.webp'
-# Private support
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_login.webp'
+# Private support
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_page.private.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_login.private.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_header.private.webp'
@@ -31,6 +31,6 @@ rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/bas
# Private support
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_loginSupport.private.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/eMBee_img_loginSupport.webp'
-# Priority support
+# Priority support
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/eMBee_img_headerNew.webp'
rm -f 'mbapk/mbapk_unpacked/root/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
index fca943d..6105470 100644
--- a/MBCPApp/patches/remove_garbage_permission_and_activities.sh
+++ b/MBCPApp/patches/remove_garbage_permission_and_activities.sh
@@ -9,10 +9,10 @@ sed -i 's|android:protectionLevel="signature"|android:protectionLevel="normal"|g
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.vtap.MaintenanceActivity"
manifest_remove "com.mbmobile.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
-manifest_remove "com.vkey.android.vguard.VGDialogActivity"
-manifest_remove "com.vkey.android.vguard.VGFullScreenDialogActivity"
+#manifest_remove "com.vkey.android.vguard.VGDialogActivity"
+#manifest_remove "com.vkey.android.vguard.VGFullScreenDialogActivity"
manifest_remove "com.google.android.play.core.common.PlayCoreDialogWrapperActivity"
manifest_remove "com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"
manifest_remove "com.sec.android.provider.badge.permission.READ"
@@ -36,3 +36,4 @@ manifest_remove "com.android.vending.INSTALL_REFERRER"
manifest_remove "android.adservices.AD_SERVICES_CONFIG"
manifest_remove "android.ext.adservices"
manifest_remove "android.permission.QUERY_ALL_PACKAGES"
+manifest_remove "com.vnpay.ticketlib.Activity.VMB20MainActivity"
diff --git a/MBCPApp/patches/remove_invoke_to_mbshield.sh b/MBCPApp/patches/remove_invoke_to_mbshield.sh
index e9f7a97..c206752 100644
--- a/MBCPApp/patches/remove_invoke_to_mbshield.sh
+++ b/MBCPApp/patches/remove_invoke_to_mbshield.sh
@@ -1,19 +1,37 @@
#!/usr/bin/env bash
# PATCHNAME: Remove invoke to mbshield
-# MAXVER: 67
-# MINVER:
+# MAXVER:
+# MINVER: 6.4.21
# 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'
+if [[ -f mbapk/mbapk_unpacked/smali/classes4/io/flutter/plugins/MainActivity.smali ]]; then
+ info "Flutter found on classes4 !!"
+ 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'
+ for i in {0..83}; do
+ case $i in
+ *) rm -f "mbapk/mbapk_unpacked/smali/classes5/mbshield/EP$i.smali" ;;
+ esac
+ done
+else
+ warn "Flutter not found on classes4, ignoring..."
+fi
+
+# Newer dex location (found on v6.4.82+, might present since v6.4.70+)
+if [[ -f mbapk/mbapk_unpacked/smali/classes3/io/flutter/plugins/MainActivity.smali ]]; then
+ info "Flutter found on classes3 !!"
+ rm -f 'mbapk/mbapk_unpacked/smali/classes3/io/flutter/plugins/MainAcitivity.smali'
+ rm -f 'mbapk/mbapk_unpacked/smali/classes3/io/flutter/plugins/MBBHomeWidgetQR.smali'
+ cp -f 'blob_patches/noinvoke/MainActivity.smali' 'mbapk/mbapk_unpacked/smali/classes3/io/flutter/plugins'
+ cp -f 'blob_patches/noinvoke/MBBHomeWidgetQR.smali' 'mbapk/mbapk_unpacked/smali/classes3/io/flutter/plugins'
+else
+ warn "Couldn't find Flutter on both classes3 & classes4! Ignoring..."
+fi
+
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
+# This is moved to classes4 but EP*.smali no longer exist since v6.4.70+
diff --git a/MBCPApp/patches/remove_mbai.sh b/MBCPApp/patches/remove_mbai.sh
new file mode 100644
index 0000000..1565d30
--- /dev/null
+++ b/MBCPApp/patches/remove_mbai.sh
@@ -0,0 +1,73 @@
+#!/usr/bin/env bash
+# PATCHNAME: Remove MB AI Bullshit resources
+# MAXVER:
+# MINVER: 6.4.73
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+enforcemb() {
+ if [ -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/customize_img_changeImageContent.webp' ]
+then
+ info "App newer than v6.4.84 ! Using new search logo!"
+ # Replace MB AI search button with normal search button
+ cp -f 'blob_patches/searchicon/search_718.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_mbai_textLogo.webp'
+ cp -f 'blob_patches/searchicon/search_718.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_mbai_textLogo.private.webp'
+ # Adapt new changes with v6.4.75
+ cp -f 'blob_patches/searchicon/search_718.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_search.webp'
+ cp -f 'blob_patches/searchicon/search_718.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_search.private.webp'
+else
+ info "App older than v6.4.83 ! Using old search logo!"
+ # Replace MB AI search button with normal search button
+ cp -f 'blob_patches/searchicon/search.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_mbai_textLogo.webp'
+ cp -f 'blob_patches/searchicon/search.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_mbai_textLogo.private.webp'
+ # Adapt new changes with v6.4.75
+ cp -f 'blob_patches/searchicon/search.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_search.webp'
+ cp -f 'blob_patches/searchicon/search.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_search.private.webp'
+fi
+}
+
+# Currently not possible to completely remove and prevent users from use AI features in MB app.
+# So we remove it's resources instead, so the search icon won't show AI things
+# Need to implement more ASAP in the future
+
+# Mass/Private users
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_mbai_short_white.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_mbai_textLogo.private.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_mbai_textLogo.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_paste.private.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_paste.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_paste2Pay.private.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_paste2Pay.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_search.private.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_search.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/coreBanking_illus_p2p.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/coreBanking_illus_p2p.private.webp'
+# Tet binh ngo
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/tetbinhngo/coreBanking_illus_p2p.webp'
+
+# Priority users
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/mbai_img_paste.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/mbai_img_paste2Pay.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/mbai_img_search.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/coreBanking_illus_p2p.webp'
+# New resources
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/mbai_img_paste.priority.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/mbai_img_paste2Pay.priority.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority/mbai_img_search.priority.webp'
+# New resources
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_paste.priority.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_paste2Pay.priority.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_search.priority.webp'
+
+# Other stuff
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/base/partner/img_mbai_short.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/base/partner/img_mbai_short_white.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_mbai_textOnly_white.webp'
+# Temp solution for forced MB AI assistant in v6.4.91+ (A/B testing from MB side, not yet in production)
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/ai_assistant'
+
+# Call the enforcemb function
+enforcemb
+
+# Adapt with new animated search AI logo (v6.4.77+)
+cp -f 'blob_patches/searchicon/search.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/search_ai.gif'
diff --git a/MBCPApp/patches/remove_new_root_detection.sh b/MBCPApp/patches/remove_new_root_detection.sh
index 4886a4f..4635343 100644
--- a/MBCPApp/patches/remove_new_root_detection.sh
+++ b/MBCPApp/patches/remove_new_root_detection.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# PATCHNAME: Remove new root detection
-# MAXVER: 59
+# MAXVER: 6.4.59
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
diff --git a/MBCPApp/patches/remove_new_zimperium_check.sh b/MBCPApp/patches/remove_new_zimperium_check.sh
index c6c06f2..c752260 100644
--- a/MBCPApp/patches/remove_new_zimperium_check.sh
+++ b/MBCPApp/patches/remove_new_zimperium_check.sh
@@ -1,11 +1,14 @@
#!/usr/bin/env bash
-# PATCHNAME: Remove new zimperium check
-# MAXVER: 67
-# MINVER: 59
+# PATCHNAME: Remove new zimperium check
+# MAXVER:
+# MINVER: 6.4.59
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
echo "Removing checksum from provider..."
+ if [[ -f mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali ]]; then
+ # for v6.4.48~v6.4.65
+ info "Patching [UnderlyingVcl.smali]..."
sed -i 's|e1a14adc915d7ad159edf2668b0dfcb359cf86538642de0e425d027f66eb07b2||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
sed -i 's|ca168a2ad00a92b8010d6801c3ca43e6df9f3701f084f6864399eaa4bbfaf56d||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
sed -i 's|5c9a139e42e6e6032ddbc1092af9831b8142e4e5ae89700fc7828f5bd62e1671||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
@@ -15,72 +18,82 @@
sed -i 's|50f8a8f6843881889f49619099e1af4e2948b05944ea1c83655f372c893b3f2a||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
sed -i 's|fc014a5752b8aca5f616e4fe62674e767d086f3a759acc9eb3c21cf7919947a4||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
sed -i 's|05b05535271457792466296947316ccaefb5bfac8972a9b0e0c64fa02972b031||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
+ # Moving libraries target
+ sed -i 's|designersactivists |weneedfreedom|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
+ # Adapt with v6.4.66
+ sed -i 's|estimateddistributions |weneedfreedom|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
+else
+ warn "[UnderlyingVcl.smali] not found! skipping"
+fi
# Adapt with v6.4.67+
+ if [[ -f mbapk/mbapk_unpacked/smali/classes/androidx/AmericansEhv.smali ]]; then
+ info "Patching [AmericansEhv.smali]..."
sed -i 's|262ccf104bca70cf923a9a6f1c6b93de88d6727407bc2940b87cb1d09aa44d74||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/AmericansEhv.smali
sed -i 's|180a673c58af3270778c94b8265b2c845ed6456bbdcd53fa14768944d7c428cf||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/AmericansEhv.smali
sed -i 's|e72c2bddc714ad4815bc87dc917c74b2e2de513d26ad9271c0433702e26c7a64||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/AmericansEhv.smali
sed -i 's|9a037f2477f411df5ef8d74ec365256afcd72fe5a823efacec93642e0c09552f||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/AmericansEhv.smali
- # Moving libraries target
- sed -i 's|designersactivists |weneedfreedom|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
- # Adapt with v6.4.66
- sed -i 's|estimateddistributions |weneedfreedom|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
- # Adapt with v6.4.67+
sed -i 's|humanargued |cuynuisaloser|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/AmericansEhv.smali
+else
+ warn "[AmericansEhv.smali] not found! skipping"
+fi
+ # Adapt with v6.4.72+
+ if [[ -f mbapk/mbapk_unpacked/smali/classes/androidx/FailsXvd.smali ]]; then
+ info "Patching [FailsXvd.smali]..."
+ sed -i 's|045823e02a8a56f3ed4b183902f6fbd4a757c74c0e4489dd0a8244f9f2dcb43f||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/FailsXvd.smali
+ sed -i 's|08140e0adea76ad142d792cc0c5e9c2ad7384ad239a0f38cf5572a043cee09eb||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/FailsXvd.smali
+ sed -i 's|7773dd518920b751ba05516228d75d71475271d867b9fd503ce8bbfa558977df||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/FailsXvd.smali
+ sed -i 's|8e565ee8153571685dbbfb1812ff4eab159108973d839d7141535bf57592e420||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/FailsXvd.smali
+ sed -i 's|closestmadagascar |ilovecpp|g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/FailsXvd.smali
+else
+ warn "[FailsXvd.smali] not found! skipping"
+fi
- echo "Removing [libtoolChecker.so]..."
+ info "Removing [libtoolChecker.so]..."
rm -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libtoolChecker.so'
rm -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libtoolChecker.so'
- echo "Removing [libvvb2060.so]..."
+ info "Removing [libvvb2060.so]..."
rm -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libvvb2060.so'
rm -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libvvb2060.so'
- echo "Patching [libdesignersactivists.so]..."
+
+ if [[ -f mbapk/mbapk_unpacked/root/lib/arm64-v8a/libdesignersactivists.so ]]; then
+ info "Patching [libdesignersactivists.so]..."
sed -i 's|com.zimperium|app.dontfixew|g' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libdesignersactivists.so'
sed -i 's|detection|freedom..|g' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libdesignersactivists.so'
- echo "Moving from [libdesignersactivists.so] to [libweneedfreedom.so]..."
+ info "Moving from [libdesignersactivists.so] to [libweneedfreedom.so]..."
mv 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libdesignersactivists.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libweneedfreedom.so'
mv 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libdesignersactivists.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libweneedfreedom.so'
+ info "Creating placeholder lib"
+ # Prevent "MB detected that the device is currently not secure for peforming transactions" dialog
+ rm -rf temp
+ mkdir temp
+ cp 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libweneedfreedom.so' 'temp/'
+ mv 'temp/libweneedfreedom.so' 'temp/libdesignersactivists.so'
+ cp -f 'temp/libdesignersactivists.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libdesignersactivists.so'
+ rm -rf temp
+ mkdir temp
+ cp 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libweneedfreedom.so' 'temp/'
+ mv 'temp/libweneedfreedom.so' 'temp/libdesignersactivists.so'
+ cp -f 'temp/libdesignersactivists.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libdesignersactivists.so'
+ rm -rf temp
+else
+ warn "[libdesignersactivists.so] not found! skipping"
+fi
+
# Adapt with v6.4.66
- echo "Patching [libestimateddistributions.so]..."
+ if [[ -f mbapk/mbapk_unpacked/root/lib/arm64-v8a/libestimateddistributions.so ]]; then
+ info "Patching [libestimateddistributions.so]..."
sed -i 's|com.zimperium|app.dontfixew|g' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libestimateddistributions.so'
sed -i 's|detection|freedom..|g' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libestimateddistributions.so'
sed -i 's|com.zimperium|app.dontfixew|g' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libestimateddistributions.so'
sed -i 's|detection|freedom..|g' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libestimateddistributions.so'
- echo "Moving from [libestimateddistributions.so] to [libweneedfreedom.so]..."
+ info "Moving from [libestimateddistributions.so] to [libweneedfreedom.so]..."
mv 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libestimateddistributions.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libweneedfreedom.so'
mv 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libestimateddistributions.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libweneedfreedom.so'
- # Adapt with v6.4.67
- echo "Patching [libhumanargued.so]... "
- sed -i 's|com.zimperium|app.dontfixew|g' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libhumanargued.so'
- sed -i 's|detection|freedom..|g' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libhumanargued.so'
-
- sed -i 's|com.zimperium|app.dontfixew|g' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libhumanargued.so'
- sed -i 's|detection|freedom..|g' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libhumanargued.so'
-
- echo "Moving from [libhumanargued.so] to [libcuynuisaloser.so]..."
- mv 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libhumanargued.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcuynuisaloser.so'
- mv 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libhumanargued.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libcuynuisaloser.so'
-
- # Fixes EKYC3002-MS6998 (DF16246.6) error on devices with randomized apps
- sed -i 's|||g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
- # Prevent "MB detected that the device is currently not secure for peforming transactions" dialog
- echo "Creating placeholder lib"
- rm -rf temp
- mkdir temp
- cp 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libweneedfreedom.so' 'temp/'
- mv 'temp/libweneedfreedom.so' 'temp/libdesignersactivists.so'
- cp -f 'temp/libdesignersactivists.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libdesignersactivists.so'
- rm -rf temp
- mkdir temp
- cp 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libweneedfreedom.so' 'temp/'
- mv 'temp/libweneedfreedom.so' 'temp/libdesignersactivists.so'
- cp -f 'temp/libdesignersactivists.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libdesignersactivists.so'
- rm -rf temp
-
- echo "Creating placeholder lib"
+ info "Creating placeholder lib"
rm -rf temp
mkdir temp
cp 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libweneedfreedom.so' 'temp/'
@@ -92,8 +105,24 @@
mv 'temp/libweneedfreedom.so' 'temp/libestimateddistributions.so'
cp -f 'temp/libestimateddistributions.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libestimateddistributions.so'
rm -rf temp
+else
+ warn "[libestimateddistributions.so] not found! skipping"
+fi
- echo "Creating placeholder lib"
+ # Adapt with v6.4.67
+ if [[ -f mbapk/mbapk_unpacked/root/lib/arm64-v8a/libestimateddistributions.so ]]; then
+ info "Patching [libhumanargued.so]... "
+ sed -i 's|com.zimperium|app.dontfixew|g' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libhumanargued.so'
+ sed -i 's|detection|freedom..|g' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libhumanargued.so'
+
+ sed -i 's|com.zimperium|app.dontfixew|g' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libhumanargued.so'
+ sed -i 's|detection|freedom..|g' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libhumanargued.so'
+
+ info "Moving from [libhumanargued.so] to [libcuynuisaloser.so]..."
+ mv 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libhumanargued.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcuynuisaloser.so'
+ mv 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libhumanargued.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libcuynuisaloser.so'
+
+ info "Creating placeholder lib"
rm -rf temp
mkdir temp
cp 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcuynuisaloser.so' 'temp/'
@@ -105,3 +134,43 @@
mv 'temp/libcuynuisaloser.so' 'temp/libhumanargued.so'
cp -f 'temp/libhumanargued.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libhumanargued.so'
rm -rf temp
+
+else
+ warn "[libhumanargued.so] not found! skipping"
+fi
+
+ # Adapt with v6.4.72+
+ if [[ -f mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so ]]; then
+ info "Patching [libclosestmadagascar.so]... "
+ sed -i 's|com.zimperium|app.dontfixew|g' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so'
+ sed -i 's|detection|freedom..|g' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so'
+
+ sed -i 's|com.zimperium|app.dontfixew|g' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so'
+ sed -i 's|detection|freedom..|g' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so'
+
+ info "Moving from [libclosestmadagascar.so] to [libilovecpp.so]..."
+ mv 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libilovecpp.so'
+ mv 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libilovecpp.so'
+
+ info "Creating placeholder lib"
+ rm -rf temp
+ mkdir temp
+ cp 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libilovecpp.so' 'temp/'
+ mv 'temp/libilovecpp.so' 'temp/libclosestmadagascar.so'
+ cp -f 'temp/libclosestmadagascar.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so'
+ rm -rf temp
+ mkdir temp
+ cp 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libilovecpp.so' 'temp/'
+ mv 'temp/libilovecpp.so' 'temp/libclosestmadagascar.so'
+ cp -f 'temp/libclosestmadagascar.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so'
+ rm -rf temp
+
+else
+ warn "[libclosestmadagascar.so] not found! skipping"
+fi
+ # Fixes EKYC3002-MS6998 (DF16246.6) error on devices with randomized apps
+ info "Patching [AndroidManifest.xml]"
+ sed -i 's|||g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+
+
+
diff --git a/MBCPApp/patches/remove_staticbanner.sh b/MBCPApp/patches/remove_staticbanner.sh
new file mode 100644
index 0000000..005ce4f
--- /dev/null
+++ b/MBCPApp/patches/remove_staticbanner.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+# PATCHNAME: Remove some static banners
+# MAXVER:
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.private.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/explore_img_defaultBanner.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/exploreLanding_img_background.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_chatGPT.junior.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_banner.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.private.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_Kosei.junior.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_thumbnail_hotdeal5.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/theme_bg_cuaHang.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/theme_bg_cuaHang.private.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/welcom_img_background.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/img_background_financial.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/background/sub_bg_hoiVien.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/moneyChat_img*.webp'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/background_moneyChat_base.webp'
diff --git a/MBCPApp/patches/remove_useless_lib.sh b/MBCPApp/patches/remove_useless_lib.sh
index 8e50731..7199478 100644
--- a/MBCPApp/patches/remove_useless_lib.sh
+++ b/MBCPApp/patches/remove_useless_lib.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# PATCHNAME: Remove useless libraries
-# MAXVER:
-# MINVER: 68
+# MAXVER:
+# MINVER: 6.4.68
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
diff --git a/MBCPApp/patches/remove_vnpay_vmb20.sh b/MBCPApp/patches/remove_vnpay_vmb20.sh
index 80315a6..e8d1e20 100644
--- a/MBCPApp/patches/remove_vnpay_vmb20.sh
+++ b/MBCPApp/patches/remove_vnpay_vmb20.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# PATCHNAME: Remove VNPAY VMB20
# MAXVER:
-# MINVER: 56
+# MINVER: 6.4.56
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
@@ -99,4 +99,17 @@ manifest_remove 'android:name="_vemaybay_payment_paylater"'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/base/partner/img_vnpay.webp'
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/base/partner/img_vna.webp'
+
+find 'mbapk/mbapk_unpacked/resources/package_1/res/' -name 'vmb*' -delete
+find 'mbapk/mbapk_unpacked/resources/package_1/res/' -name 'vna*' -delete
+find 'mbapk/mbapk_unpacked/resources/package_1/res/' -name 'vn*' -delete
+find 'mbapk/mbapk_unpacked/resources/package_1/res/' -name 'flight*' -delete
+find 'mbapk/mbapk_unpacked/resources/package_1/res/' -name 'item*' -delete
+find 'mbapk/mbapk_unpacked/resources/package_1/res/' -name 'activity_flight*' -delete
+find 'mbapk/mbapk_unpacked/resources/package_1/res/' -name 'activity_vna*' -delete
+
+
+
+
+
#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
index e631ab6..45fad9e 100644
--- a/MBCPApp/patches/remove_vpn_detection.sh
+++ b/MBCPApp/patches/remove_vpn_detection.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# PATCHNAME: Remove VPN detection
-# MAXVER: 67
+# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
diff --git a/MBCPApp/patches/restore_old_lib_682.sh b/MBCPApp/patches/restore_old_lib_682.sh
index 43a6dd8..b7ec821 100644
--- a/MBCPApp/patches/restore_old_lib_682.sh
+++ b/MBCPApp/patches/restore_old_lib_682.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
-# PATCHNAME: Restore old 682 lib
-# MAXVER: 63
-# MINVER: 61
+# PATCHNAME: Restore old 682 lib
+# MAXVER: 6.4.63
+# MINVER: 6.4.61
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
@@ -10,13 +10,13 @@ echo "Downloading v6.4.61 apks..."
wget https://github.com/kongu2k8-svg/mbapk/releases/download/mb/embee_v6.4.61_682_arm64-v8a_armeabi-v7a.apks -q --show-progress
mv *.apks old682/
echo "Unpacking..."
-java -jar tools/apkeditor.jar m -i old682/*.apks
+java -jar tools/apkeditor.jar m -i old682/*.apks
java -jar tools/apktool.jar d old682/*.apk -o old682/unpacked -j$(nproc)
-mv old682/unpacked/lib/arm64-v8a/libapp.so mbapk/mbapk_unpacked/root/lib/arm64-v8a/
-mv old682/unpacked/lib/armeabi-v7a/libapp.so mbapk/mbapk_unpacked/root/lib/armeabi-v7a/
-mv old682/unpacked/lib/arm64-v8a/libflutter.so mbapk/mbapk_unpacked/root/lib/arm64-v8a/
-mv old682/unpacked/lib/armeabi-v7a/libflutter.so mbapk/mbapk_unpacked/root/lib/armeabi-v7a/
-echo "Cleaning..."
+mv old682/unpacked/lib/arm64-v8a/libapp.so mbapk/mbapk_unpacked/root/lib/arm64-v8a/
+mv old682/unpacked/lib/armeabi-v7a/libapp.so mbapk/mbapk_unpacked/root/lib/armeabi-v7a/
+mv old682/unpacked/lib/arm64-v8a/libflutter.so mbapk/mbapk_unpacked/root/lib/arm64-v8a/
+mv old682/unpacked/lib/armeabi-v7a/libflutter.so mbapk/mbapk_unpacked/root/lib/armeabi-v7a/
+echo "Cleaning..."
rm -rf old682
echo "WARNING : Any changes to [libapp.so] like Autopatch strings are reverted, please apply again if you want to !"
diff --git a/MBCPApp/patches/revert_old_embee.sh b/MBCPApp/patches/revert_old_embee.sh
index 48d4ef7..5b69bba 100644
--- a/MBCPApp/patches/revert_old_embee.sh
+++ b/MBCPApp/patches/revert_old_embee.sh
@@ -24,3 +24,10 @@ cp -f 'blob_patches/revert_old_eMBee/eMBee_img_loginSupport.webp' 'mbapk/mbapk_u
cp -f 'blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.private.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base'
cp -f 'blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/priority'
+# Replace MB Junior avatars
+cp -f 'blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/junior_img_avatarBoy.webp'
+cp -f 'blob_patches/revert_old_eMBee/homeLanding_img_avatarDefault.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/junior_img_avatarGirl.webp'
+
+# Restore old Bee rich logo
+cp -f 'blob_patches/revert_old_eMBee/img_beerich.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/base/partner/img_beerich.webp'
+cp -f 'blob_patches/revert_old_eMBee/img_beerich.webp' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/base/partner/img_wealthCoach.webp'
diff --git a/MBCPApp/patches/spoof_appver.sh b/MBCPApp/patches/spoof_appver.sh
index c0969d7..e4d77c4 100644
--- a/MBCPApp/patches/spoof_appver.sh
+++ b/MBCPApp/patches/spoof_appver.sh
@@ -1,15 +1,85 @@
#!/usr/bin/env bash
-# PATCHNAME: Spoof app version to 698
-# MAXVER: 67
-# MINVER:
+# PATCHNAME: Spoof app version
+# MAXVER:
+# MINVER: 6.4.47
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
info "Spoofing app version..."
+
+# v6.5.x
+sed -i 's|6.5.0|6.5.0.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+
+# v6.4.9x
+sed -i 's|6.4.99|6.4.99.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.98|6.4.98.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.97|6.4.97.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.96|6.4.96.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.95|6.4.95.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.94|6.4.94.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.93|6.4.93.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.92|6.4.92.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.91|6.4.91.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.90|6.4.90.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+
+# v6.4.8x
+sed -i 's|6.4.89|6.4.89.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.88|6.4.88.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.87|6.4.87.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.86|6.4.86.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.85|6.4.85.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.84|6.4.84.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.83|6.4.83.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.82|6.4.82.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.81|6.4.81.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.80|6.4.80.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+
+# v6.4.7x
+sed -i 's|6.4.79|6.4.79.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.78|6.4.78.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.77|6.4.77.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.75|6.4.75.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.74|6.4.74.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.73|6.4.73.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.72|6.4.72.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.71|6.4.71.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.70|6.4.70.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+
+# v6.4.6x
+sed -i 's|6.4.69|6.4.69.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.68|6.4.68.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.67|6.4.67.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.66|6.4.66.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.65|6.4.65.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.64|6.4.64.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.63|6.4.63.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.62|6.4.62.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.61|6.4.61.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.60|6.4.60.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+
+# v6.4.5x
+sed -i 's|6.4.59|6.4.59.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.58|6.4.58.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.57|6.4.57.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.56|6.4.56.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.55|6.4.55.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.54|6.4.54.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.53|6.4.53.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.52|6.4.52.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.51|6.4.51.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.50|6.4.50.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+
+# v6.4.4x (no older than v6.4.47 due to the open source codebase started with v6.4.47)
+sed -i 's|6.4.49|6.4.49.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.48|6.4.48.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|6.4.47|6.4.47.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+
+sed -i 's|727|2000|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+sed -i 's|729|2000|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+
sed -i 's|v6.4.66|v6.4.68|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|v6.4.65|v6.4.68|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|v6.4.64|v6.4.68|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|692|698|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|691|698|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|689|698|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
-
diff --git a/MBCPApp/patches/widget_dark.sh b/MBCPApp/patches/widget_dark.sh
index 4a21c44..56d5bfe 100644
--- a/MBCPApp/patches/widget_dark.sh
+++ b/MBCPApp/patches/widget_dark.sh
@@ -1,16 +1,19 @@
#!/usr/bin/env bash
-# PATCHNAME: Change widget background to dark
+# PATCHNAME: Change widget background to dark
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
-echo "Copying dark background..."
+info "Copying dark background..."
cp -f 'blob_patches/widget_dark/bg_4x2.png' 'mbapk/mbapk_unpacked/resources/package_1/res/drawable-xxhdpi/'
cp -f 'blob_patches/widget_dark/bg_4x4.png' 'mbapk/mbapk_unpacked/resources/package_1/res/drawable-xxhdpi/'
-echo "Removing [mbb_home_widget_qr_info.xml]..."
+info "Removing [mbb_home_widget_qr_info.xml]..."
rm -f 'mbapk/mbapk_unpacked/res/xml/mbb_home_widget_qr_info.xml'
-echo "Patching [public.xml]..."
+info "Patching [public.xml]..."
sed -i 's|||g' 'mbapk/mbapk_unpacked/resources/package_1/res/values/public.xml'
-echo "Patching [AndroidManifest.xml]..."
+info "Patching [AndroidManifest.xml]..."
sed -i 's|||g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
+info "Copying fixed widget files..."
+cp -f 'blob_patches/widget_dark/mbb_home_widget_4x4_all.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/layout/'
+cp -f 'blob_patches/widget_dark/arrow.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/drawable/'
diff --git a/MBCPApp/tian37/.gitkeep b/MBCPApp/tian37/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/MBCPApp/vcm1/.gitkeep b/MBCPApp/vcm1/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/README.md b/README.md
index 706a6e7..3db4bec 100644
--- a/README.md
+++ b/README.md
@@ -1,145 +1,235 @@
-# MBCPApp Patcher for MB Bank
+# MBCPApp Patcher for MB Bank (Android)
-
+Lightweight **AI-free, human-written** open source CLI tool for patching MB Bank (Android) app with Flutter framework (v6.4.0+) for rooted users (or ROMs with bulit-in CorePatch). primarily written in Bash, made possible by @cuynu and community in Vietnam.
-Lightweight "open source" tool for patching MB Bank Flutter (Android) app for rooted user, mostly written in Bash, made possible by [Cuynu](https://git.disroot.org/cuynu) without any use of AI.
+
-- Licensed as MIT License : [View license.](https://git.disroot.org/mbcp/mbbpatch/src/branch/mbflutter/LICENSE)
+
-# Notice
-- The reMBCP project on GitHub is the garbage repository, which is [confirmed that it will contains AI-generated code](https://web.archive.org/web/20250927163504/https://github.com/reMBCP/Rembbpatch/issues/2) in the future and even bullying me like a dogshit. Avoid that ugly fork !
-- STOP forking this project and fed to AI-tools as i don't like them. Any forks that is doing this thing is literally slowing down project development !!!
-- PLEASE respect the author code !!!
+
-# DISCLAIMER
-We are not responsible for any illegal action if criminal abuse this patch to do illegal things, since it's originally made for technical users only and not criminal.
+- If you are looking pre-bulit app, here : [MBCP Releases](/mbcp/mbbpatch/releases) | [Install guide](/mbcp/info_en/wiki/mbcpinstall)
+- Coming from GitLab? Go to the main location here to avoid link errors : [Disroot](https://git.disroot.org/mbcp/mbbpatch) | [Selfhost](http://cuynutt.ddns.net/mbcp/mbbpatch)
+- Project FAQ : [Read here](/mbcp/info_en/wiki/faq)
+- Licensed as MIT License.
-## Introduction
-- This project was made to remove or limit annoying features & root detection & accessibility detection that implemented by the development team of "MB Bank" Android app with additional features such as custom themes ability,etc. It's not PoC project.
-- It's probably won't meet FOSS requirements due to containing some proprietary smali code (for example: hide VTAP patch)
-- [MBCP](https://t.me/mbbpatch) are closed source before, and many people don't like it cuz worry about security & privacy issues.
-- In order to support community, we spend days to rewritten `MBCP` patches once again in Bash and open sourced it so you can patch yourself from original app on (Bare metal, not WSL) Linux environment
-- Note : MBCP are "MBBank CorePatch" but shorter and `MBCP` or `MBCPApp` are the same thing as `MBCP`.
+## Introduction
+- Note : "MBCP" / "MBCPApp" = "MBBank CorePatch"
+- MBCP is inspired from [CorePatch](https://github.com/LSPosed/CorePatch) project. Now it can works with [PMPatch](https://github.com/vova7878-modules/PMPatch) too
+- This project was made to remove or limit annoying features & root detection & accessibility detection that is implemented by the development team of "MB Bank" Android app with additional features such as custom themes ability, device font, etc (see more in patches list). **It's not PoC (Proof of Concept) project at all.**
+- [MBCP](https://t.me/mbcposs) are closed source before, and many people don't like it and concern with privacy & security issues
+- In order to support community and allow other devs to improve the project, I spend days to rewritten `MBCP` patches in Bash and open source it so you can patch yourself from original app on Linux or Darwin (macOS) environment. All MBCP pre-bulit releases from v6.4.47+ are all bulit with this open source project with the commit ID at the end of the file name.
-## Proprietary code
-- This project probably won't meet FOSS requirements due to contains proprietary code extracted from MB app that has been modified to bypass something else.
-That applies for following folder :
-- 1. `blob_patches/bypass_apptampering`
-- 2. `blob_patches/noadjust_volume_sekyc`
-- 3. `blob_patches/skip_maintainscreen`
-- 4. `blob_patches/bypass_accessibility_applist`
-- 5. `blob_patches/bypass_rootold`
-- 6. `blob_patches/fix_df16211`
+## Current situation
-- Under `mbsig` directory, its contain MB original dumped signature, which is necessary to make app works after patching process.
-- Everything including that listed above code are all licensed under MIT license, it's can be considered as reverse engineered code :>
+- Project is used to almost DEAD, due to MB's measure to modified dex & libraries from the server-side with GW934 error (`getSHFiles`) when logging in. Luckily, I have a way to bypass the [Zimperium check](/mbcp/mbzdefend-fix), that's why the project still alive till nowadays with other patches.
+
+- More information about GW934 measure :
+
+- The GW934 error is known enabled from the server-side (v6.4.64 works since days 0, but return with GW934 error after 11 days), it requires client (MBCP/MBBank) app to sent the SHA256 hash of 3 app libraries `libapp.so` | `libmbshield.so` | `libclosestmadagascar.so` and all of 5 dex files (classes1->5.dex) to the server for comparing hash, and if it doesn't match, the server will prevent the app from logging in with GW934 error (MB has detected that your device is not secure for performing transactions. Please uninstall the App and reinstall it from the app store). The other function (eg: DigitalOTP) that works without logging in still works.
+
+
+## DISCLAIMER
+- I'm not responsible if someone abuse this patch to do illegal things, since it's originally made for technical or well-known users only.
+
+## Documentation
+
+- [MBCPApp Patcher Documentation](/mbcp/mbbpatch/src/branch/mbflutter/docs)
+
+## Requirements & Usage & How-to use patcher
+- Follow usage docs here : [Patcher Usage](/mbcp/mbbpatch/wiki/patcher-usage.-)
## Patches list :
+
+- Important notice (must read!) :
+
+
+
+> [!IMPORTANT]
+> These patches can be applied for current/newer app version, but the app will refuse to login with `GW934` error :
+> - Remove invoke to mbshield
+>
+> - Block adjust volume on sEKYC
+>
+> - Remove new zimperium check
+>
+> - Hide VTAP root detection activity & dialog
+>
+> It used to works with v6.4.62 and lower (v6.4.63 up to v6.4.66 with workaround).
+>
+> Dex and libraries checksum when logging in seems to be added since v6.4.63+, and is likely implemented from the library side.
+>
+> At the current situation, the workaround for it is still unknown :(
+>
+> Except for testing, those mentioned patches shouldn't be used for any normal use cases. So for now, avoid it when patching app.
+>
+
+
+
+### [📦 `MB Bank : com.mbmobile`](https://t.me/embeeapks)
+
+
+| ⚙️ Patch | 📜 Description | 🏦 Suggested version |
+|:--------:|:--------------:|:-----------------:|
+| `Add verified badge` | Replaces the MIC protection shield with verified badge to make it looks more cute :3 | v6.4.0 ~ v6.4.91 |
+| `Adaptive launcher icon` | Adds the adaptive & themed icon support to the app. Thanks to @fukiame ! | v6.4.0 ~ v6.4.91 |
+| `Proper notification icon` | Temporary fixes for the app notification icon. Thanks to @fukiame ! | v6.4.0 ~ v6.4.91 |
+| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. | v6.4.0 ~ v6.4.91 |
+| `Better custom background screen` | Replace the preview custom background from awful to useful. | v6.4.84 ~ v6.4.91 |
+| `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.4.91 |
+| `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.4.91 |
+| `Custom VTAP screen` | Warn users about critical VTAP trigger error from app. | v6.4.53 ~ v6.4.91 |
+| `Tian37 Fix` | Nuke detection points within Tian37 libraries. | v6.4.87 ~ v6.4.91 |
+| `Force portrait screen` | Force the screen always portrait on app, espcially when launching. | v6.4.0 ~ v6.4.91 |
+| `Remove MB AI Bullsh*t resources` | Remove the bullsh*t MB AI resources from app. Need to implement more in the future. | v6.4.74 ~ v6.4.91 |
+| `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.4.91 |
+| `Remove invoke to mbshield` | Make app don't invoke to mbshield when opening (MainActivity) and (MBBHomeWidgetQR) only | v6.4.22 ~ v6.4.91 |
+| `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. | v6.4.60 ~ v6.4.91 |
+| `Remove bulit-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.4.91 |
+| `Modify app theme` | Modify the bulit-in app theme from original one to other themes. | v6.4.30 ~ v6.4.91 |
+| `Remove garbage permission and activities` | Removes tracking permission & activities from app. | v6.4.0 ~ v6.4.91 |
+| `Revert old eMBee logo` | Revert old eMBee logo, especially on product consultation options. | v6.4.53 ~ v6.4.91 |
+| `Remove useless libraries` | Remove the useless libraries from app, only for v6.4.67+ | v6.4.67 ~ v6.4.91 |
+| `Remove animated QR background` | Remove the animated QR background from bottom navigation bar and replace with white background. | v6.4.43 ~ v6.4.91 |
+| `Remove VNPAY VMB20` | Remove the VNPAY Airplane related activities. | v6.4.55 ~ v6.4.91 |
+| `Restore old registration resources` | Restore old resources on `onboarding` page. | v6.4.48 ~ v6.4.91 |
+| `Hide VTAP root detection activity & dialog` | Hide the old root detection screen and dialog showing "Device is rooted" (might have issues with some HyperOS ROMs). | v6.4.0 ~ v6.4.91 |
+| `Legacy hide VTAP activity & dialog` | Hide the first root detection screen with dialog showing "Device is rooted" but not bypassing it. (GW908 will present, unlike standard `Hide VTAP root detection activity & dialog` patch). Only use for some ugly ROMs which is crashing with standard patch. | v6.4.53 ~ v6.4.91 |
+| `Remove protection shield` | Remove the MIC protection shield on profile picture and login screen. (not app protection) | v6.4.0 ~ v6.4.91 |
+| `Remove app from launcher` | Remove the app icon from launcher, and start with `am start` or with MBZDefend-Fix Action/Termux. | v6.4.0 ~ v6.4.91 |
+| `Set targetSdkVersion to 34` | Set the `targetSdkVersion` to 34 (Android 14) to prevent UI issues on some activities. | v6.4.10 ~ v6.4.91 |
+| `Add modified resources` | Adds the specific strings for MBCP on eKYC phases, and modify the DigiBank logo. | v6.4.0 ~ v6.4.91 |
+| `Add anime resources` | Adds anime-related resources to some components inside app. | v6.4.45 ~ v6.4.91 |
+
+
+
+
+## Old patches
+
+> [!IMPORTANT]
+> These patches are no longer compatible with newer/current app version. It can't be fixed unless MB decompress the `libapp.so` (which will never happen) or until I find the method to decompress it manually.
+
### [📦 `MB Bank : com.mbmobile`](https://t.me/embeeapks)
| ⚙️ Patch | 📜 Description | 🏦 Suggested version |
|:--------:|:--------------:|:-----------------:|
| `Autopatch strings` | Modify the strings in-app within `libapp.so`, and also fixes some translation typo in-app. | v6.4.0 ~ v6.4.66 |
-| `Block adjust volume on sEKYC` | Prevent the device volume from being adjusted when entering eKYC activity. | v6.4.0 ~ v6.4.66 |
| `Bypass GW934 checksum` | Bypass the GW934 error rolled-out from MB server-side which prevent MBCP users from logging in to app. Only use this after applied all your patch needs. | v6.4.64 ~ v6.4.66 |
-| `Change app logo` | Change the app logo with set of icons. | v6.4.0 ~ v6.4.68 |
-| `Change widget background to dark ` | Change widget background to dark if you use MBBHomeWidget. | v6.4.0 ~ v6.4.68 |
| `Disable MB Membership` | Disable the MB Membership badge below pfp and all of it's features. | v6.4.0 ~ v6.4.66 |
-| `Force portrait screen` | Force the screen always portrait on app, espcially when launching. | v6.4.0 ~ v6.4.68 |
-| `Remove invoke to mbshield` | Make app don't invoke to mbshield when opening (MainActivity) and (MBBHomeWidgetQR) only | v6.4.22 ~ v6.4.66 |
-| `Remove MB Themes Store` | Remove the MB Themes Store banner from Themes list, preventing access to MB Theme Store. | v6.4.28 ~ v6.4.68 |
-| `Remove new zimperium check` | Remove the new Zimperium (ZDefend) root detection from app. Picked up from Legacy Patch. | v6.4.60 ~ v6.4.66 |
-| `Remove bulit-in fonts` | Remove app font and force to use device font for most app components. | v6.4.0 ~ v6.4.68 |
| `Remove custom profile picture` | Force the use of default profile picture instead of your current one on MB's server side. | v6.4.0 ~ v6.4.66 |
-| `Modify app theme` | Modify the app theme in app from original one to others. Currently have MBClassic and SemiPriority. | v6.4.30 ~ v6.4.68 |
| `Restore old 682 lib` | Restore old v6.4.61 `libapp.so` to prevent enforced `quockhanh` theme changes on v6.4.62. | v6.4.62 |
-| `Remove garbage permission and activities` | Removes tracking permission & activities from app. | v6.4.0 ~ v6.4.68 |
-| `Remove eMBee` | Removes eMBee options in app, alongside with Customer support. | v6.4.43 ~ v6.4.68 |
-| `Revert old eMBee logo` | Revert old eMBee logo, specially on product consultation options. | v6.4.53 ~ v6.4.68 |
-| `Remove useless libraries` | Remove the useless libraries from app, only for v6.4.67+ | v6.4.67 ~ v6.4.69 |
-| `Remove animated QR background` | Remove the animated QR background on bottom navigation bar and replace with white background. | v6.4.43 ~ v6.4.68 |
+| `Remove eMBee` | Removes eMBee options in app, alongside with Customer support. | v6.4.43 ~ v6.4.66 |
| `Remove banner & MiniApp` | Removes the banner and MiniApp on `homeLanding` page when logged in. | v6.4.43 ~ v6.4.66 |
| `Remove VPN detection` | Remove the VPN detection that warn users to turn it off on app bundle. | v6.4.52 ~ v6.4.66 |
-| `Remove VNPAY VMB20` | Remove the VNPAY Airplane related activities. | v6.4.55 ~ v6.4.68 |
-| `Restore old registration resources` | Restore old resources on `onboarding` page. | v6.4.48 ~ v6.4.68 |
| `Spoof app version to v6.4.68` | Spoof the app version from v6.4.66 to v6.4.68. | v6.4.64 ~ v6.4.66 |
| `Bypass accessibility & malicious apps check` | Remove the restriction of using the app when an app using accessibility service or "malicious apps" like (HideMyAppList) installed. | v6.4.25 ~ v6.4.54 |
-| `Hide VTAP root detection activity & dialog` | Hide the old root detection screen and dialog showing "Device is rooted" (might have issues on some HyperOS ROMs). | v6.4.0 ~ v6.4.66 |
-| `Legacy hide VTAP activity & dialog` | Hide the first root detection screen with dialog showing "Device is rooted" but not bypassing it. (GW908 will present, unlike standard `Hide VTAP root detection activity & dialog` patch). Only use for some ugly ROMs which crashing with standard patch. | v6.4.53 ~ v6.4.66 |
| `Remove new root detection` | Remove the new Zimperium (ZDefend) root detection from app. (Now requires workaround for v6.4.56+) | v6.4.15 ~ v6.4.58 |
| `Bypass new zimperium detection` | Bypass the root check from Zimperium within app. | v6.4.56 ~ v6.4.63 |
-| `Remove protection shield` | Remove the MIC protection shield on profile picture and login screen. (not app protection) | v6.4.0 ~ v6.4.66 |
-| `Remove app from launcher` | Remove the app icon from launcher, and start with `am start` or with MBZDefend-Fix Action/Termux. | v6.4.0 ~ v6.4.68 |
-| `Set targetSdkVersion to 34` | Set the `targetSdkVersion` to 34 (Android 14). | v6.4.10 ~ v6.4.68 |
-| `Add modified resources` | Adds the specific strings for MBCP on eKYC phase, and modify the DigiBank logo. | v6.4.0 ~ v6.4.68 |
-| `Add anime resources` | Adds anime-related resources to some components inside app. | v6.4.45 ~ v6.4.68 |
-
-
+
## Legacy patches
-- Those patches are not implemented or outdated, which is used for discontinued MB app version.
+- These patches are not implemented or outdated, which is used for discontinued MB app version.
### [📦 `MB Bank : com.mbmobile`](https://t.me/embeeapks)
| ⚙️ Patch | 📜 Description | 🏦 Suggested version |
|:--------:|:--------------:|:-----------------:|
-| `Bypass signature check` | Not implemented | v6.4.0 ~ v6.4.21 |
+| `Bypass signature check` | Not implemented (Use bypass GW934 checksum instead) | v6.4.0 ~ v6.4.21 |
| `[TEST] Remove v6.4.56 root detection` | New workaround that removes new Zimperium (ZDefend) root detection from app. | v6.4.56 |
| `Bypass 1200 error` | Workaround for 1200 error that happening on original MB app with specific version, now discontinued. | v6.4.45 |
-## Requirements
-- Any actual Linux x86_64 environment (Arch Linux based recommended) or Termux (not recommended)
-- Termux/macOS/WSL may work but some function (eg : Unpack APK, sed_libapp on macOS) will not work and i don't want to spend more times just to supporting them. I only developing this project with Linux environment.
-- Little knowledge about terminal commands
-- `android-tools` `wget` for Arch/Fedora based and `android-sdk-platform-tools` for Debian based
-- `git` installed
-- `java` or `jdk-openjdk` installed
-- `figlet` for showing banner (optional)
-- `xmlstarlet` for reformatting AndroidManifest after unpacking
+## Proprietary code
+> [!WARNING]
+> This project contains some proprietary code extracted from MB's app that has been modified to bypass something in the app, but the modified proprietary code is completely public and open source, it will be used for some patches.
-## Usage
-- Go to home directory, then clone repository first
-```
-cd ~
-git clone https://git.disroot.org/mbcp/mbbpatch.git
-cd ~/mbbpatch/MBCPApp
-```
+- Proprietary code exists in following folder :
-- Since MB Bank are now using split APK (*.apks) since `v5.3 (135)` so you have to convert it to regular APK first
-- Grab MB Bank apks from [eMBee APKs](https://t.me/embeeapks) or [Lotus Chat](https://lotuschat.vn/w/+anSH1BbDbAYn54JC9nIC9A) if you don't have access to Telegram and copy it to `~/mbbpatch/MBCPApp/mbapk`
+- 1. `blob_patches/bypass_apptampering`
+- 2. `blob_patches/noadjust_volume_sekyc`
+- 3. `blob_patches/skip_maintainscreen`
+- 4. `blob_patches/bypass_accessibility_applist`
+- 5. `blob_patches/bypass_rootold`
+- 6. `blob_patches/fix_df16211`
+- 7. `blob_patches/noinvoke`
-- Run bash `mbcpapp.sh` script
-```
-cd ~/mbbpatch/MBCPApp
-./mbcpapp.sh
-```
-- Download necessary tools first with `Download tools` function (otherwise other functions are unlikely to work!)
-- Convert apks to apk first using `Convert apks to apk` function
-- Unpack apk with `Unpack apk` function
-- Use `Patch App` function and select the patches you want to apply to unpacked app except [Bypss GW934 checksum] patch
-- When done, apply the [Bypass GW934 checksum] patch, then use `Repack APK` function to recompile patched app
-- Patched app will be `MBCP_Flutter_SelfPatched.apk` on `~/mbbpatch/MBCPApp/mbcpapp_apk/`
-- Install it to your device (requires [MBCP Helper](https://git.disroot.org/mbcp/mbcp-helper/releases) / [CorePatch](https://github.com/lsposed/corepatch/releases) ) with enabled "Disable digest verify" option.
-- Profit :)
+- Under `mbsig` directory, it contains original signature from original MB's app, which is necessary to make app works after patching process because the app doesn't work with different APK signature.
+- Everything including that listed above code are all licensed under MIT license, it can be considered as reverse engineered code :>
## TODO
-- [ ] Bypass the new dex & libraries checksum for MB v6.4.67+
+- [ ] Bypass the new dex & libraries checksum for MB v6.4.67+ (hardcore challenge, would be extremely excited if this is achieved)
+
+- [ ] Crash fixes for `Hide VTAP root detection activity & dialog` patch (OEM ROMs)
+
+- [ ] Proper display language under Singalarity eKYC phase
+
+- [x] Revert old Bee Rich logo
- [x] Adapt new v6.4.67 zimperium structure
- [x] Adapt new v6.4.68 trungthu theme
-## External projects
-MBCPApp Patcher project won't be possible without those external projects !!
+## Contribute to project
+
+- Short answer : PRs are welcome. Just no Generative AI at all, all the code and assets (except from MB itself) must be made/written by yourself with no assistance from Generative AI.
+
+- Long answer : PRs are welcome, but you are NOT allowed to use any AI-tools for creating PRs with AI-generated/AI-assisted code to this project, even if it's manually reviewed by human. please use your brain and search engine & read documentation for that !
+
+
+- Even though this project is NOT AI-powered or assisted, another dependencies that the project heavily rely on (APKEditor, coreutils, etc) may have been filled up with AI-generated code or assisted by AI. While I'm straightly disagree it, theres no escape for that in big 2025 (and also in few next years) so we have to live with that AI-generated & AI-assisted code inside the dependencies, but that doesn't mean I will code or allows AI-generated & AI-assisted code in this project at all.
+
+- Remember : Projects that rely on dependencies that is already filled up with AI-generated & AI-assisted code or bulit on top of it but written by human and NOT Generative AI doesn't means the project is AI-powered or AI-generated project.
+
+- If you wish to use Generative AI-tools for contributing, please go ahead and find for another project instead.
+
+
+
+## Project history
+
+- This project was made (and still maintained) by [@cuynu](/cuynu) with some help from other contributors, but in reality, I am not currently have enough skills with coding and project development yet and is still stupid. So some most of my commits is just minimal changes. **You can say me as a Developer/Dev and I'll embrace it because this project is not that easy to made, it's not what average person can even think as open source**. Maybe someday you'll see me ship more c/cpp code in this project :)
+
+
+
+- 05/2023 : MB Bank MOD APK ANDROID project created on Telegram (@mbbmod), providing modified MB Bank APKs since v5.8 with lots of features such as bypassing accessibility check and show a guide to hide root instead of show rooted screen then close the app.
+
+- 01/2024 : Channel from 2023 is deleted, due to Telegram banning account (@cuynutt)
+
+- 06/2024 : [MB Android Patched] channel created, providing modified MB Bank Flutter APKs and then MB React Native APKs
+
+- 01/2025 : Channel renamed to [MBCP Android] due to MB discontinued version that does not requires CorePatch. MBCP Helper also existed since then.
+
+- 05/2025 : Project is rewritten from closed source (mostly with MT Manager) to open source with `bash` programming language, reduce the trust issues with closed source app before, also allow anyone to patch it manually.
+
+- 06/2025 : [Hide VTAP root detection activity & dialog] patch was added, enables the ability to use the MBCP app with superuser (root permission) enabled.
+
+- 08/2025 : @fukiame joining to refactor the project source code, make it easier to maintain in the future, also implement good logic.
+
+- 09/2025 : Original project repository is deleted due to contain Gemini (AI-generated) code `platform-tools.sh` (created with stupid behaviour, anything except that is 100% AI-free) then it has been recreated just right after that and cherry-picked commits from the old project repository, that's why you see older commits with merge conflicts; The project is completely AI-free since 09/2025.
+
+- 10/2025 : MB discontinued `v6.4.66`, the last version with almost all patches working (except `bypass_accessibility_applist`) with `GW525` error when logging in
+
+- 11/2025 : After multiple times lying myself and always said that I'm not a developer, **I claim myself as a MBCP developer** and still having skill issues, but atleast, I made this project, and solved the issues that MB's development team created to the MB Bank app by writing code to bypass them.
+
+- 11/2025 (2) : MB released `v6.4.74` with AI-crap button that replaces legacy search button. I created a patch that force replace it back to old search icon.
+
+- 02/2025 : MB released `v6.4.85` with enhanced Singalarity eKYC detection (detects `data/adb/modules` and `com.rifsxd.ksunext`), so I created a patch that nuked the check.
+
+- ...
+
+
+## Credits
- [apktool](https://github.com/iBotPeaches/Apktool)
- [APKEditor](https://github.com/REAndroid/APKEditor/)
- [MT Manager](https://mt2.cn/) to handle APK signature scheme v2/v3 (in the past)
- [Zhaxia CN](https://t.me/zhaxia_cn) for sticker packs (Add anime resources)
+- [FlatIcon](https://flaticon.com) for some icons, including search icon, verified badge
## Contributors
-- [Cuynu](https://git.disroot.org/cuynu) - MBCP project author/maintainer
-- [fukiame](https://git.disroot.org/fukiame) - other improvements to project
+- [Cuynu](/cuynu) - (dev)
+- [fukiame](/fukiame) - refactor & other improvements (contributor)
+- [Ngankbakaa](https://github.com/miyukocutee) - (contributor)
+
+
diff --git a/docs/implementing-patches.-.md b/docs/implementing-patches.-.md
new file mode 100644
index 0000000..fd613ca
--- /dev/null
+++ b/docs/implementing-patches.-.md
@@ -0,0 +1,58 @@
+## Implementing patches
+- patch template is implemented by @fukiame from this commit : aa4eb65992 so just need to follow their `TEMPLATE`
+- they well documented it on the commit message :
+```
+adding new patches is now trivial:
+
+ cd patches
+ cp TEMPLATE patch_name_whatever.sh
+ # then just fill in patch name and ver clamp if desired
+
+this gets rid of the need for excessive if-elses and not-so-pleasing indents
+
+for logging, instead of using pure echo, 4 new "levels" can be utilized
+- `info` : normal
+- `good` : info but have green color?
+- `warn` : warning
+- `err` : error
+```
+
+- they even implemented the sed that patching libapp to one function, called `sed_libapp` so you just need to call them and define it a value
+
+ example :
+```
+sed_libapp 's|{old string}|{new string}|g'
+```
+- note that the old string and new string MUST be at the same character length in order to not breaking `libapp.so` ELF header
+
+same thing with `AndroidManifest.xml` too, called `manifest_remove`
+```
+manifest_remove "android.manifest.YouWantedToRemove"
+```
+- `get_mb_ver` function is used to get MB app version by reading version code
+
+- but that is not actually enough, you have to do smth that is patching the app, like `rm`, `sed`, `mv` operation. below is the example. you can literally do anything you wanted to mess up in the patches file :
+```
+#!/usr/bin/env bash
+# PATCHNAME: Remove banners & MiniApp
+# MAXVER: 67
+# MINVER:
+# shellcheck disable=SC1091
+. "$DIRPATH"/common.sh
+
+sed_libapp 's|banner|remove|g'
+sed_libapp 's|marketplacehome|removemarketapp|g'
+
+info 'Moving links...'
+sed_libapp 's|https://miniappgw.mbbank.com.vn/homebox/webview/auth?|https://git.disroot.org/mbcp/info/wiki/MiniApp?ref=mb|g'
+sed_libapp 's|https://miniappgw-uat.mbbank.com.vn/homebox-public/|https://git.disroot.org/mbcp/info/wiki/MiniApp?refs|g'
+
+info 'Removing related resources...'
+rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/packages'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.webp'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.private.webp'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/explore_img_defaultBanner.webp'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/coreBanking_img_successBanner.webp'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.webp'
+rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.private.webp'
+```
\ No newline at end of file
diff --git a/docs/patcher-dependencies.-.md b/docs/patcher-dependencies.-.md
new file mode 100644
index 0000000..37e47db
--- /dev/null
+++ b/docs/patcher-dependencies.-.md
@@ -0,0 +1,12 @@
+## MBCPApp Patcher are using those dependencies :
+- GNU `sed` : https://www.gnu.org/software/sed/
+- GNU `wget` : https://www.gnu.org/software/wget/
+- GNU `bash` : https://www.gnu.org/software/bash/
+- `figlet` : https://www.figlet.org/
+- `xmlstarlet` : https://xmlstar.sourceforge.net/
+- `openjdk` : https://openjdk.org/
+- `git` : https://git-scm.com/
+- `platform-tools` : https://developer.android.com/tools/releases/platform-tools
+
+## Project Development :
+- `nvim` : https://github.com/neovim/neovim
\ No newline at end of file
diff --git a/docs/patcher-usage.-.md b/docs/patcher-usage.-.md
new file mode 100644
index 0000000..5a0a9ad
--- /dev/null
+++ b/docs/patcher-usage.-.md
@@ -0,0 +1,114 @@
+## Requirements
+> [!warning]
+> **AI-powered** forks are not suitable with this docs! USE ANOTHER FORK !
+
+- Any actual Linux environment or macOS (Arch Linux based recommended)
+- Little knowledge about terminal commands
+- `android-tools` `wget` for Arch/Fedora based and `android-sdk-platform-tools` for Debian based
+- `android-platform-tools` for macOS with brew
+- `git` installed
+- `java` or `jdk-openjdk` installed
+- `figlet` for showing banner (optional)
+- `xmlstarlet` for reformatting AndroidManifest after unpacking
+
+
+## Install dependencies
+
+for Arch Linux / EndeavourOS / CachyOS / any Arch-based distributions (except Manjaro as it's usually break system packages)
+```
+sudo pacman -Sy android-tools wget jdk-openjdk figlet xmlstarlet git
+```
+for Debian / Mint / Ubuntu / any debian-based distributions
+```
+sudo apt install android-sdk-platform-tools xmlstarlet figlet wget git default-jre
+```
+for Fedora / any fedora-based distributions
+```
+sudo dnf makecache --refresh
+sudo dnf -y install wget xmlstarlet android-tools java-latest-openjdk.x86_64
+git clone https://github.com/M0Rf30/android-udev-rules.git
+cd android-udev-rules
+sudo bash install.sh
+```
+
+for macOS (brew)
+```
+brew install xmlstarlet wget openjdk android-platform-tools figlet gnu-sed
+sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
+PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
+```
+
+## Clone repository
+You can choose between 2 repository mirrors, one is the repository on Disroot, and the other one is the Selfhosted Forgejo instance, it has no difference as both are pushed at the same time.
+
+DIsroot
+```
+cd ~
+git clone https://git.disroot.org/mbcp/mbbpatch.git
+cd mbbpatch/MBCPApp
+```
+Self-hosted Instance
+```
+cd ~
+git clone http://cuynutt.ddns.net/mbcp/mbbpatch.git
+cd mbbpatch/MBCPApp
+```
+
+## Run the Patcher
+Ensure that you already in following folder to continue : `~/mbbpatch/MBCPApp`
+```
+./mbcpapp.sh
+```
+- Download tools with `14) Download tools` function first, it will download `apktool` and `apkeditor` to `tools` folder. This is required since `2) Unpack APK` function requires it.
+
+## Patch the app
+
+> [!IMPORTANT]
+> If you are patching MB Bank with those version :
+>
+> MB Bank : v6.4.63 | v6.4.64 | v6.4.65 | v6.4.66
+>
+> Ensure that you applied `Bypass GW934 checksum` patch after applied all other patches, so the app can works without GW934 error when logging in.
+
+- Grab MB Bank apks from [eMBee APKs](https://t.me/embeeapks) or [Lotus Chat](https://lotuschat.vn/w/+anSH1BbDbAYn54JC9nIC9A) (in case if you don't have access to Telegram) and copy it to `~/mbbpatch/MBCPApp/mbapk`
+- Alternatively, if you don't have access to both Telegram & Lotus Chat, download from [Google Play](https://play.google.com/store/apps/details?id=com.mbmobile) then extract the MB Bank apks and copy it to `~/mbbpatch/MBCPApp/mbapk` or get it [from my instance](http://cuynutt.ddns.net/mbcp/mbmobile-apks)
+- Convert apks to apk first using `3) Convert apks to apk` function
+- Unpack apk with `2) Unpack apk` function
+- Use `7) Patch App` function, it should show a list of patches, select the patch you wanted to and it will automatically patch the app at `mbapk/mbapk_original`
+- Note that the patches list might different, depends on your current unpacked MB Bank app version, as there will be a patch that compatible with specific version, for example patch [Bypass accessibility & malicious apps check] is compatible with v6.4.54, but not with v6.4.55 or newer, so if you have v6.4.55 or newer, then that patch will be hidden from patches list.
+- The patcher should show info to the log when use `7) Patch App` function if it found that the current unpacked app version is not compatible with one of implemented patches like this :
+```
+[INFO] [parser] skipping [Patch A] as current version is higher than patch version clamp
+[INFO] [parser] skipping [Patch B] as current version is lower than patch version clamp
+```
+- View full patches list [here](/mbcp/mbbpatch#patches-list) for more info about compatible version, or view the `MAXVER` value and `MINVER` in patch files `~/mbbpatch/MBCPApp/patches/*.sh`
+
+## Repack the app
+- So you have applied all the patches you wanted to ?
+- Exit patch app function with the exit option in the last patch list
+- Use `4) Repack APK` to repack patched app
+- What's next? wait :)
+- Patcher will repack the app, and then [restore signature]() to make sure that app can load, the example of nice repack process :
+```
+00.000 I: [BUILD] Using: APKEditor version 1.4.5, ARSCLib version 1.3.8
+ -t = sig
+ -dex-lib = internal
+ -sig = mbsig/signatures
+ -i = mbcpapp_apk/MBCP_Flutter_TMP.apk
+ -o = mbcpapp_apk/MBCP_Flutter_SelfPatched.apk
+ _______________________________________________________
+00.013 I: [BUILD] Restoring signatures ...
+00.214 I: [BUILD] Writing apk...
+00.217 I: [BUILD] Buffering compress changed files ...
+00.226 I: [BUILD] Writing files: 3332
+00.453 I: [BUILD] Writing signature block ...
+00.909 I: [BUILD] Saved to: mbcpapp_apk/MBCP_Flutter_SelfPatched.apk
+[19:45:55:70] [INFO] Completed! Repacked APK are saved as [mbcpapp_apk/MBCP_Flutter_SelfPatched.apk] !!!
+[19:45:55:70] [INFO] Install and trying to open it when ಠ‿ಠ
+[19:45:55:70] [INFO] If you are facing issues, report it on Telegram [@mbbpatch_eng] or Disroot Forgejo : mbbpatch !!
+```
+- Patched app will be `MBCP_Flutter_SelfPatched.apk` on `~/mbbpatch/MBCPApp/mbcpapp_apk/`
+- As this is unsigned app, Android will refuse to install `MBCP_Flutter_SelfPatched.apk` by default. In order to install it, you MUST install [MBCP Helper](/mbcp/mbcp-helper/releases) or [CorePatch](https://github.com/LSPosed/CorePatch/releases) and enable the "Disable digest verify" option to bypass android package signature verification.
+- If you don't know how to deal with MBCP Helper, follow this guide : [MBCP Installation](/mbcp/info_en/wiki/mbcpinstall)
+- Copy this `MBCP_Flutter_SelfPatched.apk` then install to your device, or simply use `5) Install patched app` function, its will do the same thing with `adb`
+- Profit :)
diff --git a/mbcp.sh b/mbcp.sh
new file mode 100755
index 0000000..8b3e19c
--- /dev/null
+++ b/mbcp.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+bash MBCPApp/mbcpapp.sh