Compare commits

..
Message SHA1
fix: patches(spoof_appver.sh): missing versionCode for v6.5.14
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-10-11 23:41:41 +07:00
c89ae14ad1
feat: patches(target_sdk_34.sh): adapt with targetSdk 36 for v6.5.20+
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-13 14:54:45 +07:00
d5eab6d854
feat: patches(spoof_appver.sh): spoof more versionCode
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-13 14:37:22 +07:00
968367822a
feat: patches(spoof_appver.sh): adapt with v6.5.2x & mark v6.5.x as legacy
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-13 13:21:29 +07:00
35707bbecc
feat: patches(remove_qr_wave.sh): introduce remove qr scanner wave patch
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-13 13:13:44 +07:00
004ff0e974
docs: wrong day
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-12 03:24:19 +07:00
65e71fd42e
docs: wrong link
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-12 03:23:49 +07:00
0630d8d025
docs: update about new checksum measure
with v6.5.15+, the checksum is enhanced...

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-12 03:20:40 +07:00
db71084199
fix: patcher(mbcpapp.sh): wrong handling
separate function fixed it

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-09 15:50:46 +07:00
f413ecfb68
fix: patcher(mbcpapp.sh): use return 0 instead of exit
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-09 15:13:48 +07:00
bf39876c69
docs: bump suggested version to v6.5.14 (semi-final)
might be final if no workaround available for v6.5.15+

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-09 03:51:19 +07:00
d15a333726
feat: patcher(mbcpapp.sh): confirmation before running patch app function
for v6.5.15+ with new checksum mechanism only

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-09-09 03:44:43 +07:00
45ec5e5e11
fix: patcher(mbcpapp.sh): warn does not show for v6.5.15+
it need to be displayed before run patcher.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-08-31 01:12:23 +07:00
a21c61f40e
feat: patcher(mbcpapp.sh): check for v6.5.15+ and warn before run patch app func
since v6.5.15, the check is more stricter, extended to all files in assets and apk after converted to apk

it will trigger checksum fail error and throw GW934 error as response.

fix is not implemented yet, but it depends on new lib : `libnframes.so`, without that the login button is not clickable.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-08-31 00:53:59 +07:00
bb01c94dfa
feat: patcher(mbcpapp.sh): show warn for v6.5.7+ when select specific install apk option
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-08-17 09:13:32 +07:00
5fbf2c74ce
docs: bump suggested version to v6.5.11
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-22 00:56:16 +07:00
1ad18251bb
fix: patches(spoof_appver): missing double quote & spoof more versionCode
causing multiple mbcp prefixes in some app versions

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-21 16:51:04 +07:00
64513fb78f
refactor: patcher(mbcpapp.sh): move to new install patched app behavior
no longer requires specific app version

with [Install & delete local detection model & open app] option, it will check for su binary and warn if it's not found

also checks the commit id of repacked APK and warn before installing if it's mismatch

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-21 16:25:09 +07:00
00be518085
feat: patches(add_modified_resources): adapt with v6.5.7+ strings
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-21 15:32:00 +07:00
a8e8ac6233
feat!: patches(block_adjust_volume_sekyc): restrict to v6.4.85 as maximum app version
temp only

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-17 19:52:32 +07:00
f76dde30eb
docs: fix-vtap-cert: detailed patch usages
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-12 22:47:07 +07:00
208c22d10f
fix: patches(remove_useless_lib): patch applying error with newer target
due to return 1 in last of file

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-10 04:40:00 +07:00
12a99f22e3
feat: patcher(mbcpapp.sh): adapt with v6.5.9+ behavior & condition when installing apk to device
also added new pattern to specific app version installation

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-07-10 04:29:08 +07:00
ecfded007a
fix: patcher(mbcpapp.sh): critical model still getting deleted & adapt new v6.5.7+ model
due to duplicate files in new zimperium for v6.4.66+

also delete `GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_` model

adapt newer model for v6.5.7+

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-29 21:05:38 +07:00
54d5855294
fix: patches(remove_useless_lib.sh): do not remove libvvb2060.so in newer app version v6.5.7+
removing it in v6.5.7+ trigger checksum failing error (GW934 - Re-install app to continue using app)

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-29 02:03:25 +07:00
a7e09b9ba2
feat: patches(spoof_appver.sh): adapt with v6.5.1x target, more versionCode
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-29 00:44:16 +07:00
b2a7c82be3
fix: patcher(mbcpapp.sh): don't delete critical local model for v6.5.7+
MB v6.5.7+ with new Zimperium need `fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_` and `GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_` to function correctly, without it the app will crash with native call error.

with older app version (v6.5.6 or older), it will continue to delete such local model

`libcode.so` is pattern to detect v6.5.7+

this commit should fix crashes with v6.5.7+ when working with Patcher.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-29 00:08:27 +07:00
a0e0b5492a
docs: bump suggested version to v6.5.6
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-28 18:09:54 +07:00
31f3325df3
chore: patcher(mbcpapp.sh): move from mbshield to zshield for resources extraction
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-28 17:40:41 +07:00
667940ccbe
feat: patcher(mbcpapp.sh): dump Tian37 lib sha256 hashes
this is not needed with older target (<v6.5.6) but need with (v6.5.7)

MB enhanced checksum to more libraries, including this Tian37 one in v6.5.7.

older target remain unaffected.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-28 17:29:32 +07:00
cc5316f901
feat: patcher/patches(mbcpapp.sh/remove_new_zimperium_check.sh): adapt dumping sha256 hash for new zimperium library
exist since MB v6.5.7+

added condition check whether if older zimperium lib is present or not before dumping

limit zimperium bypass patch to v6.5.6 or older temporary

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-28 17:21:38 +07:00
1765a67d97
feat: patcher(mbcpapp.sh): use --no-check-certificate flag for wget
fixes download error for some Mac machines, confirmed working with my Intel Mac

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-28 16:30:43 +07:00
ae8eeda2db
chore: patcher/patches(etc): move from mbshield to zShield
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-28 15:56:34 +07:00
804e4aeb75
chore: patcher(mbcpapp.sh): rename mbshield to zshield
mbshield does not exist, MB does not have any such shield, they used zShield from Zimperium since v6.4.22, and rename the branding from zShield to [bank name + shield]

with new MB v6.5.7 update, there is a major changes to how zShield work, they randomized the name, not [mbshield] anymore

so I used regex* to look for it, more effective.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-28 15:27:23 +07:00
ac845ff247
feat: patcher(mbcpapp.sh): rename useless to zimperium local model
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-27 18:11:18 +07:00
73e9bd4def
docs: bring back fix_vtap_cert to patches list
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-20 11:21:27 +07:00
316d2a8476
fix: patches(remove_mbai): typo in path
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-19 10:51:20 +07:00
1fc18698b6
fix: patches(fix_vtap_cert): do not throw nofwfound if no profile found
also skip copying `profile` if it not found.

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-19 10:32:35 +07:00
34d379a7c1
feat: patches(fix_vtap_cert): allow unlimited app target
and specific app target

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-19 10:29:34 +07:00
74ac78f682
docs: bump suggested version to v6.5.5
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-19 10:26:39 +07:00
8f3080e7df
revert "docs: correct my role"
this reverts commit a96b638b0f.

Cuynu   commited 2026-06-19 10:24:51 +07:00
5c821bbe51
feat: patches(remove_mbai): adapt newer resources & rename bullsh*t to slop
Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-19 10:24:36 +07:00
05c65d15df
feat: patches(fix_vtap_cert): allow unlimited app target
and specific app target

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-09 16:04:26 +07:00
456089cf75
docs: correct my role
no, `developer` is not a good role for me

i want maintainer role instead

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-04 22:29:58 +07:00
a96b638b0f
chore: patches(etc): move specific bypass from autopatch_strings to separate patches
separate from `autopatch_strings` would be better than just add them to one patch

Signed-off-by: Cuynu <cuynu@proton.me>

Cuynu   commited 2026-06-03 17:46:50 +07:00
aa08968a5f
23 changed files with 766 additions and 162 deletions

View file

@ -0,0 +1,378 @@
<?xml version='1.0' encoding='utf-8' ?>
<resources>
<string name="OPC_NAME_NOT_SET_KEY">OPC_NAME_NOT_SET_KEY</string>
<string name="OPC_NETWORK_KEY">OPC_NETWORK_KEY</string>
<string name="OPC_NETWORK_NAME_KEY">OPC_NETWORK_NAME_KEY</string>
<string name="OPC_NOT_SET_STRING">NO_OPC_SET</string>
<string name="OPC_SHARED_PREFERENCES_FILE">OPC_SHARED_PREFERENCES_FILE</string>
<string name="OPC_SHARED_PREFERENCES_KEY">OPC_SHARED_PREFERENCES_KEY</string>
<string name="OPC_TOKEN_SERVICE_PROVIDER_KEY">OPC_TOKEN_SERVICE_PROVIDER_KEY</string>
<string name="OPC_TOKEN_SERVICE_PROVIDER_NAME_KEY">OPC_TOKEN_SERVICE_PROVIDER_NAME_KEY</string>
<string name="abc_action_bar_home_description">Navigate home</string>
<string name="abc_action_bar_up_description">Navigate up</string>
<string name="abc_action_menu_overflow_description">More options</string>
<string name="abc_action_mode_done">Done</string>
<string name="abc_activity_chooser_view_see_all">See all</string>
<string name="abc_activitychooserview_choose_application">Choose an app</string>
<string name="abc_capital_off">OFF</string>
<string name="abc_capital_on">ON</string>
<string name="abc_menu_alt_shortcut_label">Alt+</string>
<string name="abc_menu_ctrl_shortcut_label">Ctrl+</string>
<string name="abc_menu_delete_shortcut_label">delete</string>
<string name="abc_menu_enter_shortcut_label">enter</string>
<string name="abc_menu_function_shortcut_label">Function+</string>
<string name="abc_menu_meta_shortcut_label">Meta+</string>
<string name="abc_menu_shift_shortcut_label">Shift+</string>
<string name="abc_menu_space_shortcut_label">space</string>
<string name="abc_menu_sym_shortcut_label">Sym+</string>
<string name="abc_prepend_shortcut_label">Menu+</string>
<string name="abc_search_hint">Search…</string>
<string name="abc_searchview_description_clear">Clear query</string>
<string name="abc_searchview_description_query">Search query</string>
<string name="abc_searchview_description_search">Search</string>
<string name="abc_searchview_description_submit">Submit query</string>
<string name="abc_searchview_description_voice">Voice search</string>
<string name="abc_shareactionprovider_share_with">Share with</string>
<string name="abc_shareactionprovider_share_with_application">Share with %s</string>
<string name="abc_toolbar_collapse_description">Collapse</string>
<string name="aiDemo_buttonUnderstand">Understand and continue</string>
<string name="aiDemo_defaultGuidance">Please move the face into the frame</string>
<string name="aiDemo_willSpeakLoudly">You will have to speak loudy these numbers on the screen</string>
<string name="aiFaceMessage_facePitchDown">Please look straight</string>
<string name="aiFaceMessage_facePitchUp">Please look straight</string>
<string name="aiFaceMessage_faceQualified">Your face is in the frame. Please hold your hand steady!</string>
<string name="aiFaceMessage_faceRollAntiClockWise">Please keep your face upright</string>
<string name="aiFaceMessage_faceRollClockWise">Please keep your face upright</string>
<string name="aiFaceMessage_faceTooBig">Please put the camera further away</string>
<string name="aiFaceMessage_faceTooSmall">Please put the camera closer</string>
<string name="aiFaceMessage_faceYawedLeft">Please look straight</string>
<string name="aiFaceMessage_faceYawedRight">Please look straight</string>
<string name="aiFaceMessage_noFaceFound">Please move your face fit in the frame</string>
<string name="aiFaceMessage_tooManyFace">Found many faces in the frame. Please retake the selfie</string>
<string name="aiGuidanceBottomSheet_buttonConfirm">Agree</string>
<string name="aiGuidanceBottomSheet_line1">Please remove scarf, mask, sunglasses, hat and take a photo in well-lit condition</string>
<string name="aiGuidanceBottomSheet_line2">Keep your face steady during video recording</string>
<string name="aiGuidanceBottomSheet_line3">Speak loudly and clearly the number on the screen</string>
<string name="aiGuidanceBottomSheet_line4">Hold your phone as high as your face </string>
<string name="aiGuidanceBottomSheet_title">Video recording tutorial</string>
<string name="aiIntro_actionDetail">Please take a video of your face to verify no one is impersonating you</string>
<string name="aiIntro_actionTitle">Biometric information</string>
<string name="aiIntro_buttonStartRecord">Start demonstration</string>
<string name="aiIntro_title">Verify information</string>
<string name="aiIntro_videoDescription">Please watch the tutorial to know how to record video with the best quality</string>
<string name="aiResultScreen_buttonCancelLabel">Cancel</string>
<string name="aiResultScreen_buttonRetryLabel">Retry</string>
<string name="aiResultScreen_title">Record selfie video failed</string>
<string name="aiScreen_defaultGuidance">Please move your face fit in the frame</string>
<string name="aiScreen_faceMatchingWithVideoFailed">Your facial data does not match. Please try again</string>
<string name="aiScreen_faceNotMatchQuality">Your video is in low quality</string>
<string name="aiScreen_faceNotMatchWithID">Your facial data does not match</string>
<string name="aiScreen_recordVideoFailed">Failed. Please record the video again</string>
<string name="aiScreen_recordVoiceFailed">Error. Please record your voice again</string>
<string name="aiScreen_recording">Recording</string>
<string name="aiScreen_speakLoudly">Speak loudly the number on the screen</string>
<string name="androidx_startup">androidx.startup</string>
<string name="app_link">mbbank.onelink.me</string>
<string name="app_name">MB Bank</string>
<string name="app_widget_description">This is an app widget description</string>
<string name="appbar_scrolling_view_behavior">com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior</string>
<string name="bottom_sheet_behavior">com.google.android.material.bottomsheet.BottomSheetBehavior</string>
<string name="bottomsheet_action_expand_halfway">Expand halfway</string>
<string name="character_counter_content_description">Characters entered %1$d of %2$d</string>
<string name="character_counter_overflowed_content_description">Character limit exceeded %1$d of %2$d</string>
<string name="character_counter_pattern">%1$d/%2$d</string>
<string name="clear_text_end_icon_content_description">Clear text</string>
<string name="click_setting_qr">Tap to setup QR</string>
<string name="click_setting_qr_big_qr">Tap to setup QR</string>
<string name="com.crashlytics.android.build_id">cca90e65-5805-4c06-bc2d-930595fb2cf4</string>
<string name="com.google.firebase.crashlytics.mapping_file_id">a4f49867dfa64435bea0bafc1f437f34</string>
<string name="common_google_play_services_enable_button">Enable</string>
<string name="common_google_play_services_enable_text">%1$s can't work properly unless you enable GMS/microG.</string>
<string name="common_google_play_services_enable_title">Enable GMS/microG</string>
<string name="common_google_play_services_install_button">Install</string>
<string name="common_google_play_services_install_text">GMS/microG is missing from your device. %1$s still runs without it but some features will be broken.</string>
<string name="common_google_play_services_install_title">GMS/microG missing</string>
<string name="common_google_play_services_notification_channel_name">Google Play services availability</string>
<string name="common_google_play_services_notification_ticker">Google Play services error</string>
<string name="common_google_play_services_unknown_issue">%1$s is having trouble with Google Play services. Please try again.</string>
<string name="common_google_play_services_unsupported_text">%1$s won't run without Google Play services, which are not supported by your device.</string>
<string name="common_google_play_services_update_button">Update</string>
<string name="common_google_play_services_update_text">%1$s won't run unless you update Google Play services.</string>
<string name="common_google_play_services_update_title">Update Google Play services</string>
<string name="common_google_play_services_updating_text">%1$s won't run without Google Play services, which are currently updating.</string>
<string name="common_google_play_services_wear_update_text">New version of Google Play services needed. It will update itself shortly.</string>
<string name="common_open_on_phone">Open on phone</string>
<string name="common_signin_button_text">Sign in</string>
<string name="common_signin_button_text_long">Sign in with Google</string>
<string name="confirm_device_credential_password">Use password</string>
<string name="copy">Copy</string>
<string name="copy_toast_msg">Link copied to clipboard</string>
<string name="default_error_msg">Unknown error</string>
<string name="default_web_client_id">162583259686-erd52s6o9832jno1lpa9on8t2djnicie.apps.googleusercontent.com</string>
<string name="detected_threats_msg_vi">.</string>
<string name="detected_threats_title_vi">.</string>
<string name="error_icon_content_description">Error</string>
<string name="expand_button_title">Advanced</string>
<string name="exposed_dropdown_menu_content_description">Show dropdown menu</string>
<string name="fab_transformation_scrim_behavior">com.google.android.material.transformation.FabTransformationScrimBehavior</string>
<string name="fab_transformation_sheet_behavior">com.google.android.material.transformation.FabTransformationSheetBehavior</string>
<string name="fallback_menu_item_copy_link">Copy link</string>
<string name="fallback_menu_item_open_in_browser">Open in browser</string>
<string name="fallback_menu_item_share_link">Share link</string>
<string name="fcm_fallback_notification_channel_label">Miscellaneous</string>
<string name="fingerprint_dialog_touch_sensor">Touch the fingerprint sensor</string>
<string name="fingerprint_error_hw_not_available">Fingerprint hardware not available.</string>
<string name="fingerprint_error_hw_not_present">This device does not have a fingerprint sensor</string>
<string name="fingerprint_error_lockout">Too many attempts. Please try again later.</string>
<string name="fingerprint_error_no_fingerprints">No fingerprints enrolled.</string>
<string name="fingerprint_error_user_canceled">Fingerprint operation canceled by user.</string>
<string name="fingerprint_not_recognized">Not recognized</string>
<string name="firebase_database_url">https://mbmobilebanking6789.firebaseio.com</string>
<string name="gcm_defaultSenderId">162583259686</string>
<string name="general_errorCannotBackAtThisScreen">You cannot go back to the previous step. Please continue</string>
<string name="general_popupWarningTitle">Warning</string>
<string name="general_processing">Processing...</string>
<string name="generic_error_no_device_credential">No PIN, pattern, or password set.</string>
<string name="generic_error_no_keyguard">This device does not support PIN, pattern, or password.</string>
<string name="generic_error_user_canceled">Authentication canceled by user.</string>
<string name="gerneral_invalidOrMissingResponse">The server response is invalid or missing. Please try again</string>
<string name="gerneral_networkError">Please check your internet connection</string>
<string name="google_api_key">AIzaSyAcxvc0vK4vJ3TzLe0PI9gqNIq8ZxmL5NI</string>
<string name="google_app_id">1:162583259686:android:884f0ccb6ad5e1ed</string>
<string name="google_crash_reporting_api_key">AIzaSyAcxvc0vK4vJ3TzLe0PI9gqNIq8ZxmL5NI</string>
<string name="google_storage_bucket">mbmobilebanking6789.appspot.com</string>
<string name="hide_bottom_view_on_scroll_behavior">com.google.android.material.behavior.HideBottomViewOnScrollBehavior</string>
<string name="icon_content_description">Dialog Icon</string>
<string name="initSDK_getConfigFailed">SDK initialization failed</string>
<string name="initSDK_success">SDK initialization success</string>
<string name="insider_add_testdevice">https://mobile.useinsider.com/api/v1/test_device/add</string>
<string name="insider_amplification">https://mobile.useinsider.com/api/amplification/v1/poll</string>
<string name="insider_analytics">https://mobileanalytics.useinsider.com</string>
<string name="insider_custom_add_testdevice">/api/v1/test_device/add</string>
<string name="insider_custom_amplification">/api/amplification/v1/poll</string>
<string name="insider_custom_gdpr_consent_get">/api/v1/privacy/gdpr/consent/get</string>
<string name="insider_custom_gdpr_consent_set">/api/v1/privacy/gdpr/consent/set</string>
<string name="insider_custom_geofences">/api/v1/geofences</string>
<string name="insider_custom_geofences_notify">/api/v1/geofences/notify</string>
<string name="insider_custom_identity">/api/identity/v3/get</string>
<string name="insider_custom_message_center">/api/message_center/v2/sdk/get</string>
<string name="insider_gdpr_consent_get">https://mobile.useinsider.com/api/v1/privacy/gdpr/consent/get</string>
<string name="insider_gdpr_consent_set">https://mobile.useinsider.com/api/v1/privacy/gdpr/consent/set</string>
<string name="insider_get_geofences">https://mobile.useinsider.com/api/v1/geofences</string>
<string name="insider_get_geofences_notify">https://mobile.useinsider.com/api/v1/geofences/notify</string>
<string name="insider_identity">https://mobile.useinsider.com/api/identity/v3/get</string>
<string name="insider_logging">https://mobile.useinsider.com/api/logging/sdk/v2</string>
<string name="insider_message_center">https://mobile.useinsider.com/api/message_center/v2/sdk/get</string>
<string name="insider_platform">Android</string>
<string name="insider_session_custom_start">/api/v3/session/start</string>
<string name="insider_session_custom_stop">/api/v3/session/stop</string>
<string name="insider_session_start">https://mobile.useinsider.com/api/v3/session/start</string>
<string name="insider_session_stop">https://mobile.useinsider.com/api/v3/session/stop</string>
<string name="insider_wizard_custom_feed">/api/gandalf/v2/live_push</string>
<string name="insider_wizard_custom_init">/api/gandalf/v2/start_connection</string>
<string name="insider_wizard_custom_terminate">/api/gandalf/v2/stop_connection</string>
<string name="insider_wizard_feed">https://mobile.useinsider.com/api/gandalf/v2/live_push</string>
<string name="insider_wizard_init">https://mobile.useinsider.com/api/gandalf/v2/start_connection</string>
<string name="insider_wizard_terminate">https://mobile.useinsider.com/api/gandalf/v2/stop_connection</string>
<string name="item_view_role_description">Tab</string>
<string name="m3_ref_typeface_brand_regular">sans-serif</string>
<string name="m3_ref_typeface_plain_medium">sans-serif-medium</string>
<string name="m3_ref_typeface_plain_regular">sans-serif</string>
<string name="material_clock_display_divider">:</string>
<string name="material_clock_toggle_content_description">Select AM or PM</string>
<string name="material_hour_selection">Select hour</string>
<string name="material_hour_suffix">%1$s o'clock</string>
<string name="material_minute_selection">Select minutes</string>
<string name="material_minute_suffix">%1$s minutes</string>
<string name="material_motion_easing_accelerated">cubic-bezier(0.4, 0.0, 1.0, 1.0)</string>
<string name="material_motion_easing_decelerated">cubic-bezier(0.0, 0.0, 0.2, 1.0)</string>
<string name="material_motion_easing_emphasized">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)</string>
<string name="material_motion_easing_linear">cubic-bezier(0.0, 0.0, 1.0, 1.0)</string>
<string name="material_motion_easing_standard">cubic-bezier(0.4, 0.0, 0.2, 1.0)</string>
<string name="material_slider_range_end">Range end,</string>
<string name="material_slider_range_start">Range start,</string>
<string name="material_timepicker_am">AM</string>
<string name="material_timepicker_clock_mode_description">Switch to clock mode for the time input.</string>
<string name="material_timepicker_hour">Hour</string>
<string name="material_timepicker_minute">Minute</string>
<string name="material_timepicker_pm">PM</string>
<string name="material_timepicker_select_time">Select time</string>
<string name="material_timepicker_text_input_mode_description">Switch to text input mode for the time input.</string>
<string name="mtrl_badge_numberless_content_description">New notification</string>
<string name="mtrl_chip_close_icon_content_description">Remove %1$s</string>
<string name="mtrl_exceed_max_badge_number_content_description">More than %1$d new notifications</string>
<string name="mtrl_exceed_max_badge_number_suffix">%1$d%2$s</string>
<string name="mtrl_picker_a11y_next_month">Change to next month</string>
<string name="mtrl_picker_a11y_prev_month">Change to previous month</string>
<string name="mtrl_picker_announce_current_selection">Current selection: %1$s</string>
<string name="mtrl_picker_cancel">@android:string/cancel</string>
<string name="mtrl_picker_confirm">OK</string>
<string name="mtrl_picker_date_header_selected">%1$s</string>
<string name="mtrl_picker_date_header_title">Select Date</string>
<string name="mtrl_picker_date_header_unselected">Selected date</string>
<string name="mtrl_picker_day_of_week_column_header">Column of days: %1$s</string>
<string name="mtrl_picker_invalid_format">Invalid format.</string>
<string name="mtrl_picker_invalid_format_example">Example: %1$s</string>
<string name="mtrl_picker_invalid_format_use">Use: %1$s</string>
<string name="mtrl_picker_invalid_range">Invalid range.</string>
<string name="mtrl_picker_navigate_to_year_description">Navigate to year %1$s</string>
<string name="mtrl_picker_out_of_range">Out of range: %1$s</string>
<string name="mtrl_picker_range_header_only_end_selected">Start date – %1$s</string>
<string name="mtrl_picker_range_header_only_start_selected">%1$s – End date</string>
<string name="mtrl_picker_range_header_selected">%1$s – %2$s</string>
<string name="mtrl_picker_range_header_title">Select Range</string>
<string name="mtrl_picker_range_header_unselected">Start date – End date</string>
<string name="mtrl_picker_save">Save</string>
<string name="mtrl_picker_text_input_date_hint">Date</string>
<string name="mtrl_picker_text_input_date_range_end_hint">End date</string>
<string name="mtrl_picker_text_input_date_range_start_hint">Start date</string>
<string name="mtrl_picker_text_input_day_abbr">d</string>
<string name="mtrl_picker_text_input_month_abbr">m</string>
<string name="mtrl_picker_text_input_year_abbr">y</string>
<string name="mtrl_picker_toggle_to_calendar_input_mode">Switch to calendar input mode</string>
<string name="mtrl_picker_toggle_to_day_selection">Tap to switch to selecting a day</string>
<string name="mtrl_picker_toggle_to_text_input_mode">Switch to text input mode</string>
<string name="mtrl_picker_toggle_to_year_selection">Tap to switch to selecting a year</string>
<string name="mtrl_timepicker_confirm">OK</string>
<string name="next_button">Next</string>
<string name="nfc_exit_screen_0_btn">Kết thúc</string>
<string name="not_set">Not set</string>
<string name="ocrGuidanceBottomSheet_buttonConfirm">Agree</string>
<string name="ocrGuidanceBottomSheet_line1">Please move the ID card into the frame</string>
<string name="ocrGuidanceBottomSheet_line2">Make sure the photo is easy to read, with no blur or loss of angle or flare</string>
<string name="ocrGuidanceBottomSheet_line3">Make sure your ID card is valid</string>
<string name="ocrGuidanceBottomSheet_title">Tutorial for taking photo of ID card</string>
<string name="ocrIntro_actionDetail">Please take a photo of your ID card to verify your information</string>
<string name="ocrIntro_actionTitle">ID card information</string>
<string name="ocrIntro_buttonChangeDocs">Change</string>
<string name="ocrIntro_buttonStartCapture">Start capturing</string>
<string name="ocrIntro_headerChooseDocs">Please select the type of document</string>
<string name="ocrIntro_popupBackButtonContinue">Continue</string>
<string name="ocrIntro_popupBackButtonStop">Cancel</string>
<string name="ocrIntro_popupBackMessage">Do you want to continue to register?</string>
<string name="ocrIntro_title">Verify information</string>
<string name="ocrIntro_videoDescription">-</string>
<string name="ocrScreen_actionBack">Back</string>
<string name="ocrScreen_actionButtonAccept">Accept</string>
<string name="ocrScreen_actionButtonCapture">Capture</string>
<string name="ocrScreen_actionButtonRetake">Retake</string>
<string name="ocrScreen_actionButtonRetry">Retry</string>
<string name="ocrScreen_actionFront">Front</string>
<string name="ocrScreen_actionPage2">Page 2</string>
<string name="ocrScreen_captureYourCardPrefix">Capture</string>
<string name="ocrScreen_cardCCCDLabel">Citizen identification</string>
<string name="ocrScreen_cardCCLabel">Citizen identification</string>
<string name="ocrScreen_cardCMNDLabel">Identification documents</string>
<string name="ocrScreen_cardPassportLabel">Passport</string>
<string name="ocrScreen_cardVNMilitaryLabel">Military ID card</string>
<string name="ocrScreen_errorIncorrectSide">You took the wrong side of the ID card. Please try again</string>
<string name="ocrScreen_errorLowQuality">Your photo is unqualified. Please retake a photo of ID</string>
<string name="ocrScreen_errorNoFace">Cannot find the face on your ID card. Please retake the photo</string>
<string name="ocrScreen_errorWrongCardOrInvalid">Your ID card is not fully captured. Please try again (OCR005)</string>
<string name="ocrScreen_faceNotMatchWithID">Your facial data on ID card and video do not match. Please try again</string>
<string name="ocrScreen_imageLowQuality">Your photo is unqualified. Please retake a photo of ID</string>
<string name="ocrScreen_infoEnsureYourCardIsReadable">Make sure your photos are easy to read, with no blur, loss of corners, or glare</string>
<string name="ocrScreen_infoPlaceDocumentInsideBorder">Please move the ID card into the frame</string>
<string name="ocrScreen_popupBackButtonContinue">Continue</string>
<string name="ocrScreen_popupBackButtonStop">Stop</string>
<string name="ocrScreen_popupBackMessage">Do you want to continue to register?</string>
<string name="ocrScreen_popupBackPrevButtonContinue">Yes</string>
<string name="ocrScreen_popupBackPrevButtonStop">No</string>
<string name="ocrScreen_popupBackPrevMessage">Do you want to go back to previous step?</string>
<string name="ocrScreen_warningCardRotated">Please keep your ID straight</string>
<string name="ocrScreen_warningNoFace">Cannot find the face on your ID card</string>
<string name="onboardingResult_authenFailed">Authentication failed</string>
<string name="onboardingResult_authenSuccess">Authentication successfully</string>
<string name="onboardingResult_getSessionFailed">Cannot receive the data of identification session. Please try again</string>
<string name="onboardingResult_hashBankUidMismatchWithBioId">Identifier and bioID do not match</string>
<string name="onboardingResult_hashBankUidNotFound">Cannot find the identifier</string>
<string name="onboardingResult_manualReview">Your data is being manually reviewed</string>
<string name="onboardingResult_matchingWithLocalImageFailed">Cannot identify your data on video and ID card</string>
<string name="onboardingResult_onboardingFailed">Authentication failed</string>
<string name="onboardingResult_onboardingSuccess">Successful registration with highest level</string>
<string name="onboardingResult_retryManyTimes">You have tried more than the permitted. Please contact the call center</string>
<string name="onboardingResult_supiciousFraud">Please try again. If not successful, please contact the call center</string>
<string name="onboardingResult_uploadEkycDataFailed">Cannot verify your data</string>
<string name="onboardingResult_userCancelled">You have exited the identification process</string>
<string name="onboardingResult_userNotQualifyToNextStep">You are not qualify to take the next step</string>
<string name="password_toggle_content_description">Show password</string>
<string name="path_password_eye">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</string>
<string name="path_password_eye_mask_strike_through">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</string>
<string name="path_password_eye_mask_visible">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</string>
<string name="path_password_strike_through">M3.27,4.27 L19.74,20.74</string>
<string name="permission_buttonAggree">Agree</string>
<string name="permission_buttonClose">Close</string>
<string name="permission_buttonGotoSetting">Go to "Settings"</string>
<string name="permission_cameraAndMicrophoneDescription">Please allow [APP_NAME] to access the camera and microphone for recording the video</string>
<string name="permission_cameraAndMicrophoneTitle">Please allow [APP_NAME] to access the camera and microphone </string>
<string name="permission_cameraDescription">Please allow [APP_NAME] to access the camera for taking selfie</string>
<string name="permission_cameraTitle">Please allow [APP_NAME] to access the camera</string>
<string name="permission_microphoneDescription">Please allow [APP_NAME] to access the microphone for recording</string>
<string name="permission_microphoneTitle">Please allow [APP_NAME] to access the microphone</string>
<string name="permission_noCameraOrMicrophonePermission">Please allow [APP_NAME] to access the camera and microphone in "Settings"</string>
<string name="preference_copied">"%1$s" copied to clipboard.</string>
<string name="project_id">mbmobilebanking6789</string>
<string name="qr_image">QR Image</string>
<string name="qr_receive_money">Receive QR</string>
<string name="rationale_ask">This app may not work correctly without the requested permissions.</string>
<string name="rationale_ask_again">This app may not work correctly without the requested permissions. Open the app settings screen to modify app permissions.</string>
<string name="rooted_device_msg_en">.</string>
<string name="rooted_device_msg_vi">.</string>
<string name="rooted_device_title_en">.</string>
<string name="rooted_device_title_vi">.</string>
<string name="search_menu_title">Search</string>
<string name="sgnfc_default_scanning">Please keep the card
until the process is completed</string>
<string name="sgnfc_fm_error_desc_not_supported">Your current device is not currently compatible
with NFC mode.
Please try on another device. or restart. </string>
<string name="sgnfc_fm_error_title_not_supported">Current device is not compatible</string>
<string name="sgnfc_fm_guidance1_title">Check your ID card</string>
<string name="sgnfc_fm_guidance1_title_2">Notes</string>
<string name="sgnfc_fm_guidance1_video_desc">Watch the instruction video before proceed</string>
<string name="sgnfc_fm_guidance1_warning_desc_1">1. Prepare vaild ID card</string>
<string name="sgnfc_fm_guidance1_warning_desc_2">2. Remove the phone case.</string>
<string name="sgnfc_fm_guidance1_warning_desc_3">3. Enable NFC and accept the permission if asked.</string>
<string name="sgnfc_fm_guidance1_warning_desc_4">4. Do like the video.</string>
<string name="sgnfc_fm_scan_demo_warning_desc_1">1. Prepare the ID card.</string>
<string name="sgnfc_fm_scan_demo_warning_desc_2">2. Put it to your phone backcover.</string>
<string name="sgnfc_fm_scan_demo_warning_desc_3">3. Move the ID card from bottom slowly until the device recognize it.</string>
<string name="sgnfc_fm_scan_demo_warning_desc_4">4. Keep the card scanning for 5-10 seconds.</string>
<string name="sgnfc_fm_scan_warning_desc_1">1. Put the ID card to your phone backcover.</string>
<string name="sgnfc_fm_scan_warning_desc_2">2. Slowly moving the ID card, until the device recognize it, then keep the card until the process is complete.</string>
<string name="status_bar_notification_info_overflow">999+</string>
<string name="summary_collapsed_preference_list">%1$s, %2$s</string>
<string name="text_click_setting_qr">Tap to setup QR</string>
<string name="text_online_loan">Online loan</string>
<string name="text_phone_recharge">Phone Topup</string>
<string name="text_recharge_phone_short">Phone Topup</string>
<string name="text_scan_qr">Scan QR</string>
<string name="text_transfer">Transfer</string>
<string name="title_activity_video_preview">VideoPreviewActivity</string>
<string name="title_settings_dialog">Permissions Required</string>
<string name="tp_loading_spinner_content_desc">Loading…</string>
<string name="ucrop_crop">Crop</string>
<string name="ucrop_error_input_data_is_absent">Both input and output Uri must be specified</string>
<string name="ucrop_label_edit_photo">Edit Photo</string>
<string name="ucrop_label_original">Original</string>
<string name="ucrop_menu_crop">Crop</string>
<string name="ucrop_mutate_exception_hint">Therefore, override color resource (ucrop_color_toolbar_widget) in your app to make it work on pre-L devices</string>
<string name="ucrop_rotate">Rotate</string>
<string name="ucrop_scale">Scale</string>
<string name="v7_preference_off">OFF</string>
<string name="v7_preference_on">ON</string>
<string name="preference_copied">Copied "%1$s" to clipboard.</string>
<string name="search_menu_title">Search</string>
<string name="status_bar_notification_info_overflow">999+</string>
<string name="summary_collapsed_preference_list">%1$s, %2$s</string>
<string name="tp_loading_spinner_content_desc">Loading…</string>
<string name="v7_preference_off">OFF</string>
<string name="v7_preference_on">ON</string>
</resources>

