Compare commits
50 changed files with 589 additions and 1255 deletions
2
LICENSE
2
LICENSE
|
|
@ -1,6 +1,6 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2026 Cuynu.
|
||||
Copyright (c) 2025 MBCPApp Author.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 453 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 34 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 29 KiB |
|
|
@ -1,106 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<LinearLayout
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:id="@id/llBottom"
|
||||
android:paddingTop="2.0dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
<Button
|
||||
android:textColor="#ffff0000"
|
||||
android:tag="0"
|
||||
android:visibility="visible"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="BẠN ĐANG GẶP LỖI NGHIÊM TRỌNG TRONG APP !!!" />
|
||||
<Button
|
||||
android:textColor="#ffff0000"
|
||||
android:tag="0"
|
||||
android:visibility="visible"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="APP MBCP sẽ KHÔNG THỂ HOẠT ĐỘNG CHO ĐẾN KHI FIX" />
|
||||
<Button
|
||||
android:textColor="#ffff0000"
|
||||
android:tag="0"
|
||||
android:visibility="visible"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="VUI LÒNG KIỂM TRA LẠI CÁC BƯỚC CÀI ĐẶT APP" />
|
||||
<Button
|
||||
android:textColor="#ff6698ff"
|
||||
android:tag="0"
|
||||
android:visibility="visible"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="TRUY CẬP WEB SAU ĐỂ THỬ FIX : tinyurl.com/vtapfixvi" />
|
||||
<Button
|
||||
android:textColor="#ffff0000"
|
||||
android:tag="0"
|
||||
android:visibility="visible"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="TRONG TRƯỜNG HỢP ĐÃ LÀM ĐÚNG TẤT CẢ, CHỤP MÀN HÌNH NÀY VÀ BÁO LỖI QUA Telegram @cuynuchat hoặc YouTube @cuynu !!!" />
|
||||
<Button
|
||||
android:tag="0"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="" />
|
||||
<Button
|
||||
android:tag="0"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="" />
|
||||
<Button
|
||||
android:id="@id/btnSecond"
|
||||
android:tag="0"
|
||||
android:visibility="gone"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="" />
|
||||
<Button
|
||||
android:id="@id/btnMain"
|
||||
android:tag="1"
|
||||
android:visibility="gone"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@id/imgAlert"
|
||||
android:background="@color/cardview_shadow_end_color"
|
||||
android:visibility="gone"
|
||||
android:layout_width="100.0dip"
|
||||
android:layout_height="100.0dip"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@id/view_pager"
|
||||
android:layout_width="0.0dip"
|
||||
android:layout_height="0.0dip"
|
||||
app:layout_constraintBottom_toTopOf="@id/tab_layout"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/imgAlert"
|
||||
app:layout_constraintVertical_bias="0.0" />
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@id/tab_layout"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2.0dip"
|
||||
android:layout_marginBottom="16.0dip"
|
||||
app:layout_constraintBottom_toTopOf="@id/llBottom"
|
||||
app:layout_constraintTop_toTopOf="@id/llBottom"
|
||||
app:tabIndicatorColor="#ffffffff" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
<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_faceQualified">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>
|
||||
|
|
@ -86,16 +86,17 @@
|
|||
<string name="character_counter_pattern">%1$d/%2$d</string>
|
||||
<string name="chip_text">Chip text</string>
|
||||
<string name="clear_text_end_icon_content_description">Clear text</string>
|
||||
<string name="click_setting_qr">Touch to setup QR</string>
|
||||
<string name="click_setting_qr_big_qr">Touch to setup QR</string>
|
||||
<string name="click_setting_qr">Chạm để cài đặt
|
||||
QR</string>
|
||||
<string name="click_setting_qr_big_qr">Chạm để cài đặt 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_enable_text">%1$s won't work unless you enable Google Play services.</string>
|
||||
<string name="common_google_play_services_enable_title">Enable Google Play services</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_install_text">%1$s won't run without Google Play services, which are missing from your device.</string>
|
||||
<string name="common_google_play_services_install_title">Get Google Play services</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>
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 39 KiB |
|
|
@ -1,83 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="31"
|
||||
height="16"
|
||||
viewBox="0 0 31 16"
|
||||
fill="none"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="ic_logo_mb_text_enforced.svg"
|
||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="13.953125"
|
||||
inkscape:cx="3.1175812"
|
||||
inkscape:cy="17.092945"
|
||||
inkscape:window-width="1716"
|
||||
inkscape:window-height="976"
|
||||
inkscape:window-x="6"
|
||||
inkscape:window-y="52"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M 12.016413,0.17250813 H 9.3384178 c -0.239992,0.510277 -1.908609,4.07433997 -2.672929,6.10775797 l -0.05232,0.139289 h -0.09028 l -0.05233,-0.139289 C 5.7061985,4.2468481 4.0376143,0.68278513 3.7976694,0.17250813 H 1.1196127 C 0.54086511,4.4816671 0.25398051,11.146342 0.21500551,12.100738 H 2.8813577 c 0.024919,-0.79883 0.1848645,-5.8268249 0.2955162,-6.9567549 l 0.027763,-0.284978 h 0.065583 l 0.1064666,0.251385 c 0.8894836,2.099042 2.0352852,4.9825459 2.224465,5.4597819 h 1.9337473 c 0.189179,-0.477236 1.334957,-3.3607399 2.22448,-5.4597819 l 0.1064626,-0.251385 h 0.06554 l 0.02782,0.284978 c 0.1108296,1.12993 0.2707276,6.1579249 0.2956386,6.9567549 h 2.666195 C 12.882019,11.146342 12.595194,4.4818571 12.016409,0.17250813 Z m 6.638114,2.16180397 c -0.250108,0 -0.906615,-0.0097 -1.296687,0.06452 v 2.339843 l 0.09889,0.0099 c 0.0052,5.08e-4 0.541225,0.04685 1.158946,0.04685 1.001893,0 1.582974,-0.07851 1.935335,-0.399096 0.354582,-0.322765 0.445336,-0.85416 0.225428,-1.310556 -0.347148,-0.7185 -1.430594,-0.751493 -2.1219,-0.751493 z m -1.29339,7.407009 c 0.579703,0.0373 1.205932,0.06345 1.835305,0.04048 0.488337,-0.01774 1.135263,-0.05701 1.594165,-0.54289 0.410614,-0.433946 0.484658,-1.084791 0.178596,-1.620675 -0.284219,-0.497713 -0.851046,-0.741326 -2.225839,-0.724345 -0.694372,0 -1.364751,0.07634 -1.388897,0.07979 z m 1.153504,2.4602479 c -1.44853,0 -2.805311,-0.03404 -3.863616,-0.09408 V 0.17927313 c 0.368226,-0.03267 1.508471,-0.05853 3.121491,-0.100132 1.011167,-0.02605 1.977799,0.015 2.734641,0.138786 1.713432,0.280102 2.337361,1.12680597 2.606556,1.59216897 0.258617,0.448662 0.431002,0.947664 0.389765,1.59603 -0.04829,0.760605 -0.286747,1.384681 -1.037992,1.99859 l -0.132452,0.10832 0.150769,0.07855 c 0.520531,0.271316 0.853422,0.702397 1.080842,1.12492 0.273257,0.510183 0.41184,1.091539 0.41184,1.727753 0,1.2863 -0.446332,2.2589669 -1.353255,2.9105699 -0.804057,0.578065 -1.925829,0.846742 -4.108589,0.84674 z"
|
||||
fill="#ffffff"
|
||||
id="path1"
|
||||
style="stroke-width:0.762298" />
|
||||
<g
|
||||
style="fill:none"
|
||||
id="g2"
|
||||
transform="matrix(0.41273844,0,0,0.42784456,2.6367835,11.966405)">
|
||||
<path
|
||||
d="M 1.41777,0 H 0.93428 v 9.31654 h 0.48349 z"
|
||||
fill="#6d83a7"
|
||||
id="path1-3" />
|
||||
<path
|
||||
d="m 5.30474,4.76061 h 1.32031 c 0.52068,0 0.85541,-0.05579 1.00418,-0.18596 C 7.778,4.46307 7.83378,4.16554 7.83378,3.71924 7.83378,3.19856 7.77799,2.88243 7.64782,2.77085 7.53625,2.64068 7.22012,2.5849 6.73663,2.5849 H 5.30474 Z M 4.15179,7.69877 V 1.5993 h 2.45467 0.29753 c 0.81821,0 1.37609,0.14878 1.67363,0.42772 0.27893,0.27894 0.42771,0.83681 0.42771,1.65503 0,0.81822 -0.13017,1.3575 -0.40911,1.61784 C 8.31728,5.56024 7.77799,5.709 6.94118,5.709 H 6.68084 5.30474 V 7.68017 H 4.15179 Z"
|
||||
fill="#6d83a7"
|
||||
id="path2" />
|
||||
<path
|
||||
d="m 11.3666,4.66763 h 1.655 c 0.3906,0 0.6509,-0.07438 0.7811,-0.20455 0.1301,-0.14877 0.1859,-0.4277 0.1859,-0.85541 0,-0.42771 -0.0558,-0.70664 -0.1673,-0.83682 C 13.7097,2.64068 13.468,2.5849 13.096,2.5849 H 11.348 V 4.66763 Z M 10.1951,7.69877 V 1.5993 h 3.0125 c 0.7438,0 1.2645,0.13018 1.5435,0.39052 0.2789,0.26035 0.4277,0.72524 0.4277,1.41329 0,0.61366 -0.0744,1.04137 -0.2046,1.26452 -0.1488,0.22315 -0.4277,0.39051 -0.874,0.4649 v 0.03719 c 0.6695,0.03719 1.0042,0.42771 1.0042,1.19014 v 1.33891 h -1.153 V 6.58301 c 0,-0.63226 -0.3161,-0.94839 -0.9298,-0.94839 H 11.348 v 2.04555 h -1.1529 z"
|
||||
fill="#6d83a7"
|
||||
id="path3" />
|
||||
<path
|
||||
d="m 17.5409,1.5993 h -1.153 v 6.09947 h 1.153 z"
|
||||
fill="#6d83a7"
|
||||
id="path4" />
|
||||
<path
|
||||
d="m 21.4646,2.54761 c -0.781,0 -1.2273,0.09297 -1.3575,0.29753 -0.1301,0.20455 -0.2045,0.89261 -0.2045,2.06415 0,0.87401 0.0744,1.39469 0.2231,1.58065 0.1488,0.18596 0.6137,0.26034 1.3575,0.26034 0.7253,0 1.153,-0.09298 1.2832,-0.29753 0.1487,-0.20456 0.2045,-0.81822 0.2045,-1.8224 0,-1.02277 -0.0744,-1.61784 -0.2045,-1.8038 C 22.6548,2.64059 22.2085,2.54761 21.4646,2.54761 Z m 0.093,-1.00418 c 1.1158,0 1.8224,0.18596 2.1386,0.55787 0.3161,0.37192 0.4834,1.19014 0.4834,2.47326 0,1.39469 -0.1673,2.2687 -0.4834,2.64062 C 23.38,7.58709 22.599,7.75446 21.3717,7.75446 20.2559,7.75446 19.5493,7.5685 19.2145,7.21518 18.8984,6.86185 18.731,6.06223 18.731,4.85349 c 0,-1.45048 0.1674,-2.36167 0.4835,-2.73358 0.3162,-0.39052 1.0972,-0.57648 2.3431,-0.57648 z"
|
||||
fill="#6d83a7"
|
||||
id="path5" />
|
||||
<path
|
||||
d="m 26.5228,4.66763 h 1.655 c 0.3905,0 0.6509,-0.07438 0.781,-0.20455 0.1302,-0.14877 0.186,-0.4277 0.186,-0.85541 0,-0.42771 -0.0558,-0.70664 -0.1674,-0.83682 C 28.8659,2.64068 28.6241,2.5849 28.2522,2.5849 h -1.748 v 2.08273 z m -1.153,3.03114 V 1.5993 h 2.994 c 0.7438,0 1.2645,0.13018 1.5434,0.39052 0.279,0.26035 0.4277,0.72524 0.4277,1.41329 0,0.61366 -0.0743,1.04137 -0.2045,1.26452 -0.1488,0.22315 -0.4277,0.39051 -0.874,0.4649 v 0.03719 c 0.6694,0.03719 1.0228,0.42771 1.0228,1.19014 V 7.69877 H 29.1076 V 6.58301 c 0,-0.63226 -0.3161,-0.94839 -0.9298,-0.94839 h -1.6736 v 2.04555 h -1.1344 z"
|
||||
fill="#6d83a7"
|
||||
id="path6" />
|
||||
<path
|
||||
d="m 32.6778,1.5993 h -1.1529 v 6.09947 h 1.1529 z"
|
||||
fill="#6d83a7"
|
||||
id="path7" />
|
||||
<path
|
||||
d="m 36.7876,2.64068 v 5.05809 h -1.153 V 2.64068 H 33.868 V 1.5993 h 4.742 v 1.04138 z"
|
||||
fill="#6d83a7"
|
||||
id="path8" />
|
||||
<path
|
||||
d="M 45.2671,1.5993 43.017,5.37428 V 7.69877 H 41.864 V 5.37428 L 39.6697,1.5993 h 1.3389 l 0.9112,1.59926 c 0.0558,0.09298 0.1302,0.26034 0.2603,0.50209 l 0.1302,0.24174 0.1302,0.24175 h 0.0372 L 42.6078,3.94239 42.738,3.70065 C 42.8496,3.4775 42.9426,3.31013 42.9984,3.19856 L 43.9282,1.5993 Z"
|
||||
fill="#6d83a7"
|
||||
id="path9" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.7 KiB |
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
# imported from https://github.com/dylanaraps/pure-bash-bible
|
||||
bb_split() {
|
||||
# Usage: split "string" "delimiter" "count"
|
||||
# Usage: split "string" "delimiter"
|
||||
IFS=$'\n' read -d "" -ra arr <<< "${1//$2/$'\n'}"
|
||||
# printf '%s\n' "${arr[@]}"
|
||||
printf '%s\n' "${arr[$3]}"
|
||||
|
|
@ -29,7 +29,6 @@ strip_all() {
|
|||
|
||||
getvar() {
|
||||
# Usage: getline "n" "pattern" "file"
|
||||
i=0
|
||||
while IFS= read -r line; do
|
||||
i=$((i+1))
|
||||
[ "$i" = "$1" ] && printf '%s\n' "${line##$2}" && return
|
||||
|
|
@ -45,15 +44,6 @@ sed_libapp() {
|
|||
) && info "[sed_libapp] [$target] -> [$replacement]" || warn "[sed_libapp] replacing [$target] failed !"
|
||||
}
|
||||
|
||||
sed_libtian37() {
|
||||
target=$(bb_split "$1" '|' '1')
|
||||
replacement=$(bb_split "$1" '|' '2')
|
||||
(
|
||||
sed -i "$1" "$DIRPATH"/mbapk/mbapk_unpacked/root/lib/arm64-v8a/libanTian37.so \
|
||||
"$DIRPATH"/mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libanTian37.so
|
||||
) && info "[sed_libtian37] [$target] -> [$replacement]" || warn "[sed_libtian37] replacing [$target] failed !"
|
||||
}
|
||||
|
||||
# libdesignersactivists.so are former known as libZDefend.so
|
||||
# MB moved it to libdesignersactivists.so since v6.4.48+
|
||||
# this currently is placeholder, and will be implemented later
|
||||
|
|
@ -74,14 +64,6 @@ iszdefend() {
|
|||
fi
|
||||
}
|
||||
|
||||
isvcm1() {
|
||||
if [[ -f mbapk/mbapk_unpacked/root/lib/arm64-v8a/libvcm1.so ]]; then
|
||||
warn "As of v6.4.86+, to extract assets, you need to clear app data and then open the app again!"
|
||||
else
|
||||
info "[libvcm1.so] not found! ignoring notice"
|
||||
fi
|
||||
}
|
||||
|
||||
manifest_remove() {
|
||||
sed -i "/$1/d" "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml && \
|
||||
info "[manifest_remove] removing $1" || \
|
||||
|
|
@ -93,12 +75,11 @@ pblock() {
|
|||
echo "$1" > "$blocker"
|
||||
}
|
||||
|
||||
mb_ver() {
|
||||
[ -z "$1" ] && return 42
|
||||
get_mb_ver() {
|
||||
a="$(grep -m1 'android:versionName' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml | tr ' ' '\n' | grep -m1 'android:versionName')"
|
||||
a="$(bb_split "$a" '=' '1')"
|
||||
a="$(strip_all "$a" '"')"
|
||||
bb_split "$a" '.' "$1"
|
||||
bb_split "$a" '.' '2'
|
||||
}
|
||||
|
||||
good() {
|
||||
|
|
|
|||
0
MBCPApp/cpp/.gitkeep
Normal file
0
MBCPApp/cpp/.gitkeep
Normal file
49
MBCPApp/cpp/mbcputility_str/main_str.cpp
Normal file
49
MBCPApp/cpp/mbcputility_str/main_str.cpp
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
/* This is placeholder strings. It may be used in the feature. I don't know when it need to be used
|
||||
* maybe in 2026? no idea yet :> */
|
||||
|
||||
// MBCP Utilities (accessible from eMBee Helper icon in login screen)
|
||||
string mbcpMain = "MBCP Utilities";
|
||||
|
||||
// MBCP Utilities features
|
||||
string spoofGw934 = "GW934 login workaround";
|
||||
string spoofGW934sum = "This feature will bypass the app integrity check and allow logging in with your MB account but may have some side effects. \nAre you sure you want to use this feature?";
|
||||
string restartMbcpDialog = "Enable and restart";
|
||||
string restartMbcp = "Restart app";
|
||||
string enabledToast = "Restart MBCP app to take effects!";
|
||||
string spoofPlatform = "Spoof platform info to iPhone 6";
|
||||
string spoofPlatformsum = "This feature will spoof platform info to iPhone 6 in order to allow registering DigitalOTP via eKYC without unlinking. Whether to enable or not ???";
|
||||
// SemiPriority exclusive
|
||||
string enablePriority = "Enable Priority theme";
|
||||
string enablePrioritysum = "This feature will download the AddonPriority theme, and redirect you to the [Chinh Phuc Dinh Cao] theme. \nAfter that, press [Apply] to complete. Are you sure to download?";
|
||||
string noPriority = "This feature is not available for non-SemiPriority app variant.";
|
||||
|
||||
string mbcpRepo = "MBCP Project";
|
||||
string mbcpRepoSum = "View MBCP project source code on Disroot";
|
||||
|
||||
// Forgotten DigitalOTP login PIN
|
||||
string forgotDotp = "Forgot DigitalOTP PIN ?";
|
||||
string noDotploginPin = "If you forgotten the DigitalOTP PIN code and unable to login to the app, please take your device and CC/CCCD and go to nearest MB's branch for helpiong with remove linked DigitalOTP devices in order to logging in to app again. \nNo one except MB's branch can help you with that.";
|
||||
|
||||
// Donatation
|
||||
string authorDonate = "Donate me";
|
||||
string authorDonatesum = "Donation are not required and is only used for supporting me getting around the day. It does not affect anything to project development. \nAre you sure you want to continue with donation? You'll be redirected to transfer money screen.";
|
||||
|
||||
// Dump MB log
|
||||
string dumpMblog = "Dump app logs";
|
||||
string dumpMblogsum = "Are you sure? app logs will be saved as [client.log.new] and [client.log.json.new] on [app_flutter].";
|
||||
|
||||
// URL
|
||||
string mbcpRepoUrl = "https://git.disroot.org/mbcp/";
|
||||
string tgUrl = "https://t.me/mbcposs";
|
||||
string tgChaturl = "https://t.me/mbcposs_chat";
|
||||
string lotusUrl = "https://lotuschat.vn/w/+2KBDmUY51UcOzxdMbU8fwI";
|
||||
string lotusChatUrl = "https://lotuschat.vn/w/+PkJ40NlqqJZcUkFTcL3D5C";
|
||||
string cuynuMbDonate = "https://mbbank.onelink.me/QPF5?af_dp=mbbank://&ad_dp=inhandao&account_no=12131213111111&bank_code=MB&amount=&description=MBCP%20Donate";
|
||||
|
||||
}
|
||||
|
|
@ -1,17 +1,18 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
echo "DO NOT use these patches with newer app!"
|
||||
echo "Legacy patches list for MBCPApp :"
|
||||
PS3='Select patch options :'
|
||||
select opt in 'Bypass 1200 error [v6.4.45]' 'Bypass signature check' '[TEST] Remove v6.4.56 root detection' 'Exit'
|
||||
do
|
||||
if [ "$opt" == 'Bypass 1200 error [v6.4.45]' ]; then
|
||||
[ ! -f 'bypass1200/*.apks' ] && echo "Download the [v6.4.47] app from Telegram [@embeeapks] or Google Play API with versionCode 661" && echo "Then copy it to [bypass1200] folder!" && exit 1
|
||||
if [ "$opt" == 'Bypass 1200 error [v6.4.45]' ]; then
|
||||
echo "Notice : v6.4.45 are now got [GW525 - Force update !] !!!"
|
||||
echo "This patch will remain available but you cannot bypass GW525 error !"
|
||||
mkdir -p bypass1200
|
||||
mkdir bypass1200
|
||||
echo "Downloading v6.4.47 apks..."
|
||||
wget https://github.com/ghclonenah1/mbbpatch_release/releases/download/a/embee_v6.4.47_arm64-v8a_armeabi-v7a.apks -q --show-progress
|
||||
mv *.apks bypass1200/
|
||||
echo "Unpacking..."
|
||||
java -jar tools/apkeditor.jar m -i bypass1200/*.apks
|
||||
java -jar tools/apkeditor.jar m -i bypass1200/*.apks -j$(nproc)
|
||||
java -jar tools/apktool.jar d bypass1200/*.apk -o bypass1200/unpacked -j$(nproc)
|
||||
mv bypass1200/unpacked/lib/arm64-v8a/libapp.so mbapk/mbapk_unpacked/root/lib/arm64-v8a/
|
||||
mv bypass1200/unpacked/lib/armeabi-v7a/libapp.so mbapk/mbapk_unpacked/root/lib/armeabi-v7a/
|
||||
|
|
@ -20,17 +21,17 @@ do
|
|||
echo "Cleaning..."
|
||||
rm -rf bypass1200
|
||||
## MB Forced update to 658, it must be spoofed!
|
||||
echo "Patching [AndroidManifest.xml]..."
|
||||
sed -i 's|658|700|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
|
||||
echo "Patching [apktool.yml]..."
|
||||
sed -i 's|658|700|g' "$DIRPATH"/mbapk/mbapk_unpacked/apktool.yml
|
||||
echo "This patch are applied by MBCPApp Patcher on $(uname -s -r) with commit :" $(git rev-parse --short HEAD) at $(git show -s --format=%cd HEAD). > 'mbapk/mbapk_unpacked/root/assets/mbcp_info/bypass_1200_error.inf'
|
||||
|
||||
|
||||
# Use bypass gw934 checksum for this patch instead
|
||||
elif [ "$opt" == 'Bypass signature check' ]; then
|
||||
# Placeholder patch, not yet implemented
|
||||
elif [ "$opt" == 'Bypass signature check' ]; then
|
||||
echo "Applying patch [Bypass signature check]..."
|
||||
if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
|
||||
if [ -d "$DIRPATH"/mbapk/mbapk_unpacked ]
|
||||
then
|
||||
# Checks for MBShield, if exists then exit function
|
||||
# Checks for MBShield, if exists then exit function
|
||||
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/assets/mbshield.szip ]
|
||||
then
|
||||
info "MBShield found on unpacked APK ! Bypass signature checks won't be possible if MBShield is present on current unpacked APK !"
|
||||
|
|
@ -42,7 +43,8 @@ do
|
|||
echo "MBBank v6.4.26 [versionCode : 626]"
|
||||
echo "MBBank v6.4.45 [versionCode : 658]"
|
||||
else
|
||||
echo "This patch is now a part of [Bypass GW934 checksum] patch, please exit legacy patch and continue with normal patch !"
|
||||
echo "This patch are now a part of [Bypass GW934 checksum] patch, please exit legacy patch and continue with normal patch !"
|
||||
|
||||
fi
|
||||
else
|
||||
echo "APK are not unpacked ! Please unpack APK first !"
|
||||
|
|
@ -51,6 +53,7 @@ fi
|
|||
elif [ "$opt" == '[TEST] Remove v6.4.56 root detection' ]; then
|
||||
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/smali/androidx/UnderlyingVcl.smali ]
|
||||
then
|
||||
|
||||
echo "Applying patch..."
|
||||
echo "Removing checksum from provider..."
|
||||
sed -i 's|e1a14adc915d7ad159edf2668b0dfcb359cf86538642de0e425d027f66eb07b2||g' "$DIRPATH"/mbapk/mbapk_unpacked/smali/classes/androidx/UnderlyingVcl.smali
|
||||
|
|
@ -85,18 +88,19 @@ fi
|
|||
mv 'temp/libweneedfreedom.so' 'temp/libdesignersactivists.so'
|
||||
cp -f 'temp/libdesignersactivists.so' 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libdesignersactivists.so'
|
||||
rm -rf temp
|
||||
echo "This patch is applied by MBCPApp Patcher on $(uname -s -r) with commit :" $(git rev-parse --short HEAD) at $(git show -s --format=%cd HEAD). > 'mbapk/mbapk_unpacked/assets/mbcp_info/remove_v6.4.56_root_detection.inf'
|
||||
echo "This patch are applied by MBCPApp Patcher on $(uname -s -r) with commit :" $(git rev-parse --short HEAD) at $(git show -s --format=%cd HEAD). > 'mbapk/mbapk_unpacked/assets/mbcp_info/remove_v6.4.56_root_detection.inf'
|
||||
echo "Applied [Remove v6.4.56 root detection] patch !!!"
|
||||
else
|
||||
echo "[UnderlyingVcl.smali] not found!"
|
||||
echo "[UnderlyingVcl.smali] not found! Please clear patched app then unpack again!"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
elif [ "$opt" == 'Exit' ]; then
|
||||
clear
|
||||
exit
|
||||
break
|
||||
./mbcpapp.sh
|
||||
exit
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
|
|
|
|||
|
|
@ -15,12 +15,12 @@ clear
|
|||
. "$DIRPATH/common.sh"
|
||||
|
||||
# Check if user is running on an actual Linux environment
|
||||
if uname -a | grep -i Linux; then
|
||||
if uname -a | grep -i Linux ; then
|
||||
info "You have Linux environment :)"
|
||||
fi
|
||||
|
||||
# Check if figlet exists or not
|
||||
if command -v figlet; then
|
||||
if command -v figlet ; then
|
||||
FIGLET=figlet
|
||||
else
|
||||
warn "figlet not found, ignoring banner !"
|
||||
|
|
@ -28,25 +28,26 @@ else
|
|||
fi
|
||||
|
||||
# Check if java exists
|
||||
if ! java -version; then
|
||||
if ! java -version ; then
|
||||
err "Java not found !!!"
|
||||
info "Please install Java for your system ! "
|
||||
exit 127
|
||||
fi
|
||||
|
||||
# Check if wget exists
|
||||
if ! wget --version; then
|
||||
if ! wget --version ; then
|
||||
err "wget not found !!!"
|
||||
info "Please install wget for your system !"
|
||||
exit 127
|
||||
fi
|
||||
|
||||
# Check if xmlstarlet exists
|
||||
if ! xmlstarlet --version; then
|
||||
if ! xmlstarlet --version ; then
|
||||
err "xmlstarlet not found, please install it"
|
||||
exit 127
|
||||
fi
|
||||
|
||||
|
||||
COMMIT="$(git rev-parse --short HEAD)"
|
||||
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
||||
clear
|
||||
|
|
@ -60,8 +61,8 @@ Patching operation are all not limited at all !
|
|||
Asset extraction are not needed :)'
|
||||
|
||||
download_tools() {
|
||||
apktool_link="https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_3.0.1.jar"
|
||||
apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.7/APKEditor-1.4.7.jar"
|
||||
apktool_link="https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.12.0.jar"
|
||||
apkeditor_link="https://github.com/REAndroid/APKEditor/releases/download/V1.4.6/APKEditor-1.4.6.jar"
|
||||
|
||||
cd tools && rm -rf ./*.jar
|
||||
wget -q --show-progress -O apktool.jar "$apktool_link" || err "downloading apktool failed"
|
||||
|
|
@ -70,14 +71,14 @@ download_tools() {
|
|||
}
|
||||
|
||||
darwindeps() {
|
||||
PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
|
||||
PATH="$HOMEBREW_PREFIX/opt/gnu-sed/libexec/gnubin:$PATH"
|
||||
}
|
||||
|
||||
darwin() {
|
||||
[ $(brew list | grep gnu-sed) ] && echo "gnu-sed is installed!" && darwindeps || echo "gnu-sed is not installed. Please install it!"
|
||||
}
|
||||
|
||||
if uname -a | grep -i Darwin; then
|
||||
if uname -a | grep -i Darwin ; then
|
||||
info "You have macOS environment :)"
|
||||
darwin
|
||||
clear
|
||||
|
|
@ -89,27 +90,19 @@ copy_assets() {
|
|||
|
||||
is_unpacked() {
|
||||
[ -d "$DIRPATH"/mbapk/mbapk_unpacked ] || {
|
||||
err "[mbapk_unpacked] not found ! Please unpack APK first !"
|
||||
return 127
|
||||
err "[mbapk_unpacked] not found ! Please unpack APK first !" ; return 127
|
||||
}
|
||||
}
|
||||
is_unpacked_lib() {
|
||||
[ -d "$DIRPATH"/mbapk/mbapk_unpacked/root/lib ] || {
|
||||
err "[mbapk_unpacked/root/lib] folder not found ! Please unpack APK first !"
|
||||
return 127
|
||||
err "[mbapk_unpacked/root/lib] folder not found ! Please unpack APK first !" ; return 127
|
||||
}
|
||||
}
|
||||
apktool_exist() {
|
||||
[ -f "$DIRPATH"/tools/apktool.jar ] || {
|
||||
err "apktool not found"
|
||||
return 127
|
||||
}
|
||||
[ -f "$DIRPATH"/tools/apktool.jar ] || { err "apktool not found" ; return 127 ; }
|
||||
}
|
||||
apkeditor_exist() {
|
||||
[ -f "$DIRPATH"/tools/apkeditor.jar ] || {
|
||||
err "apkeditor not found"
|
||||
return 127
|
||||
}
|
||||
[ -f "$DIRPATH"/tools/apkeditor.jar ] || { err "apkeditor not found" ; return 127 ; }
|
||||
}
|
||||
mb_apk_exist() {
|
||||
ls "$DIRPATH"/mbapk/*.apk >/dev/null 2>&1 || {
|
||||
|
|
@ -119,22 +112,12 @@ mb_apk_exist() {
|
|||
}
|
||||
|
||||
unpack_mbcp() {
|
||||
[[ $(uname -a | grep Linux) ]] && local -
|
||||
set -e
|
||||
{ apkeditor_exist && mb_apk_exist; } || return 0
|
||||
[[ $(uname -a | grep Linux) ]] && local - ; set -e
|
||||
{ apkeditor_exist && mb_apk_exist ; } || return 1
|
||||
rm -rf 'mbapk/mbapk_unpacked'
|
||||
rm -rf 'mbapk/*.apks'
|
||||
rm -rf 'mbapk/*merged.apk'
|
||||
java -jar tools/apkeditor.jar d -i mbapk/*.apk -o mbapk/mbapk_unpacked || {
|
||||
err "Unpacking failed !"
|
||||
return 1
|
||||
}
|
||||
touch 'mbapk/mbapk_unpacked/isreal_unpacked'
|
||||
unzip -l mbapk/MBOriginal.apk | grep -oH "ic-appmb.ttf" && good "Current converted app is MBBank! Continuing" || {
|
||||
err "Current converted app is NOT MBBank! Deleting files"
|
||||
rm -rf mbapk/*
|
||||
return 1
|
||||
}
|
||||
java -jar tools/apkeditor.jar d -i mbapk/*.apk -o mbapk/mbapk_unpacked || { err "Unpacking failed !" ; return 1 ; }
|
||||
info "Cleaning useless files..."
|
||||
rm -rf 'mbapk/mbapk_unpacked/root/assets/_4A9w8flncUrhDOG8dyqLi_azBTYT3PlSXz0hiCzRQA_'
|
||||
rm -rf 'mbapk/mbapk_unpacked/root/assets/0QDl12M5S2hKxoKF4cNI4kEX1qDQRMiOd34TXjSjy4M_'
|
||||
|
|
@ -213,44 +196,35 @@ unpack_mbcp() {
|
|||
|
||||
info "Reformatting AndroidManifest.xml with xmlstarlet..."
|
||||
mv "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml.orig
|
||||
xmlstarlet fo "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml.orig >"$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
|
||||
xmlstarlet fo "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml.orig > "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
|
||||
|
||||
info "Changing minSdkVersion to 28..."
|
||||
sed -i 's|android:minSdkVersion="24"|android:minSdkVersion="28"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
|
||||
sed -i 's|android:minSdkVersion="24"|android:minSdkVersion="28"|g' "$DIRPATH"/mbapk/mbapk_unpacked/AndroidManifest.xml
|
||||
}
|
||||
|
||||
repack_mbcp() {
|
||||
{ apktool_exist && is_unpacked; } || return 0
|
||||
{ apktool_exist && is_unpacked ; } || return 1
|
||||
info "Repacking APK..."
|
||||
echo "Compiled with MBCPApp Patcher by $(whoami) on $(uname -s -r) with commit $COMMIT at $(date). That's all xD" >'mbapk/mbapk_unpacked/root/assets/mbcp_info/mbcpinfo.txt'
|
||||
echo "Compiled with MBCPApp Patcher by $(whoami) on $(uname -s -r) with commit $COMMIT at $(date). That's all xD" > 'mbapk/mbapk_unpacked/root/assets/mbcp_info/mbcpinfo.txt'
|
||||
(
|
||||
set -e
|
||||
java -jar tools/apkeditor.jar b -i 'mbapk/mbapk_unpacked' -o mbcpapp_apk/MBCP_Flutter_TMP.apk
|
||||
[ ! -f 'mbcpapp_apk/MBCP_Flutter_TMP.apk' ] && exit 1
|
||||
info "Processing APK signature scheme v2/v3..."
|
||||
rm -rf mbcpapp_apk/MBCP_Flutter_SelfPatched*
|
||||
java -jar tools/apkeditor.jar b -t sig -i 'mbcpapp_apk/MBCP_Flutter_TMP.apk' -sig 'mbsig/signatures' -o "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk"
|
||||
rm 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
|
||||
java -jar tools/apkeditor.jar b -t sig -i 'mbcpapp_apk/MBCP_Flutter_TMP.apk' -sig 'mbsig/signatures' -o 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
|
||||
rm 'mbcpapp_apk/MBCP_Flutter_TMP.apk'
|
||||
) && {
|
||||
good "Completed! Repacked APK are saved as [mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk] !!!"
|
||||
good 'Completed! Repacked APK are saved as [mbcpapp_apk/MBCP_Flutter_SelfPatched.apk] !!!'
|
||||
good 'Install and trying to open it when ಠ‿ಠ'
|
||||
good 'If you are facing issues, report it on Telegram [@mbcposs_en] or [@mbcposs] (for Vietnamese users) !!'
|
||||
good 'It is recommended to report issues to [https://git.disroot.org/mbcp/mbbpatch/issues] instead !'
|
||||
} || err 'ERROR : Repacking failed !'
|
||||
}
|
||||
|
||||
successunpack() {
|
||||
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/isreal_unpacked ]; then
|
||||
echo -e "\033[32m"Unpacked."$1\033[0m"
|
||||
|
||||
else
|
||||
echo -e "\033[31m"Not yet unpacked or not found."$1\033[0m"
|
||||
fi
|
||||
}
|
||||
|
||||
check_mbshield() {
|
||||
is_unpacked || return 1
|
||||
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]; then
|
||||
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]
|
||||
then
|
||||
info "$mbshield_found"
|
||||
iszdefend
|
||||
else
|
||||
|
|
@ -259,11 +233,10 @@ check_mbshield() {
|
|||
}
|
||||
|
||||
convert_apks() {
|
||||
[[ $(uname -a | grep Linux) ]] && local -
|
||||
set -e
|
||||
[[ $(uname -a | grep Linux) ]] && local - ; set -e
|
||||
ls "$DIRPATH"/mbapk/*.apks >/dev/null 2>&1 || {
|
||||
err "APKs missing, cannot continue !"
|
||||
return 0
|
||||
return 1
|
||||
}
|
||||
apkeditor_exist
|
||||
info "Converting apks to apk..."
|
||||
|
|
@ -271,11 +244,6 @@ convert_apks() {
|
|||
mv mbapk/*.apk mbapk/MBOriginal.apk
|
||||
info 'Cleaning left over [apks] files...'
|
||||
rm -f mbapk/*.apks
|
||||
unzip -l mbapk/MBOriginal.apk | grep -oH "ic-appmb.ttf" && good "Current converted app is MBBank! Continuing" || {
|
||||
err "Current converted app is NOT MBBank! Deleting files"
|
||||
rm -rf mbapk/*
|
||||
return 1
|
||||
}
|
||||
info "You probably can continue to unpack APK!"
|
||||
}
|
||||
|
||||
|
|
@ -295,192 +263,194 @@ echo "Original APK must be inside [mbapk] folder !"
|
|||
echo -------------------------------------------------------------
|
||||
echo "Current commit : $COMMIT ($BRANCH)"
|
||||
echo "Source code : https://git.disroot.org/mbcp/mbbpatch.git"
|
||||
echo "Documentation : see [docs] folder"
|
||||
echo "Written from scratch by Cuynu with love <3"
|
||||
echo -------------------------------------------------------------
|
||||
echo App status : $(successunpack)
|
||||
echo "Made possible by Cuynu's brain with love <3"
|
||||
echo -------------------------------------------------------------
|
||||
# Main functions
|
||||
PS3='Please select options to continue : '
|
||||
select opt in 'Pull latest commit' 'Unpack APK' 'Convert apks to apk' 'Repack APK' 'Install patched app' 'MBShield Check' 'Patch App' 'Legacy patches' 'Extract assets [ROOT]' 'Launch MBCPApp/MBBank' 'Force close MBCPApp/MBBank' 'Clear MBCPApp/MBBank app data' 'Clean patched app' 'Download/update tools' 'Restart script' 'Exit'; do
|
||||
select opt in 'Pull latest commit' 'Unpack APK' 'Convert apks to apk' 'Repack APK' 'Install patched app' 'MBShield Check' 'Patch App' 'Legacy patches' 'Extract assets [ROOT]' 'Launch MBCPApp/MBBank' 'Force close MBCPApp/MBBank' 'Clear MBCPApp/MBBank app data' 'Clean patched app' 'Download/update tools' 'Exit'
|
||||
do
|
||||
case "$opt" in
|
||||
'Download/update tools') download_tools ;;
|
||||
'Unpack APK') unpack_mbcp ;;
|
||||
'Repack APK') repack_mbcp ;;
|
||||
'Patch App') run_patcher ;;
|
||||
'Legacy patches') run_legacy_patcher ;;
|
||||
'MBShield Check') check_mbshield ;;
|
||||
'Convert apks to apk') convert_apks ;;
|
||||
'Extract assets [ROOT]')
|
||||
is_unpacked || exit 1
|
||||
isvcm1
|
||||
iszdefend
|
||||
info 'To extract encrypted assets [if current app has MBShield protection] you need rooted device'
|
||||
info 'And trigger a bulit-in app assets extraction !'
|
||||
echo -------------------------------------------
|
||||
PS3='Select options continue, or [3] to quit : '
|
||||
select opt in 'Launch MBCPApp/MBBank' 'Extract assets' 'Exit'; do
|
||||
if [ "$opt" == 'Launch MBCPApp/MBBank' ]; then
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
info 'After app started, you MUST need to trigger assets extraction'
|
||||
info 'By trigger eKYC authetication with reset account password option or register DigitalOTP'
|
||||
info 'After you got into eKYC screen, close the app, then use Extract assets option to extract assets.'
|
||||
elif [ "$opt" == 'Extract assets' ]; then
|
||||
if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ]; then
|
||||
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]; then
|
||||
info "MBShield found ! Continuing !!!"
|
||||
warn 'You MUST grant root access to [com.android.shell] in order to extract assets !'
|
||||
info 'Trying to extract assets...'
|
||||
adb shell am force-stop com.mbmobile
|
||||
adb shell rm -rf /sdcard/assets
|
||||
adb shell mkdir /sdcard/assets
|
||||
copy_assets flutter_assets
|
||||
copy_assets dexopt
|
||||
copy_assets font
|
||||
copy_assets mbshield
|
||||
copy_assets media_init_data
|
||||
copy_assets mlkit_barcode_models
|
||||
copy_assets models_bundled
|
||||
copy_assets mwebview
|
||||
copy_assets zfiles
|
||||
copy_assets crashlytics-build.properties
|
||||
copy_assets firmware
|
||||
copy_assets insider.ttf
|
||||
copy_assets dlangV5.dat
|
||||
copy_assets dlangV5.en.dat
|
||||
copy_assets policy0
|
||||
copy_assets policy1
|
||||
copy_assets policy2
|
||||
copy_assets policy3
|
||||
copy_assets policy4
|
||||
copy_assets policy5
|
||||
copy_assets policy6
|
||||
copy_assets policy8
|
||||
copy_assets policy9
|
||||
copy_assets policym
|
||||
copy_assets profile
|
||||
copy_assets rulesV5.dat
|
||||
copy_assets sgprofile
|
||||
copy_assets signature
|
||||
copy_assets smart_ekyc_finall.zip
|
||||
copy_assets version.json
|
||||
copy_assets vkeylicensepack
|
||||
copy_assets voscodesign.vky
|
||||
info 'Copying assets...'
|
||||
adb pull /sdcard/assets mbapk/mbapk_unpacked/root/ && good "Assets copied to [mbapk_unpacked/root/] !" || err "Failed to copy assets ! Please try again."
|
||||
info 'Removing leftover assets...'
|
||||
adb shell rm -rf /sdcard/assets && good "Removed leftover assets !" || err "Failed to remove leftover assets from device !"
|
||||
else
|
||||
info "MBShield not found ! No need to extract assets !"
|
||||
fi
|
||||
else
|
||||
err "Can't find [mbapk/mbapk_unpacked] folder, cannot continue ! "
|
||||
err "Please unpack APK first !"
|
||||
fi
|
||||
|
||||
elif [ "$opt" == 'Exit' ]; then
|
||||
clear
|
||||
bash mbcpapp.sh
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
'Restart script')
|
||||
bash mbcpapp.sh
|
||||
;;
|
||||
'Clear MBCPApp/MBBank app data')
|
||||
info "Clearing [com.mbmobile] data..."
|
||||
adb shell pm clear com.mbmobile
|
||||
'Download/update tools' ) download_tools ;;
|
||||
'Unpack APK' ) unpack_mbcp ;;
|
||||
'Repack APK' ) repack_mbcp ;;
|
||||
'Patch App' ) run_patcher ;;
|
||||
'Legacy patches' ) run_legacy_patcher ;;
|
||||
'MBShield Check' ) check_mbshield ;;
|
||||
'Convert apks to apk' ) convert_apks ;;
|
||||
'Extract assets [ROOT]' )
|
||||
iszdefend
|
||||
info 'To extract encrypted assets [if current app has MBShield protection] you need rooted device'
|
||||
info 'And trigger a bulit-in app assets extraction !'
|
||||
echo -------------------------------------------
|
||||
PS3='Select options continue, or [3] to quit : '
|
||||
select opt in 'Launch MBCPApp/MBBank' 'Extract assets' 'Exit'
|
||||
do
|
||||
if [ "$opt" == 'Launch MBCPApp/MBBank' ]; then
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
info "Current logged in account will remain present, even if app data is cleared !"
|
||||
;;
|
||||
'Pull latest commit')
|
||||
git pull origin mbflutter
|
||||
info "Please run patcher again !"
|
||||
exit
|
||||
;;
|
||||
'Launch MBCPApp/MBBank')
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
;;
|
||||
'Force close MBCPApp/MBBank')
|
||||
info 'After app started, you MUST need to trigger assets extraction'
|
||||
info 'By trigger eKYC authetication with reset account password option or register DigitalOTP'
|
||||
info 'After you got into eKYC screen, close the app, then use Extract assets option to extract assets.'
|
||||
elif [ "$opt" == 'Extract assets' ]; then
|
||||
if [ -d "$DIRPATH"/mbapk/mbapk_unpacked/ ]
|
||||
then
|
||||
if [ -f "$DIRPATH"/mbapk/mbapk_unpacked/root/assets/mbshield.szip ]
|
||||
then
|
||||
info "MBShield found ! Continuing !!!"
|
||||
warn 'You MUST grant root access to [com.android.shell] in order to extract assets !'
|
||||
info 'Trying to extract assets...'
|
||||
adb shell am force-stop com.mbmobile
|
||||
adb shell rm -rf /sdcard/assets
|
||||
adb shell mkdir /sdcard/assets
|
||||
copy_assets flutter_assets
|
||||
copy_assets dexopt
|
||||
copy_assets font
|
||||
copy_assets mbshield
|
||||
copy_assets media_init_data
|
||||
copy_assets mlkit_barcode_models
|
||||
copy_assets models_bundled
|
||||
copy_assets mwebview
|
||||
copy_assets zfiles
|
||||
copy_assets crashlytics-build.properties
|
||||
copy_assets firmware
|
||||
copy_assets insider.ttf
|
||||
copy_assets dlangV5.dat
|
||||
copy_assets dlangV5.en.dat
|
||||
copy_assets policy0
|
||||
copy_assets policy1
|
||||
copy_assets policy2
|
||||
copy_assets policy3
|
||||
copy_assets policy4
|
||||
copy_assets policy5
|
||||
copy_assets policy6
|
||||
copy_assets policy8
|
||||
copy_assets policy9
|
||||
copy_assets policym
|
||||
copy_assets profile
|
||||
copy_assets rulesV5.dat
|
||||
copy_assets sgprofile
|
||||
copy_assets signature
|
||||
copy_assets smart_ekyc_finall.zip
|
||||
copy_assets version.json
|
||||
copy_assets vkeylicensepack
|
||||
copy_assets voscodesign.vky
|
||||
info 'Copying assets...'
|
||||
adb pull /sdcard/assets mbapk/mbapk_unpacked/root/ && good "Assets copied to [mbapk_unpacked/root/] !" || err "Failed to copy assets ! Please try again."
|
||||
info 'Removing leftover assets...'
|
||||
adb shell rm -rf /sdcard/assets && good "Removed leftover assets !" || err "Failed to remove leftover assets from device !"
|
||||
else
|
||||
info "MBShield not found ! No need to extract assets !"
|
||||
fi
|
||||
else
|
||||
err "Can't find [mbapk/mbapk_unpacked] folder, cannot continue ! "
|
||||
err "Please unpack APK first !"
|
||||
fi
|
||||
|
||||
elif [ "$opt" == 'Exit' ]; then
|
||||
clear
|
||||
bash mbcpapp.sh
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
'Clean patched app')
|
||||
info "Cleaning, please wait..."
|
||||
rm -f mbcpapp_apk/*.apk
|
||||
rm -f mbcpapp_apk/*.zip
|
||||
rm -f mbapk/*.apk
|
||||
rm -f mbapk/*.apks
|
||||
rm -rf mbapk/mbapk_unpacked
|
||||
info "Cleared !"
|
||||
'Clear MBCPApp/MBBank app data' )
|
||||
info "Clearing [com.mbmobile] data..."
|
||||
adb shell pm clear com.mbmobile
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
info "Current logged in account will remain present, even if app data is cleared !"
|
||||
;;
|
||||
'Install patched app')
|
||||
info 'Select your patched version to continue'
|
||||
PS3='Select patched version to continue, or [4] to quit : '
|
||||
select opt in 'App patched with newer version [v6.4.59+]' 'App patched with specific version' 'App patched with older version [v6.4.55 or lower]' 'Exit'; do
|
||||
|
||||
if [ "$opt" == 'App patched with newer version [v6.4.59+]' ]; then
|
||||
if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ]; then
|
||||
warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
|
||||
warn "You must have connected Android device with USB debugging turned on in order to install !!!"
|
||||
adb kill-server
|
||||
adb start-server
|
||||
adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk"
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
else
|
||||
err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !"
|
||||
fi
|
||||
|
||||
elif [ "$opt" == 'App patched with specific version' ]; then
|
||||
if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ]; then
|
||||
warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
|
||||
warn "You must have connected Android device with USB debugging turned on in order to install !!!"
|
||||
adb kill-server
|
||||
adb start-server
|
||||
adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk"
|
||||
# Delete zimperium detection files
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/0*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/1*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/2*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/3*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/4*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/5*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/6*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/7*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/8*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/9*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/KNOV3PN*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/zxpolicyme*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/policyme*
|
||||
warn "ATTENTION : Network traffic will be redirected to [medium.com] for 20 seconds !!!"
|
||||
adb shell su -c 'iptables -t nat -A OUTPUT -p tcp -d 0/0 -j DNAT --to-destination 162.159.153.4:443'
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
sleep 20
|
||||
info "Restoring network traffic"
|
||||
adb shell su -c 'iptables -t nat -F OUTPUT'
|
||||
info "Press [Try again] after got 1005/1007 error on MB, so it's can skip device not secure dialog !"
|
||||
else
|
||||
err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !"
|
||||
fi
|
||||
|
||||
elif [ "$opt" == 'App patched with older version [v6.4.55 or lower]' ]; then
|
||||
if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk ]; then
|
||||
warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
|
||||
warn "You must have connected Android device with USB debugging turned on in order to install !!!"
|
||||
adb kill-server
|
||||
adb start-server
|
||||
adb install "mbcpapp_apk/MBCP_Flutter_SelfPatched_$COMMIT.apk"
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
else
|
||||
err "[MBCP_Flutter_SelfPatched_$COMMIT.apk] not found, cannot continue !"
|
||||
fi
|
||||
|
||||
elif [ "$opt" == 'Exit' ]; then
|
||||
PS3='Please select options to continue : '
|
||||
break
|
||||
fi
|
||||
done
|
||||
'Pull latest commit' )
|
||||
git pull origin mbflutter
|
||||
info "Please run patcher again !"
|
||||
exit
|
||||
;;
|
||||
'Exit') exit ;;
|
||||
'Launch MBCPApp/MBBank' )
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
;;
|
||||
'Force close MBCPApp/MBBank' )
|
||||
adb shell am force-stop com.mbmobile
|
||||
;;
|
||||
'Clean patched app' )
|
||||
info "Cleaning, please wait..."
|
||||
rm -f mbcpapp_apk/*.apk
|
||||
rm -f mbcpapp_apk/*.zip
|
||||
rm -f mbapk/*.apk
|
||||
rm -f mbapk/*.apks
|
||||
rm -rf mbapk/mbapk_unpacked
|
||||
info "Cleared !"
|
||||
;;
|
||||
'Install patched app' )
|
||||
info 'Select your patched version to continue'
|
||||
PS3='Select patched version to continue, or [4] to quit : '
|
||||
select opt in 'App patched with newer version [v6.4.59+]' 'App patched with specific version' 'App patched with older version [v6.4.55 or lower]' 'Exit'
|
||||
do
|
||||
|
||||
if [ "$opt" == 'App patched with newer version [v6.4.59+]' ]; then
|
||||
if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched.apk ]
|
||||
then
|
||||
warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
|
||||
warn "You must have connected Android device with USB debugging turned on in order to install !!!"
|
||||
adb kill-server
|
||||
adb start-server
|
||||
adb install 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
else
|
||||
err "[MBCP_Flutter_SelfPatched.apk] not found, cannot continue !"
|
||||
fi
|
||||
|
||||
elif [ "$opt" == 'App patched with specific version' ]; then
|
||||
if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched.apk ]
|
||||
then
|
||||
warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
|
||||
warn "You must have connected Android device with USB debugging turned on in order to install !!!"
|
||||
adb kill-server
|
||||
adb start-server
|
||||
adb install 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
|
||||
# Delete zimperium detection files
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/0*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/1*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/2*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/3*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/4*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/5*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/6*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/7*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/8*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/9*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/KNOV3PN*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/zxpolicyme*
|
||||
adb shell su -c rm -rf /data/data/com.mbmobile/files/policyme*
|
||||
warn "ATTENTION : Network traffic will be redirected to [medium.com] for 20 seconds !!!"
|
||||
adb shell su -c 'iptables -t nat -A OUTPUT -p tcp -d 0/0 -j DNAT --to-destination 162.159.153.4:443'
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
sleep 20
|
||||
info "Restoring network traffic"
|
||||
adb shell su -c 'iptables -t nat -F OUTPUT'
|
||||
info "Press [Try again] after got 1005/1007 error on MB, so it's can skip device not secure dialog !"
|
||||
else
|
||||
err "[MBCP_Flutter_SelfPatched.apk] not found, cannot continue !"
|
||||
fi
|
||||
|
||||
elif [ "$opt" == 'App patched with older version [v6.4.55 or lower]' ]; then
|
||||
if [ -f "$DIRPATH"/mbcpapp_apk/MBCP_Flutter_SelfPatched.apk ]
|
||||
then
|
||||
warn "MBCP Helper / CorePatch must be installed with disable digest verify on !!!"
|
||||
warn "You must have connected Android device with USB debugging turned on in order to install !!!"
|
||||
adb kill-server
|
||||
adb start-server
|
||||
adb install 'mbcpapp_apk/MBCP_Flutter_SelfPatched.apk'
|
||||
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
|
||||
else
|
||||
err "[MBCP_Flutter_SelfPatched.apk] not found, cannot continue !"
|
||||
fi
|
||||
|
||||
|
||||
elif [ "$opt" == 'Exit' ]; then
|
||||
PS3='Please select options to continue : '
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
'Exit' ) exit ;;
|
||||
esac
|
||||
done
|
||||
|
|
|
|||
|
|
@ -77,36 +77,12 @@ for f in patches/*.sh ; do
|
|||
continue
|
||||
}
|
||||
[ -n "$minver" ] && {
|
||||
chk="${minver//[^.]}"
|
||||
[ "${#chk}" -ne 2 ] && {
|
||||
warn "[parser] skipping [$pname] with malformed minver"
|
||||
continue
|
||||
}
|
||||
|
||||
minmajor="$(bb_split "$minver" '.' '0')"
|
||||
minminor="$(bb_split "$minver" '.' '1')"
|
||||
minpatch="$(bb_split "$minver" '.' '2')"
|
||||
|
||||
[ "$(( $(mb_ver 0) * 10000 + $(mb_ver 1) * 100 + $(mb_ver 2) ))" -lt \
|
||||
"$(( minmajor * 10000 + minminor * 100 + minpatch ))" \
|
||||
] && {
|
||||
[ "$(get_mb_ver)" -gt "$minver" ] || {
|
||||
info "[parser] skipping [$pname] as current version is lower than patch version clamp"
|
||||
continue ; }
|
||||
} || :
|
||||
[ -n "$maxver" ] && {
|
||||
chk="${maxver//[^.]}"
|
||||
[ "${#chk}" -ne 2 ] && {
|
||||
warn "[parser] skipping [$pname] with malformed maxver"
|
||||
continue
|
||||
}
|
||||
|
||||
maxmajor="$(bb_split "$maxver" '.' '0')"
|
||||
maxminor="$(bb_split "$maxver" '.' '1')"
|
||||
maxpatch="$(bb_split "$maxver" '.' '2')"
|
||||
|
||||
[ "$(( $(mb_ver 0) * 10000 + $(mb_ver 1) * 100 + $(mb_ver 2) ))" -gt \
|
||||
"$(( maxmajor * 10000 + maxminor * 100 + maxpatch ))" \
|
||||
] && {
|
||||
[ "$(get_mb_ver)" -lt "$maxver" ] || {
|
||||
info "[parser] skipping [$pname] as current version is higher than patch version clamp"
|
||||
continue ; }
|
||||
} || :
|
||||
|
|
|
|||
|
|
@ -9,6 +9,3 @@ info "Copying modified resources..."
|
|||
cp -r -f 'blob_patches/resources/raw' 'mbapk/mbapk_unpacked/resources/package_1/res/'
|
||||
cp -f 'blob_patches/resources/strings-vi/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values-vi/'
|
||||
cp -f 'blob_patches/resources/strings/strings.xml' 'mbapk/mbapk_unpacked/resources/package_1/res/values/'
|
||||
info "Copying bootleg_ekyc..."
|
||||
cp -f 'blob_patches/bootleg_ekyc/dotp1_ekyc.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/digitalOtp_img_authenguide01.webp'
|
||||
cp -f 'blob_patches/bootleg_ekyc/dotp2_ekyc.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/digitalOtp_img_authenguide02.webp'
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
# PATCHNAME: Add verified badge
|
||||
# MAXVER:
|
||||
# MINVER:
|
||||
# MINVER:
|
||||
# shellcheck disable=SC1091
|
||||
. "$DIRPATH"/common.sh
|
||||
|
||||
|
|
@ -30,12 +30,3 @@ rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/ba
|
|||
|
||||
# Processing shield for private users
|
||||
cp -f 'blob_patches/verified_badge/tick-mark.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/img_shield_processing.webp'
|
||||
|
||||
# MIC Protection shield banners
|
||||
rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_hoadon.webp'
|
||||
rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_muasam.webp'
|
||||
rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_offline.webp'
|
||||
# Private users
|
||||
rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_hoadon.private.webp'
|
||||
rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_muasam.private.webp'
|
||||
rm -rf 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/khien_img_offline.private.webp'
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env bash
|
||||
# PATCHNAME: Autopatch strings
|
||||
# MAXVER: 6.4.67
|
||||
# MAXVER: 67
|
||||
# MINVER:
|
||||
# shellcheck disable=SC1091
|
||||
. "$DIRPATH"/common.sh
|
||||
|
|
@ -46,7 +46,7 @@ sed_libapp 's|To provide the best experience, the MBBank APP needs access to som
|
|||
# QR on "Other"
|
||||
sed_libapp 's|QR receive|My QR |g'
|
||||
|
||||
# Digital OTP related
|
||||
# Digital OTP related
|
||||
sed_libapp 's|To use transaction authentication feature with Online OTP, please signin APP MB Bank and implement Online OTP registration in the Installation item|DigitalOTP is not currently registered on your MBCP app. In order to use this feature, please login to MBCP and setup DigitalOTP, then try again. |'
|
||||
sed_libapp 's|When transacting via Internet banking or registering Online OTP on other device|Used for transactions via eMB or when registering DigitalOTP on other device |'
|
||||
sed_libapp 's|online OTP|DigitalOTP|g'
|
||||
|
|
@ -101,18 +101,18 @@ sed_libapp 's|You want to send a gift for the occasion?|You want to send a gift
|
|||
sed_libapp 's|Intruction|How-to |g'
|
||||
sed_libapp 's|MBBank will send the withdrawal verification code to the APP instead of SMS on the phone.|MB Bank will send the withdrawal verification code to MBCPApp instead of SMS as before. |'
|
||||
|
||||
# Latest version check
|
||||
# Latest version check
|
||||
sed_libapp 's|The lastest version|TG/Disroot:mbbpatch|'
|
||||
|
||||
# Profile section
|
||||
# Profile section
|
||||
sed_libapp 's|User profile|View profile|g'
|
||||
sed_libapp 's|MB Membership Package|MB Membership |'
|
||||
sed_libapp 's|email information|Email information|g'
|
||||
|
||||
# Account related
|
||||
# Account related
|
||||
sed_libapp 's|Premium Account Number|Open new lucky account|'
|
||||
|
||||
# Cashback 150K badge (unused on v6.4.62+)
|
||||
# Cashback 150K badge (unused on v6.4.62+)
|
||||
sed_libapp 's|Cashback 150K| |'
|
||||
|
||||
# Forgot password screen
|
||||
|
|
@ -120,7 +120,7 @@ sed_libapp 's|Request for supplying password|Request for new password |'
|
|||
sed_libapp 's|ID card/ID card|Old/New ID card|g'
|
||||
sed_libapp 's|Number of document|Number of ID card |g'
|
||||
|
||||
# Wrong password dialog
|
||||
# Wrong password dialog
|
||||
sed_libapp 's|Your device will be locked if you enter incorrectly more than 5 times. Please try again or select the "Forgot password" feature to be reissued.|Your account will be locked if you enter incorrect password more than 5 times. Please try again or use the "Forgot password" feature to reset. |'
|
||||
|
||||
# Others section on MB
|
||||
|
|
@ -138,7 +138,7 @@ sed_libapp 's|Please come back later for more new themes!|Tips: Unofficial theme
|
|||
sed_libapp 's|Change theme successfully|App theme changed :) |'
|
||||
sed_libapp 's|Change theme|Store themes|'
|
||||
|
||||
# Balance fluctuations notifications (Configuration -> Balance fluctuations notifications)
|
||||
# Balance fluctuations notifications (Configuration -> Balance fluctuations notifications)
|
||||
sed_libapp 's|get notifications|Get notifications|g'
|
||||
sed_libapp 's|Read the announcement|Notify with voice |'
|
||||
|
||||
|
|
@ -155,7 +155,7 @@ sed_libapp 's|Start journey|Alright ! |'
|
|||
sed_libapp 's|Go here to install the app|MBCPApp settings are here |'
|
||||
|
||||
|
||||
# EKYC error dialog
|
||||
# EKYC error dialog
|
||||
sed_libapp 's|Verification information is invalid, please contact hotline 1900545426 for support|EKYC failed, please go to Telegram group (@mbbpatch_eng) for details and help !!! |'
|
||||
|
||||
# XPE002/XPE003 dialog :
|
||||
|
|
@ -190,7 +190,7 @@ sed_libapp 's|Zalo Pay|ZolaPay |'
|
|||
sed_libapp 's|MB membership|MB Membership|g'
|
||||
|
||||
# Explore strings (homeLanding -> More -> Discovery)
|
||||
sed_libapp 's|New release|Features |g'
|
||||
sed_libapp 's|New release|Features |g'
|
||||
sed_libapp 's|Challenge to receive gifts|Others |g'
|
||||
|
||||
# Close account hints (homeLanding -> Total balance VND -> See -> Close account)
|
||||
|
|
@ -198,7 +198,7 @@ sed_libapp 's|MB will Autoally transfer the entire remaining balance to the acco
|
|||
|
||||
# Expired login session dialog
|
||||
sed_libapp 's|The login session expired. Please login again|Login session are expired. Please login again|'
|
||||
# Confirm button on dialog
|
||||
# Confirm button on dialog
|
||||
sed_libapp 's|I understand|OKAY |g'
|
||||
|
||||
# Exit application dialog
|
||||
|
|
@ -239,7 +239,7 @@ sed_libapp 's|AI Suggestion|MB Suggestion|'
|
|||
sed_libapp 's|Quick transfer using AI|Quick transfer |'
|
||||
|
||||
|
||||
# Placeholder toolbox
|
||||
# Placeholder toolbox
|
||||
sed_libapp 's|Shopping, entertainment|MBCPApp Toolbox |'
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# PATCHNAME: Better custom background screen
|
||||
# MAXVER:
|
||||
# MINVER: 6.4.83
|
||||
# shellcheck disable=SC1091
|
||||
. "$DIRPATH"/common.sh
|
||||
|
||||
info "Copying..."
|
||||
cp -f 'blob_patches/better_custombgscreen/customize_img_changeImageContent.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/customize_img_changeImageContent.webp'
|
||||
cp -f 'blob_patches/better_custombgscreen/customize_img_changeImageContent.png' 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/customize_img_changeImageContent_2.webp'
|
||||
|
||||
rm -f 'mbapk/mbapk_unpacked/root/assets/flutter_assets/assets/images/dynamic/base/customize_img_changeImageBG.webp'
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env bash
|
||||
# PATCHNAME: Bypass accessibility & malicious apps check
|
||||
# MAXVER: 6.4.55
|
||||
# MAXVER: 55
|
||||
# MINVER:
|
||||
# shellcheck disable=SC1091
|
||||
. "$DIRPATH"/common.sh
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
# PATCHNAME: Bypass GW934 checksum
|
||||
# MAXVER: 6.4.67
|
||||
# MINVER: 6.4.63
|
||||
# MAXVER: 67
|
||||
# MINVER: 63
|
||||
# shellcheck disable=SC1091
|
||||
. "$DIRPATH"/common.sh
|
||||
|
||||
|
|
@ -18,11 +18,11 @@ fi
|
|||
|
||||
info "Extracting [app-debug.apk]..."
|
||||
unzip -o 'tools/bypass/app-debug.apk' -d 'tools/bypass'
|
||||
mv 'tools/bypass/lib/arm64-v8a/libSignatureKiller.so' 'tools/bypass/lib/arm64-v8a/libmodft3.so'
|
||||
mv 'tools/bypass/lib/arm64-v8a/libSignatureKiller.so' 'tools/bypass/lib/arm64-v8a/libmodft3.so'
|
||||
mv 'tools/bypass/lib/armeabi-v7a/libSignatureKiller.so' 'tools/bypass/lib/armeabi-v7a/libmodft3.so'
|
||||
info "Moving libraries..."
|
||||
mv 'tools/bypass/lib/arm64-v8a/libmodft3.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a'
|
||||
mv 'tools/bypass/lib/armeabi-v7a/libmodft3.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a'
|
||||
mv 'tools/bypass/lib/arm64-v8a/libmodft3.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a'
|
||||
mv 'tools/bypass/lib/armeabi-v7a/libmodft3.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a'
|
||||
|
||||
mv 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libapp.so' 'mbapk/mbapk_unpacked/root/lib/arm64-v8a/libmbcp.so'
|
||||
mv 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libapp.so' 'mbapk/mbapk_unpacked/root/lib/armeabi-v7a/libmbcp.so'
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue