Compare commits

..
23 changed files with 162 additions and 766 deletions

View file

@ -1,378 +0,0 @@
<?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 zShield (mbshield is zShield), if exists then exit function # Checks for MBShield, if exists then exit function
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/*.szip ] if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ]
then then
info "zShield found on unpacked APK ! Bypass signature checks won't be possible if zShield is present on current unpacked APK !" info "MBShield found on unpacked APK ! Bypass signature checks won't be possible if MBShield is present on current unpacked APK !"
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
zshield_found='zShield found on [mbapk_unpacked/assets/*.szip] !!! mbshield_found='MBShield found on [mbapk_unpacked/assets/mbshield.szip] !!!
Patching operation is limited due to zShield :( Patching operation is limited due to MBShield :(
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 !!!'
zshield_not_found='zShield NOT found on [mbapk_unpacked/assets/] mbshield_not_found='MBShield 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 --no-check-certificate --show-progress -O apktool.jar "$apktool_link" || err "downloading apktool failed" wget -q --show-progress -O apktool.jar "$apktool_link" || err "downloading apktool failed"
wget -q --no-check-certificate --show-progress -O apkeditor.jar "$apkeditor_link" || err "downloading apkeditor failed" wget -q --show-progress -O apkeditor.jar "$apkeditor_link" || err "downloading apkeditor failed"
cd .. cd ..
} }
@ -117,29 +117,12 @@ 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
# mbshield (zShield) 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] !"
# exist in MB v6.4.22 ~ v6.5.6 (except v6.4.45 versionCode 658) 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] !"
[ -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] !" # zimperium
[ -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/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] !"
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] !"
@ -164,7 +147,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 "Removing local zimperium detection models..." info "Cleaning useless files..."
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_'
@ -172,15 +155,9 @@ 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_'
# 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/fPGzhQFvISia1NiVGU8vQx9IpRm63E4_1Xv0Z2ypWUE_'
# 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/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/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_'
@ -206,6 +183,7 @@ 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_'
@ -226,6 +204,7 @@ 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_'
@ -240,10 +219,7 @@ 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/'
@ -286,14 +262,14 @@ successunpack() {
fi fi
} }
check_zshield() { check_mbshield() {
is_unpacked || return 1 is_unpacked || return 1
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/*.szip ] if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]
then then
info "$zshield_found" info "$mbshield_found"
iszdefend iszdefend
else else
info "$zshield_not_found" info "$mbshield_not_found"
fi fi
} }
@ -313,15 +289,7 @@ 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
} }
@ -337,14 +305,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 [README.md] or [docs] folder" echo "Documentation : see [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' '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' 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 do
case "$opt" in case "$opt" in
'Download/update tools' ) download_tools ;; 'Download/update tools' ) download_tools ;;
@ -352,14 +320,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 ;;
'zShield Check' ) check_zshield ;; 'MBShield Check' ) check_mbshield ;;
'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 zShield protection] you need rooted device' info 'To extract encrypted assets [if current app has MBShield 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 : '
@ -373,9 +341,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/*.szip ] if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]
then then
info "zShield found ! Continuing !!!" info "MBShield 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
@ -418,7 +386,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 "zShield not found ! No need to extract assets !" info "MBShield 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 ! "
@ -463,35 +431,32 @@ done
info "Cleared !" info "Cleared !"
;; ;;
'Install patched app' ) 'Install patched app' )
echo 'Choose install options :' info 'Select your patched version to continue'
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 !" PS3='Select patched version to continue, or [4] to quit : '
PS3='Select option to continue, or [3] 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'
select opt in 'Install & open app' 'Install & delete local detection model & open app' 'Exit'
do do
if [ "$opt" == 'Install & open app' ]; then if [ "$opt" == 'App patched with newer version [v6.4.59+]' ]; 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" | 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 install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk"
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" == 'Install & delete local detection model & open app' ]; then elif [ "$opt" == 'App patched with specific version' ]; 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 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"
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*
@ -505,7 +470,6 @@ 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'
@ -518,6 +482,20 @@ 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,18 +15,11 @@ 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,6 +5,21 @@
# 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
@ -162,9 +177,8 @@ 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.85 # MAXVER: 6.4.66
# MINVER: # MINVER:
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh

View file

@ -1,8 +0,0 @@
#!/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

@ -1,12 +0,0 @@
#!/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

@ -1,10 +0,0 @@
#!/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 VTAP certificate # PATCHNAME: Fix outdated VTAP certificate
# MAXVER: # MAXVER: 6.4.89
# MINVER: # MINVER:
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh
@ -17,9 +17,8 @@ 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 or older app." info "[firmware] and [profile] can be found in [assets], please find from newer app."
info "recommended app : v6.4.94 for fixing v6.4.67 ~ v6.4.91" info "recommended app : v6.4.94"
info "and v6.4.75 for v6.4.92+ for revert old detection behavior."
exit 1 exit 1
} }
@ -27,11 +26,13 @@ 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
[ -f "$DIRPATH"/fixcert/profile ] && cp -f "$DIRPATH"/fixcert/profile "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/ 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 or the detection is still the same." info "If the app still keep crashing or throwing expired certificate screen."

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: # MAXVER: 6.4.66
# MINVER: # MINVER:
# shellcheck disable=SC1091,SC2016 # shellcheck disable=SC1091,SC2016
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh

View file

@ -0,0 +1,37 @@
#!/usr/bin/env bash
# PATCHNAME: Remove invoke to mbshield
# MAXVER: 6.4.66
# 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..."
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 Slop resources # PATCHNAME: Remove MB AI Bullshit resources
# MAXVER: # MAXVER:
# MINVER: 6.4.73 # MINVER: 6.4.73
# shellcheck disable=SC1091 # shellcheck disable=SC1091
@ -71,7 +71,3 @@ 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.5.5 # MAXVER: 6.4.66
# MINVER: 6.4.59 # MINVER: 6.4.59
# shellcheck disable=SC1091 # shellcheck disable=SC1091
. "$DIRPATH"/common.sh . "$DIRPATH"/common.sh

View file

@ -1,8 +0,0 @@
#!/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,11 +5,8 @@
# 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,46 +12,22 @@
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.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.5.9|6.5.9.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.8|6.5.8.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.7|6.5.7.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.6|6.5.6.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.5|6.5.5.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.4|6.5.4.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.3|6.5.3.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.2|6.5.2.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.1|6.5.1.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
sed -i 's|"6.5.0"|"6.5.0.legacy"|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' sed -i 's|6.5.0|6.5.0.mbcp|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml'
# v6.4.9x # v6.4.9x
sed -i 's|6.4.99|6.4.99.legacy|g' 'mbapk/mbapk_unpacked/AndroidManifest.xml' 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.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.97|6.4.97.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.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'
@ -112,7 +88,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'
@ -134,43 +110,6 @@ 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,7 +5,4 @@
# 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

@ -0,0 +1,19 @@
#!/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

@ -1,10 +0,0 @@
#!/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