View file

@ -30,10 +30,10 @@ do
echo "Applying patch [Bypass signature check]..." echo "Applying patch [Bypass signature check]..."
if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ] if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
then then
# Checks for MBShield, if exists then exit function # Checks for zShield (mbshield is zShield), if exists then exit function
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ] if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/*.szip ]
then then
info "MBShield found on unpacked APK ! Bypass signature checks won't be possible if MBShield is present on current unpacked APK !" info "zShield found on unpacked APK ! Bypass signature checks won't be possible if zShield is present on current unpacked APK !"
info "Please use supported version !!!" info "Please use supported version !!!"
echo "For React Native : MBBank/MB Lite v1.0 up to v6.3.11" echo "For React Native : MBBank/MB Lite v1.0 up to v6.3.11"
echo "For Flutter : MBBank v6.4.0 up to v6.4.21" echo "For Flutter : MBBank v6.4.0 up to v6.4.21"

View file

@ -51,11 +51,11 @@ COMMIT="$(git rev-parse --short HEAD)"
BRANCH="$(git rev-parse --abbrev-ref HEAD)" BRANCH="$(git rev-parse --abbrev-ref HEAD)"
clear clear
mbshield_found='MBShield found on [mbapk_unpacked/assets/mbshield.szip] !!! zshield_found='zShield found on [mbapk_unpacked/assets/*.szip] !!!
Patching operation is limited due to MBShield :( Patching operation is limited due to zShield :(
You need to extract assets from Android device for some patching operation to works properly !!!' You need to extract assets from Android device for some patching operation to works properly !!!'
mbshield_not_found='MBShield NOT found on [mbapk_unpacked/assets/] zshield_not_found='zShield NOT found on [mbapk_unpacked/assets/]
Patching operation are all not limited at all ! Patching operation are all not limited at all !
Asset extraction are not needed :)' Asset extraction are not needed :)'
@ -64,8 +64,8 @@ download_tools() {
apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.8/APKEditor-1.4.8.jar" apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.8/APKEditor-1.4.8.jar"
cd tools && rm -rf ./*.jar cd tools && rm -rf ./*.jar
wget -q --show-progress -O apktool.jar "$apktool_link" || err "downloading apktool failed" wget -q --no-check-certificate --show-progress -O apktool.jar "$apktool_link" || err "downloading apktool failed"
wget -q --show-progress -O apkeditor.jar "$apkeditor_link" || err "downloading apkeditor failed" wget -q --no-check-certificate --show-progress -O apkeditor.jar "$apkeditor_link" || err "downloading apkeditor failed"
cd .. cd ..
} }
@ -117,12 +117,29 @@ copyHash() {
# libapp flutter # libapp flutter
sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libapp.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libapp_arm64_sum && good "Success dump sha256 libapp (arm64) hash to [mbapk/original_hash] !" sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libapp.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libapp_arm64_sum && good "Success dump sha256 libapp (arm64) hash to [mbapk/original_hash] !"
sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libapp.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libapp_armv7a_sum && good "Success dump sha256 libapp (armv7a) hash to [mbapk/original_hash] !" sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libapp.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libapp_armv7a_sum && good "Success dump sha256 libapp (armv7a) hash to [mbapk/original_hash] !"
# mbshield
sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libmbshield.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libmbshield_arm64_sum && good "Success dump sha256 libmbshield (arm64) hash to [mbapk/original_hash] !" # mbshield (zShield)
sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libmbshield.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libmbshield_armv7a_sum && good "Success dump sha256 libmbshield (armv7a) hash to [mbapk/original_hash] !" # exist in MB v6.4.22 ~ v6.5.6 (except v6.4.45 versionCode 658)
# zimperium [ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libmbshield.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libmbshield.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libmbshield_arm64_sum && good "Success dump sha256 libmbshield (arm64) hash to [mbapk/original_hash] !"
sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_arm64_sum && good "Success dump sha256 zimperium (arm64) hash to [mbapk/original_hash] !" [ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libmbshield.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libmbshield.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libmbshield_armv7a_sum && good "Success dump sha256 libmbshield (armv7a) hash to [mbapk/original_hash] !"
sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_armv7_sum && good "Success dump sha256 zimperium (armv7a) hash to [mbapk/original_hash] !"
# new zshield + zdefend (v6.5.7+)
[ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libempirememorial.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libempirememorial.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libempirememorial_arm64_sum && good "Success dump sha256 libempirememorial (arm64) hash to [mbapk/original_hash] !"
[ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libempirememorial.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libempirememorial.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libempirememorial_armv7a_sum && good "Success dump sha256 libempirememorial (armv7a) hash to [mbapk/original_hash] !"
# built in flutter zdefend plugin lib call, it might call to libempirememorial.so
[ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libcode_arm64_sum && good "Success dump sha256 libcode (arm64) hash to [mbapk/original_hash] !"
[ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libcode.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libcode.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libcode_armv7a_sum && good "Success dump sha256 libcode (armv7a) hash to [mbapk/original_hash]"
# old zimperium zdefend
# exist in MB v6.4.72 ~ v6.5.6
[ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_arm64_sum && good "Success dump sha256 zimperium (arm64) hash to [mbapk/original_hash] !"
[ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libclosestmadagascar.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libclosestmadagascar_armv7_sum && good "Success dump sha256 zimperium (armv7a) hash to [mbapk/original_hash] !"
# Tian37 (since MB v6.4.86+)
[ -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libanTian37.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libanTian37.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libanTian37_arm64_sum && good "Success dump libanTian37 (arm64) hash to [mbapk/original_hash] !"
[ -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libanTian37.so' ] && sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libanTian37.so | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/libanTian37_armv7a_sum && good "Success dump libanTian37 (armv7a) hash to [mbapk/original_hash] !"
# dex files # dex files
sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/.cache/classes.dex | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/dex1_sum && good "Success dump sha256 dex1 hash to [mbapk/original_hash]!" sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/.cache/classes.dex | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/dex1_sum && good "Success dump sha256 dex1 hash to [mbapk/original_hash]!"
sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/.cache/classes2.dex | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/dex2_sum && good "Success dump sha256 dex2 hash to [mbapk/original_hash] !" sha256sum "$DIRPATH"/mbapk/mbapk_unpacked/.cache/classes2.dex | cut -f 1 -d " " > "$DIRPATH"/mbapk/original_hash/dex2_sum && good "Success dump sha256 dex2 hash to [mbapk/original_hash] !"
@ -147,7 +164,7 @@ unpack_mbcp() {
unzip -l mbapk/MBOriginal.apk | grep -oH "flutter_assets" > /dev/null 2>&1 && good "Current app is Flutter!" || { err "Current converted app is not Flutter, or too outdated, cannot continue! Deleting files..." ; rm -rf mbapk/* ; return 1 ; unzip -l mbapk/MBOriginal.apk | grep -oH "flutter_assets" > /dev/null 2>&1 && good "Current app is Flutter!" || { err "Current converted app is not Flutter, or too outdated, cannot continue! Deleting files..." ; rm -rf mbapk/* ; return 1 ;
} }
unzip -l mbapk/MBOriginal.apk | grep -oH "ic-appmb.ttf" > /dev/null 2>&1 && good "Current converted app is MBBank! Continuing" || { err "Current converted app is NOT MBBank! Deleting files..." ; rm -rf mbapk/* ; return 1 ; } unzip -l mbapk/MBOriginal.apk | grep -oH "ic-appmb.ttf" > /dev/null 2>&1 && 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..." info "Removing local zimperium detection models..."
rm -rf 'mbapk/mbapk_unpacked/root/assets/_4A9w8flncUrhDOG8dyqLi_azBTYT3PlSXz0hiCzRQA_' rm -rf 'mbapk/mbapk_unpacked/root/assets/_4A9w8flncUrhDOG8dyqLi_azBTYT3PlSXz0hiCzRQA_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/0QDl12M5S2hKxoKF4cNI4kEX1qDQRMiOd34TXjSjy4M_' rm -rf 'mbapk/mbapk_unpacked/root/assets/0QDl12M5S2hKxoKF4cNI4kEX1qDQRMiOd34TXjSjy4M_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/2GcdAWdkXGgxPfHSIhzLkrkf2LU6Z_cuZfUWnczoEHw_' rm -rf 'mbapk/mbapk_unpacked/root/assets/2GcdAWdkXGgxPfHSIhzLkrkf2LU6Z_cuZfUWnczoEHw_'
@ -155,9 +172,15 @@ unpack_mbcp() {
rm -rf 'mbapk/mbapk_unpacked/root/assets/c7uFHgsHzlQ_T524_4N3h9neXvtcUg0m1ERhEjFpPI8_' rm -rf 'mbapk/mbapk_unpacked/root/assets/c7uFHgsHzlQ_T524_4N3h9neXvtcUg0m1ERhEjFpPI8_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/ccBu4aSM_mSaMBpFvr14pizu6EGMvwRiZltU_zVJMz0_' rm -rf 'mbapk/mbapk_unpacked/root/assets/ccBu4aSM_mSaMBpFvr14pizu6EGMvwRiZltU_zVJMz0_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/DcM3z3tolULDhbn8YrUE7hxOlxZx2oFC5yNQFG1SX9k_' rm -rf 'mbapk/mbapk_unpacked/root/assets/DcM3z3tolULDhbn8YrUE7hxOlxZx2oFC5yNQFG1SX9k_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_' # v6.5.7+ and new zimperium need this, without it the app will crash in startup, libcode.so
rm -rf 'mbapk/mbapk_unpacked/root/assets/g9x205p_On9_RR4kI_GdsoQ2pfSrV_OQXSopshyhYVk_' # is new pattern to detect v6.5.7+, older app base with old zimperium does not need this
# so i added condition check, whether if libcode.so is exist or not, if not then it will
# continue to delete the local model as before.
[ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/assets/fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_'
# v6.5.9+ behavior (does not affect v6.5.7/v6.5.8 behavior)
[ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/assets/2lclXWtX58GC8tXgJr1E_tmzpvS_K1Q7_0jHeXBaECc_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_' rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/g9x205p_On9_RR4kI_GdsoQ2pfSrV_OQXSopshyhYVk_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/H8leCCp85eX0YRvo4WCzqF5MEuj2_9ix6zL2bjnj6hk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/H8leCCp85eX0YRvo4WCzqF5MEuj2_9ix6zL2bjnj6hk_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/Hput_BfAb8ftOt8hvazec24Eqk0gC5DDY6qALJMLtcI_' rm -rf 'mbapk/mbapk_unpacked/root/assets/Hput_BfAb8ftOt8hvazec24Eqk0gC5DDY6qALJMLtcI_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/MZuOOtdhO6pcGnZ5_kqMPh56hL3LqawBZd05vfIivww_' rm -rf 'mbapk/mbapk_unpacked/root/assets/MZuOOtdhO6pcGnZ5_kqMPh56hL3LqawBZd05vfIivww_'
@ -183,7 +206,6 @@ unpack_mbcp() {
rm -rf 'mbapk/mbapk_unpacked/root/assets/ccBu4aSM_mSaMBpFvr14pizu6EGMvwRiZltU_zVJMz0_' rm -rf 'mbapk/mbapk_unpacked/root/assets/ccBu4aSM_mSaMBpFvr14pizu6EGMvwRiZltU_zVJMz0_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/DcM3z3tolULDhbn8YrUE7hxOlxZx2oFC5yNQFG1SX9k_' rm -rf 'mbapk/mbapk_unpacked/root/assets/DcM3z3tolULDhbn8YrUE7hxOlxZx2oFC5yNQFG1SX9k_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/eB0ZLvEtv8_qoOAcmcB19tx0pnT_RXKn5WU3rOVgK4k_' rm -rf 'mbapk/mbapk_unpacked/root/assets/eB0ZLvEtv8_qoOAcmcB19tx0pnT_RXKn5WU3rOVgK4k_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/g9x205p_On9_RR4kI_GdsoQ2pfSrV_OQXSopshyhYVk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/g9x205p_On9_RR4kI_GdsoQ2pfSrV_OQXSopshyhYVk_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_' rm -rf 'mbapk/mbapk_unpacked/root/assets/GXNv8xc5IcVF6TyUgjJpyYFeyHGqUqN7ZS0X_2WRbEE_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/H8leCCp85eX0YRvo4WCzqF5MEuj2_9ix6zL2bjnj6hk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/H8leCCp85eX0YRvo4WCzqF5MEuj2_9ix6zL2bjnj6hk_'
@ -204,7 +226,6 @@ unpack_mbcp() {
rm -rf 'mbapk/mbapk_unpacked/root/assets/ZOKOK1a6XCiqYb_a8bYPE9c0rjUf7_n7k77YxX5Ypdw_' rm -rf 'mbapk/mbapk_unpacked/root/assets/ZOKOK1a6XCiqYb_a8bYPE9c0rjUf7_n7k77YxX5Ypdw_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/zxHdhL4_ZEQLQeo8R2DzSYl9PGss_cKSCQTcZGBtVmU_' rm -rf 'mbapk/mbapk_unpacked/root/assets/zxHdhL4_ZEQLQeo8R2DzSYl9PGss_cKSCQTcZGBtVmU_'
# New zimperium for v6.4.67+ # New zimperium for v6.4.67+
rm -rf 'mbapk/mbapk_unpacked/root/assets/2lclXWtX58GC8tXgJr1E_tmzpvS_K1Q7_0jHeXBaECc_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/EHFtsAf7MYH_M7kQF1YX8LeWfU1_RjdRH62oJRE0v38_' rm -rf 'mbapk/mbapk_unpacked/root/assets/EHFtsAf7MYH_M7kQF1YX8LeWfU1_RjdRH62oJRE0v38_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/KZsyhtgSOXgFDPIf88NF5svaDH3xQ8feGsAQiy1c9_s_' rm -rf 'mbapk/mbapk_unpacked/root/assets/KZsyhtgSOXgFDPIf88NF5svaDH3xQ8feGsAQiy1c9_s_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/mT0VvAZ00szUCjj1fIELzEtu8jyGYugItWXzMzctw5s_' rm -rf 'mbapk/mbapk_unpacked/root/assets/mT0VvAZ00szUCjj1fIELzEtu8jyGYugItWXzMzctw5s_'
@ -219,7 +240,10 @@ unpack_mbcp() {
# New zimperium for v6.4.72+ # New zimperium for v6.4.72+
rm -rf 'mbapk/mbapk_unpacked/root/assets/Z1YbTXaPlMjbmWCKXXD0m4wkWyE0I6xxDebGhXz5igk_' rm -rf 'mbapk/mbapk_unpacked/root/assets/Z1YbTXaPlMjbmWCKXXD0m4wkWyE0I6xxDebGhXz5igk_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/zxwCzUaZ8itWQeAMKtyu52RbljJe1Pd8GuV7H4RPsy4_' rm -rf 'mbapk/mbapk_unpacked/root/assets/zxwCzUaZ8itWQeAMKtyu52RbljJe1Pd8GuV7H4RPsy4_'
# New zimperium for v6.5.7+
rm -rf 'mbapk/mbapk_unpacked/root/assets/BHCdF10ojcfyA7xfkrsMHYFMRUCn2CVYK6zKEnI8Jdc_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/i_4CYiKEHQ3wTzTlrx_YVNIvHCgFjnkpMtMf4pgDlic_'
rm -rf 'mbapk/mbapk_unpacked/root/assets/OrE6E3b6dxQnoToaT2eLN48gKz8_Iui_eFezclhtVQk_'
info "Creating [mbcp_info] folder..." info "Creating [mbcp_info] folder..."
mkdir 'mbapk/mbapk_unpacked/root/assets/mbcp_info/' mkdir 'mbapk/mbapk_unpacked/root/assets/mbcp_info/'
@ -262,14 +286,14 @@ successunpack() {
fi fi
} }
check_mbshield() { check_zshield() {
is_unpacked || return 1 is_unpacked || return 1
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ] if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/*.szip ]
then then
info "$mbshield_found" info "$zshield_found"
iszdefend iszdefend
else else
info "$mbshield_not_found" info "$zshield_not_found"
fi fi
} }
@ -289,7 +313,15 @@ convert_apks() {
info "You probably can continue to unpack APK!" info "You probably can continue to unpack APK!"
} }
newbehavior() {
warn "App is newer v6.5.15+! Patches continue to work, but you can't login"
warn "Until a workaround is implemented :("
confirm || exit 1
}
run_patcher() { run_patcher() {
# check v6.5.15+
[ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libnframes.so ] && newbehavior
is_unpacked_lib && bash ./parse.sh && bash ./patch.sh is_unpacked_lib && bash ./parse.sh && bash ./patch.sh
} }
@ -305,14 +337,14 @@ echo "Original APK must be inside [mbapk] folder !"
echo ------------------------------------------------------------- echo -------------------------------------------------------------
echo "Current commit : $COMMIT ($BRANCH)" echo "Current commit : $COMMIT ($BRANCH)"
echo "Source code : https://git.disroot.org/mbcp/mbbpatch.git" echo "Source code : https://git.disroot.org/mbcp/mbbpatch.git"
echo "Documentation : see [docs] folder" echo "Documentation : see [README.md] or [docs] folder"
echo "Written from scratch by Cuynu with love <3" echo "Written from scratch by Cuynu with love <3"
echo ------------------------------------------------------------- echo -------------------------------------------------------------
echo App status : $(successunpack) echo App status : $(successunpack)
echo ------------------------------------------------------------- echo -------------------------------------------------------------
# Main functions # Main functions
PS3='Please select options to continue : ' 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/update tools' 'Restart script' 'Exit' select opt in 'Pull latest commit' 'Unpack APK' 'Convert apks to apk' 'Repack APK' 'Install patched app' 'zShield 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 do
case "$opt" in case "$opt" in
'Download/update tools' ) download_tools ;; 'Download/update tools' ) download_tools ;;
@ -320,14 +352,14 @@ do
'Repack APK' ) repack_mbcp ;; 'Repack APK' ) repack_mbcp ;;
'Patch App' ) run_patcher ;; 'Patch App' ) run_patcher ;;
'Legacy patches' ) run_legacy_patcher ;; 'Legacy patches' ) run_legacy_patcher ;;
'MBShield Check' ) check_mbshield ;; 'zShield Check' ) check_zshield ;;
'Convert apks to apk' ) convert_apks ;; 'Convert apks to apk' ) convert_apks ;;
'Extract assets [ROOT]' ) 'Extract assets [ROOT]' )
is_unpacked || exit 1 is_unpacked || exit 1
isvcm1 isvcm1
iszdefend iszdefend
info "If you have v6.4.98 or newer, app resource extraction is no longer possible. Please use older version." info "If you have v6.4.98 or newer, app resource extraction is no longer possible. Please use older version."
info 'To extract encrypted assets [if current app has MBShield protection] you need rooted device' info 'To extract encrypted assets [if current app has zShield protection] you need rooted device'
info 'And trigger a built-in app assets extraction !' info 'And trigger a built-in app assets extraction !'
echo ------------------------------------------- echo -------------------------------------------
PS3='Select options continue, or [3] to quit : ' PS3='Select options continue, or [3] to quit : '
@ -341,9 +373,9 @@ do
elif [ "$opt" == 'Extract assets' ]; then elif [ "$opt" == 'Extract assets' ]; then
if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ] if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ]
then then
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ] if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/*.szip ]
then then
info "MBShield found ! Continuing !!!" info "zShield found ! Continuing !!!"
warn 'You MUST grant root access to [com.android.shell] in order to extract assets !' warn 'You MUST grant root access to [com.android.shell] in order to extract assets !'
info 'Trying to extract assets...' info 'Trying to extract assets...'
adb shell am force-stop com.mbmobile adb shell am force-stop com.mbmobile
@ -386,7 +418,7 @@ then
info 'Removing leftover assets...' info 'Removing leftover assets...'
adb shell rm -rf /sdcard/assets && good "Removed leftover assets !" || err "Failed to remove leftover assets from device !" adb shell rm -rf /sdcard/assets && good "Removed leftover assets !" || err "Failed to remove leftover assets from device !"
else else
info "MBShield not found ! No need to extract assets !" info "zShield not found ! No need to extract assets !"
fi fi
else else
err "Can't find [mbapk/mbapk_unpacked] folder, cannot continue ! " err "Can't find [mbapk/mbapk_unpacked] folder, cannot continue ! "
@ -431,32 +463,35 @@ done
info "Cleared !" info "Cleared !"
;; ;;
'Install patched app' ) 'Install patched app' )
info 'Select your patched version to continue' echo 'Choose install options :'
PS3='Select patched version to continue, or [4] to quit : ' ls mbcpapp_apk | grep -q MBCP_Flutter_SelfPatched_$(git rev-parse --short HEAD).apk || err "Couldn't find APK with current commit ID, you might already do new commits : $(git rev-parse --short HEAD)" || warn "Please repack APK again after each new commits !"
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' PS3='Select option to continue, or [3] to quit : '
select opt in 'Install & open app' 'Install & delete local detection model & open app' 'Exit'
do do
if [ "$opt" == 'App patched with newer version [v6.4.59+]' ]; then if [ "$opt" == 'Install & open app' ]; then
if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ] if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ]
then then
warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!" 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 !!!" warn "You must have connected Android device with USB debugging turned on in order to install !!!"
adb kill-server adb kill-server
adb start-server adb start-server
adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "App installation successful! Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!"
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
else else
err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !" err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !"
fi fi
elif [ "$opt" == 'App patched with specific version' ]; then elif [ "$opt" == 'Install & delete local detection model & open app' ]; then
# handle method for newer app
[ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so ] && warn "This method works best with v6.4.58 ~ v6.5.6. For newer app please block Zimperium host first !"
if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ] if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ]
then then
warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!" 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 !!!" warn "You must have connected Android device with USB debugging turned on in order to install !!!"
adb kill-server adb kill-server
adb start-server adb start-server
adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" adb shell [ -f /system/bin/su ] || warn "No su binary found in [/system/bin/su] from connected device. Root-related commands will not work!!"
adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk" | grep -q Success && echo "App installation successful! Opening app..." && adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity || echo "Failed to install app, please check your device!"
# Delete zimperium detection files # 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/0*
adb shell su -c rm -rf /data/data/com.mbmobile/files/1* adb shell su -c rm -rf /data/data/com.mbmobile/files/1*
@ -470,6 +505,7 @@ do
adb shell su -c rm -rf /data/data/com.mbmobile/files/9* 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/KNOV3PN*
adb shell su -c rm -rf /data/data/com.mbmobile/files/zxpolicyme* adb shell su -c rm -rf /data/data/com.mbmobile/files/zxpolicyme*
adb shell su -c rm -rf /data/data/com.mbmobile/files/zxpolicymd*
adb shell su -c rm -rf /data/data/com.mbmobile/files/policyme* 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 !!!" 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 su -c 'iptables -t nat -A OUTPUT -p tcp -d 0/0 -j DNAT --to-destination 162.159.153.4:443'
@ -482,20 +518,6 @@ do
err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !" err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !"
fi 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 elif [ "$opt" == 'Exit' ]; then
PS3='Please select options to continue : ' PS3='Please select options to continue : '
break break

View file

@ -15,11 +15,18 @@ nochiptext() {
rm -rf strings_temp rm -rf strings_temp
} }
no_resolution() {
warn "App newer than v6.5.7+ ! Using specific strings file instead..."
cp -f 'blob_patches/resources/strings_newapp.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values/strings.xml'
}
info "Copying modified resources..." info "Copying modified resources..."
cp -r -f 'blob_patches/resources/raw' 'mbapk/mbapk_unpacked/resources/package_1/res/' 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-vi/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values-vi/'
[ $(cat mbapk/mbapk_unpacked/resources/package_1/res/values/strings.xml | grep chip_text) ] && cp -f 'blob_patches/resources/strings/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values/' || nochiptext [ $(cat mbapk/mbapk_unpacked/resources/package_1/res/values/strings.xml | grep chip_text) ] && cp -f 'blob_patches/resources/strings/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values/' || nochiptext
[ $(cat mbapk/mbapk_unpacked/resources/package_1/res/values/strings.xml | grep -q RESOLUTION) ] && cp -f 'blob_patches/resources/strings/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values/' || no_resolution
info "Copying bootleg_ekyc..." 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/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' cp -f 'blob_patches/bootleg_ekyc/dotp2_ekyc.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/digitalOtp_img_authenguide02.webp'

View file

@ -5,21 +5,6 @@
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh
# 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 # App update button url
sed_libapp 's|market://details?id=com.mbmobile|https://tinyurl.com/mbcpupdate??|' sed_libapp 's|market://details?id=com.mbmobile|https://tinyurl.com/mbcpupdate??|'
# Facebook button url # Facebook button url
@ -177,8 +162,9 @@ sed_libapp 's|Account Balance|Account balance|g'
sed_libapp 's|Set as Default Account|Set as default account|g' sed_libapp 's|Set as Default Account|Set as default account|g'
# App log header info (client.log) # App log header info (client.log)
# Spoof app version patch already spoofed with (_mbcp) suffix.
#sed_libapp 's|productionrn|mbcpreleases|g' #sed_libapp 's|productionrn|mbcpreleases|g'
sed_libapp 's|Open app MBCPApp|Open app MB Bank|g' #sed_libapp 's|Open app MBCPApp|Open app MB Bank|g'
# Wallet (Link management) # Wallet (Link management)
sed_libapp 's|Link Management|Link management|' sed_libapp 's|Link Management|Link management|'

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# PATCHNAME: Block adjust volume on sEKYC # PATCHNAME: Block adjust volume on sEKYC
# MAXVER: 6.4.66 # MAXVER: 6.4.85
# MINVER: # MINVER:
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh

View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
# PATCHNAME: Bypass blacklist IP hashes
# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
sed_libapp 's|list_blocked_ip_hash|list_ip_blocked_hash|'

View file

@ -0,0 +1,12 @@
#!/usr/bin/env bash
# PATCHNAME: Bypass forced update dialog
# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
# Block forced update dialog (does not bypasses GW525)
sed_libapp 's|version_check_update_config|version_check_nonapp_config'
sed_libapp 's|currentVersion|currentMBCPver|'
sed_libapp 's|minVersion|appVersion|'

View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
# PATCHNAME: Bypass malicious app check
# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
# Bypass malicious apps check
sed_libapp 's|whitelistService|Servicewhitelist|'

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# PATCHNAME: Fix outdated VTAP certificate # PATCHNAME: Fix VTAP certificate
# MAXVER: 6.4.89 # MAXVER:
# MINVER: # MINVER:
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh
@ -17,8 +17,9 @@ info "Not needed for newer app version (like v6.4.94)"
nofwfound() { nofwfound() {
err "no VTAP firmware in [fixcert] folder found!" err "no VTAP firmware in [fixcert] folder found!"
info "copy [firmware] and [profile] file to [fixcert] folder to continue." info "copy [firmware] and [profile] file to [fixcert] folder to continue."
info "[firmware] and [profile] can be found in [assets], please find from newer app." info "[firmware] and [profile] can be found in [assets], please find from newer or older app."
info "recommended app : v6.4.94" info "recommended app : v6.4.94 for fixing v6.4.67 ~ v6.4.91"
info "and v6.4.75 for v6.4.92+ for revert old detection behavior."
exit 1 exit 1
} }
@ -26,13 +27,11 @@ mkdir -p "$DIRPATH"/fixcert/
[ ! -f "$DIRPATH"/fixcert/firmware ] && nofwfound [ ! -f "$DIRPATH"/fixcert/firmware ] && nofwfound
[ ! -f "$DIRPATH"/fixcert/profile ] && nofwfound
# fw # fw
cp -f "$DIRPATH"/fixcert/firmware "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ cp -f "$DIRPATH"/fixcert/firmware "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/
# profile # profile
cp -f "$DIRPATH"/fixcert/profile "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ [ -f "$DIRPATH"/fixcert/profile ] && cp -f "$DIRPATH"/fixcert/profile "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/
info "Remove [firmware] and [profile] file from [/data/data/com.mbmobile/files] or clear app data" info "Remove [firmware] and [profile] file from [/data/data/com.mbmobile/files] or clear app data"
info "If the app still keep crashing or throwing expired certificate screen." info "If the app still keep crashing or throwing expired certificate screen or the detection is still the same."

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# PATCHNAME: Hide VTAP root detection activity & dialog # PATCHNAME: Hide VTAP root detection activity & dialog
# MAXVER: 6.4.66 # MAXVER:
# MINVER: # MINVER:
# shellcheck disable=SC1091,SC2016 # shellcheck disable=SC1091,SC2016
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh

View file

@ -0,0 +1,39 @@
#!/usr/bin/env bash
# PATCHNAME: Remove invoke to zShield
# MAXVER:
# MINVER: 6.4.21
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
# mbshield is zShield, not mbshield, zimperium renamed it to bank name + shield
warn "Currently only support remove invoke zShield to [io.flutter.plugins.MainActivity] and [MBBHomeWidgetQR] !!!"
info "Copying..."
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..."
# This is moved to classes4 but EP*.smali no longer exist since v6.4.70+

View file

@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# PATCHNAME: Remove MB AI Bullshit resources # PATCHNAME: Remove MB AI Slop resources
# MAXVER: # MAXVER:
# MINVER: 6.4.73 # MINVER: 6.4.73
# shellcheck disable=SC1091 # shellcheck disable=SC1091
@ -71,3 +71,7 @@ enforcemb
# Adapt with new animated search AI logo (v6.4.77+) # 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' cp -f 'blob_patches/searchicon/search.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/search_ai.gif'
# Adapt with more new AI slop icons (v6.5.x)
rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_camera.webp'
rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/mbai_img_photo.webp'

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# PATCHNAME: Remove new zimperium check # PATCHNAME: Remove new zimperium check
# MAXVER: 6.4.66 # MAXVER: 6.5.5
# MINVER: 6.4.59 # MINVER: 6.4.59
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh

View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
# PATCHNAME: Remove QR Scanner Wave
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
rm -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/static/ic_wave_qr_scanner.webp

View file

@ -5,8 +5,11 @@
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh
# remove libvvb2060.so (only for older app verion : v6.5.6 or older)
# in newer app, removing it will trigger checksum failing error (GW934 - Re-install app to continue using app)
[ ! -f 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libvvb2060.so'
[ ! -f 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libcode.so' ] && rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libvvb2060.so'
# remove rootbeer simple check (used in singalarity ekyc)
rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libtoolChecker.so' rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libtoolChecker.so'
rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libtoolChecker.so' rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libtoolChecker.so'
rm -rf 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libvvb2060.so'
rm -rf 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libvvb2060.so'

View file

@ -12,22 +12,46 @@
info "Spoofing app version..." info "Spoofing app version..."
# v6.5.2x
sed -i 's|"6.5.29"|"6.5.29.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.28"|"6.5.28.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.27"|"6.5.27.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.26"|"6.5.26.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.25"|"6.5.25.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.24"|"6.5.24.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.23"|"6.5.23.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.22"|"6.5.22.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.21"|"6.5.21.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.20"|"6.5.20.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# v6.5.1x
sed -i 's|"6.5.19"|"6.5.19.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.18"|"6.5.18.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.17"|"6.5.17.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.16"|"6.5.16.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.15"|"6.5.15.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.14"|"6.5.14.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.13"|"6.5.13.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.12"|"6.5.12.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.11"|"6.5.11.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.10"|"6.5.10.mbcp"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# v6.5.x # v6.5.x
sed -i 's|6.5.9|6.5.9.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.9"|"6.5.9.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.5.8|6.5.8.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.8"|"6.5.8.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.5.7|6.5.7.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.7"|"6.5.7.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.5.6|6.5.6.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.6"|"6.5.6.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.5.5|6.5.5.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.5"|"6.5.5.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.5.4|6.5.4.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.4"|"6.5.4.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.5.3|6.5.3.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.3"|"6.5.3.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.5.2|6.5.2.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.2"|"6.5.2.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.5.1|6.5.1.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.1"|"6.5.1.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.5.0|6.5.0.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|"6.5.0"|"6.5.0.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# v6.4.9x # v6.4.9x
sed -i 's|6.4.99|6.4.99.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.99|6.4.99.legacy|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.98|6.4.98.legacy|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.97|6.4.97.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.4.96|6.4.96.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.96|6.4.96.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.4.95|6.4.95.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.95|6.4.95.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.4.94|6.4.94.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.94|6.4.94.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
@ -88,7 +112,7 @@ sed -i 's|6.4.49|6.4.49.old|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.4.48|6.4.48.old|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.48|6.4.48.old|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|6.4.47|6.4.47.old|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.4.47|6.4.47.old|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# versionCode spoofing to prevent in-app forced update dialog, and play store / aurora store from replacing with original app :>
sed -i 's|704|1000|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|704|1000|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|712|1001|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|712|1001|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|727|2000|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|727|2000|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
@ -110,6 +134,43 @@ sed -i 's|744|2014|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|745|2015|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|745|2015|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|746|2016|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|746|2016|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|747|2017|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|747|2017|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|749|2018|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|750|2019|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|751|2020|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|752|2021|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|753|2022|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|754|2023|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|755|2024|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|756|2025|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|757|2026|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|758|2027|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# v6.5.14
sed -i 's|759|2028|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# other versions
sed -i 's|760|2028|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|761|2029|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|762|2030|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|763|2031|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|764|2032|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|765|2033|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|766|2034|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|767|2035|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|768|2036|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|769|2037|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|770|2038|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|771|2039|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|772|2040|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|773|2041|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|774|2042|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|775|2043|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|776|2044|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|777|2045|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|778|2046|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|779|2047|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|780|2048|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|781|2049|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|782|2050|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.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.65|v6.4.68|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'

View file

@ -5,4 +5,7 @@
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh
# applies for v6.4.62 ~ v6.5.19
sed -i 's|android:targetSdkVersion="35"|android:targetSdkVersion="34"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml sed -i 's|android:targetSdkVersion="35"|android:targetSdkVersion="34"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
# applies for v6.5.20+
sed -i 's|android:targetSdkVersion="36"|android:targetSdkVersion="34"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml

View file

@ -1,19 +0,0 @@
#!/usr/bin/env bash
# PATCHNAME: Where is VTAP & Zimperium bypass
# MAXVER:
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
echo "--------------Why Zimperium and VTAP bypass patches disappeared?--------------"
warn "VTAP and Zimperium bypass is restricted to v6.4.66 only due to MB limitations to v6.4.67+"
info "They added stronger check, it uses SHA-256 to check all of dex files and libraries, if it does not match\n"
info "The app will refuse to login with GW934 error. There is already a bypass in the past, but is fixed."
info "A newer bypass is planned, but I don't have time. I am a student, and in 12th grade, time does not allow me."
echo "------------------------------------------------------------------------------"
echo "So what next???"
echo "From Patcher, just apply other patches, and repack APK"
echo "Since the local root detection model is deleted, you can use my MBZDefend-Fix module"
echo "It uses another way to bypass Zimperium check, and still works :)"
echo "For VTAP bypass? No way, but it is still easily to hide. It will comeback once I achieve another checksum bypass."
exit 169

View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
# PATCHNAME: XPE003 Fix
# MAXVER: 6.4.67
# MINVER:
# shellcheck disable=SC1091
. "$DIRPATH"/common.sh
# XPE003 error fixes
sed_libapp 's|isEnableTimeout|isEnableLockout|'
sed_libapp 's|zdefend_config|fua0am0_config|'

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