diff --git a/MBCPApp/mbcpapp.sh b/MBCPApp/mbcpapp.sh
index f99ea3d..909893d 100755
--- a/MBCPApp/mbcpapp.sh
+++ b/MBCPApp/mbcpapp.sh
@@ -64,7 +64,7 @@ echo Original APK path must be inside [mbapk] folder !
echo -------------------------------------------------------------
# Main functions
PS3='Please select options to continue : '
-select opt in 'Unpack APK' 'Repack APK' 'Autopatch strings' 'Change app logo' 'Modify app theme' 'Inject bypass class' 'Extract assets [ROOT]' 'Bypass signature check' 'Launch MBCPApp/MBBank' 'Force close MBCPApp/MBBank' 'Clear MBCPApp/MBBank app data' 'Clean patched app' 'Download apktool' 'Exit'
+select opt in 'Unpack APK' 'Repack APK' 'Patch App' 'Autopatch strings' 'Change app logo' 'Modify app theme' 'Inject bypass class' 'Extract assets [ROOT]' 'Bypass signature check' 'Launch MBCPApp/MBBank' 'Force close MBCPApp/MBBank' 'Clear MBCPApp/MBBank app data' 'Clean patched app' 'Download apktool' 'Exit'
do
if [ "$opt" == 'Download apktool' ]; then
echo Downloading apktool_2.11.1.jar
@@ -114,6 +114,8 @@ else
fi
elif [ "$opt" == 'MBShield Check' ]; then
+ if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/ ]
+then
if [ -f ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/assets/mbshield.szip ]
then
echo "MBShield found on [mbapk_unpacked/assets/mbshield.szip]" !!!
@@ -124,6 +126,9 @@ else
echo "Patching operation are all not limited at all !"
echo "Asset extraction is not needed :)"
fi
+else
+ echo "[mbapk_unpacked] not found ! Please unpack APK first !"
+fi
elif [ "$opt" == 'Patch App' ]; then
@@ -211,6 +216,7 @@ else
done
elif [ "$opt" == 'Clear MBCPApp/MBBank app data' ]; then
+ echo "Clearing [com.mbmobile] data..."
adb shell pm clear com.mbmobile
adb shell am start -n com.mbmobile/io.flutter.plugins.MainActivity
echo "INFO : Current logged in account will remain present, even if app data is cleared !"
@@ -221,11 +227,13 @@ done
adb shell am force-stop com.mbmobile
elif [ "$opt" == 'Clean patched app' ]; then
- rm mbcpapp_apk/*.apk
- rm mbcpapp_apk/*.zip
- rm mbapk/*.apk
- rm mbapk/*.apks
+ echo "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
+ echo "Cleared !"
elif [ "$opt" == 'Exit' ]; then
exit
diff --git a/MBCPApp/patch.sh b/MBCPApp/patch.sh
index cbdac47..26c64b1 100755
--- a/MBCPApp/patch.sh
+++ b/MBCPApp/patch.sh
@@ -1,12 +1,13 @@
echo ---------------------------
echo Patch list for MBCPApp :
PS3='Select patch options : '
-select opt in 'Autopatch strings' 'Change app logo' 'Remove bulit-in fonts' 'Modify app theme' 'Remove garbage permission and activities' 'Remove banners & MiniApp' 'Bypass accessibility & malicious apps check' 'Hide VTAP root detection activity & dialog' 'Remove new root detection' 'Add modified resources' 'Bypass signature check' 'Exit'
+select opt in 'Autopatch strings' 'Change app logo' 'Force portait screen' 'Remove bulit-in fonts' 'Modify app theme' 'Remove garbage permission and activities' 'Remove banners & MiniApp' 'Bypass accessibility & malicious apps check' 'Hide VTAP root detection activity & dialog' 'Remove new root detection' 'Add modified resources' 'Bypass signature check' 'Exit'
do
if [ "$opt" == 'Autopatch strings' ]; then
if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib ]
then
- echo Patching strings in [libapp.so]...
+ echo "Applying [Autopatch strings] patch..."
+ echo "Patching strings in [libapp.so], please wait..."
sed -i -e 's/online OTP/DigitalOTP/g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/arm64-v8a/libapp.so
sed -i -e 's/online OTP/DigitalOTP/g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/armeabi-v7a/libapp.so
echo INFO : [online OTP] strings are modified to [DigitalOTP] !
@@ -19,7 +20,6 @@ do
sed -i -e 's/The lastest version/Telegram: @mbbpatch/g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/arm64-v8a/libapp.so
sed -i -e 's/The lastest version/Telegram: @mbbpatch/g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/armeabi-v7a/libapp.so
echo INFO : [The lastest version] strings are modified to [Telegram: @mbbpatch] !
- echo Patching strings in [libapp.so]...
sed -i 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenLoginClassic.png|https://gitlab.com/-/project/56341767/uploads/f585b28f88876db211f116d1d622031d/mbcp_login.png?git1|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/arm64-v8a/libapp.so
sed -i 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_screenLoginClassic.png|https://gitlab.com/-/project/56341767/uploads/f585b28f88876db211f116d1d622031d/mbcp_login.png?git1|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/armeabi-v7a/libapp.so
sed -i 's|https://filestatic.mbbank.com.vn/mbapp-images/rs/prime/ThemeImage/theme_img_thumbnailClassic.png|https://gitlab.com/-/project/56341767/uploads/ba4f0923a4956ba379868e01c55e9cfb/thumb.png?aaaaaaa|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/arm64-v8a/libapp.so
@@ -62,24 +62,33 @@ do
sed -i 's|Coming soon|Placeholder|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/armeabi-v7a/libapp.so
sed -i 's|Coming Soon|Placeholder|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/arm64-v8a/libapp.so
sed -i 's|Coming Soon|Placeholder|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/armeabi-v7a/libapp.so
-
-
-
+ echo "Applied [Autopatch strings] patch !!!"
else
echo "ERROR : [mbapk_unpacked] folder not found, please unpack APK first !"
echo "ERROR : Auto patch strings requires [mbapk_unpacked] in order to continue !"
fi
+ elif [ "$opt" == 'Force portait screen' ]; then
+ if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked ]
+ then
+ echo "Applying patch [Force portait screen]..."
+ echo "Patching [AndroidManifest.xml]..."
+ sed -i 's|fullSensor|portait|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/AndroidManifest.xml
+ echo "Applied [Force portait screen] patch !!!"
+ else
+ echo "ERROR : [mbapk_unpacked] folder not found, please unpack APK first !"
+ fi
elif [ "$opt" == 'Bypass accessibility & malicious apps check' ]; then
if [ -d ~/mbbpatch/MBCPApp/patches/bypass_accessibility_applist ]
then
+ echo "Applying patch [Bypass accessibility & malicious apps check]..."
echo Copying patched code [MbbankUtilitiesPlugin]...
cp -r -f 'patches/bypass_accessibility_applist/com' 'mbapk/mbapk_unpacked/smali'
echo Patching [AndroidManifest.xml]
sed -i 's|| |g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/AndroidManifest.xml
- echo "Patched code applied !"
+ echo "Applied [Bypass accessibility & malicious apps check] patch !!!"
else
echo "Patch not found ! Aborting :)"
fi
@@ -87,13 +96,15 @@ do
elif [ "$opt" == 'Remove garbage permission and activities' ]; then
if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked ]
then
- echo Patching [AndroidManifest.xml]...
+ echo "Applying patch [Remove garbage permission and activities]..."
+ echo "Patching [AndroidManifest.xml]..."
sed -i 's|android:protectionLevel="signature"|android:protectionLevel="normal"|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/AndroidManifest.xml
sed -i 's|| |g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/AndroidManifest.xml
sed -i 's|| |g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/AndroidManifest.xml
sed -i 's| | |g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/AndroidManifest.xml
sed -i 's|"/>| |g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/AndroidManifest.xml
-
+ echo "Applied [Remove garbage permission and activities] patch !!!"
+
else
echo "[mbapk_unpacked] not found ! Please unpack APK !"
fi
@@ -102,29 +113,31 @@ do
elif [ "$opt" == 'Remove banners & MiniApp' ]; then
if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked ]
then
+ echo "Applying patch [Remove banners & MiniApp]..."
echo Removing banner links from [libapp.so]...
sed -i 's|banner|remove|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/arm64-v8a/libapp.so
sed -i 's|banner|remove|g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/lib/armeabi-v7a/libapp.so
- echo Removing garbage resources...
+ echo Removing related resources...
rm -rf 'mbapk/mbapk_unpacked/assets/flutter_assets/packages'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.webp'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.private.webp'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/explore_img_defaultBanner.webp'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/coreBanking_img_successBanner.webp'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.webp'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.private.webp'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.webp'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/billing_img_defaultBanner.private.webp'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/explore_img_defaultBanner.webp'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/coreBanking_img_successBanner.webp'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.webp'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/base/homeLanding_img_defaultBanner.private.webp'
# Priority exclusive
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/explore_img_defaultBanner.webp'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/coreBanking_img_successBanner.webp'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/homeLanding_img_defaultBanner.webp'
- echo Patch applied !
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/explore_img_defaultBanner.webp'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/coreBanking_img_successBanner.webp'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority/homeLanding_img_defaultBanner.webp'
+ echo "Applied [Remove banners & MiniApp] patch !!!"
else
- echo if
+ echo "[mbapk_unpacked] folder not found ! Please unpack APK first !"
fi
-
+ # Placeholder patch, not yet implemented
elif [ "$opt" == 'Bypass signature check' ]; then
+ echo "Applying patch [Bypass signature check]..."
if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked ]
then
# Checks for MBShield, if exists then exit function
@@ -149,45 +162,48 @@ fi
elif [ "$opt" == 'Remove new root detection' ]; then
if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked ]
then
+ echo "Applying [Remove new root detection] patch..."
echo Removing [libZDefend.so]...
- rm 'mbapk/mbapk_unpacked/lib/arm64-v8a/libZDefend.so'
- rm 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libZDefend.so'
+ rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libZDefend.so'
+ rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libZDefend.so'
echo Removing [libvvb2060.so]...
- rm 'mbapk/mbapk_unpacked/lib/arm64-v8a/libvvb2060.so'
- rm 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libvvb2060.so'
+ rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libvvb2060.so'
+ rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libvvb2060.so'
echo Removing [libtoolChecker.so]...
- rm 'mbapk/mbapk_unpacked/lib/arm64-v8a/libtoolChecker.so'
- rm 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libtoolChecker.so'
- echo Removing garbage files...
+ rm -f 'mbapk/mbapk_unpacked/lib/arm64-v8a/libtoolChecker.so'
+ rm -f 'mbapk/mbapk_unpacked/lib/armeabi-v7a/libtoolChecker.so'
+ echo Removing related files...
sleep 3
rm -rf 'mbapk/mbapk_unpacked/assets/zfiles'
- rm 'mbapk/mbapk_unpacked/assets/dlangV5.dat'
- rm 'mbapk/mbapk_unpacked/assets/dlangV5.en.dat'
- rm 'mbapk/mbapk_unpacked/assets/policy0'
- rm 'mbapk/mbapk_unpacked/assets/policy1'
- rm 'mbapk/mbapk_unpacked/assets/policy2'
- rm 'mbapk/mbapk_unpacked/assets/policy3'
- rm 'mbapk/mbapk_unpacked/assets/policy4'
- rm 'mbapk/mbapk_unpacked/assets/policy5'
- rm 'mbapk/mbapk_unpacked/assets/policy6'
- rm 'mbapk/mbapk_unpacked/assets/policy8'
- rm 'mbapk/mbapk_unpacked/assets/policy9'
- rm 'mbapk/mbapk_unpacked/assets/policym'
- rm 'mbapk/mbapk_unpacked/assets/rulesV5.dat'
- echo Modifying [AndroidManifest.xml]
+ rm -f 'mbapk/mbapk_unpacked/assets/dlangV5.dat'
+ rm -f 'mbapk/mbapk_unpacked/assets/dlangV5.en.dat'
+ rm -f 'mbapk/mbapk_unpacked/assets/policy0'
+ rm -f 'mbapk/mbapk_unpacked/assets/policy1'
+ rm -f 'mbapk/mbapk_unpacked/assets/policy2'
+ rm -f 'mbapk/mbapk_unpacked/assets/policy3'
+ rm -f 'mbapk/mbapk_unpacked/assets/policy4'
+ rm -f 'mbapk/mbapk_unpacked/assets/policy5'
+ rm -f 'mbapk/mbapk_unpacked/assets/policy6'
+ rm -f 'mbapk/mbapk_unpacked/assets/policy8'
+ rm -f 'mbapk/mbapk_unpacked/assets/policy9'
+ rm -f 'mbapk/mbapk_unpacked/assets/policym'
+ rm -f 'mbapk/mbapk_unpacked/assets/rulesV5.dat'
+ echo "Patching [AndroidManifest.xml]"
sed -i 's|| |g' ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked/AndroidManifest.xml
-
+ echo "Applied [Remove new root detection] patch !!!"
else
- echo "[mbapk_unpacked] not found ! Please unpack APK ! "
+ echo "[mbapk_unpacked] not found ! Please unpack APK first ! "
fi
elif [ "$opt" == 'Add modified resources' ]; then
if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked ]
then
+ echo "Applying patch [Add modified resources]..."
echo "Copying modified resources..."
cp -r -f 'patches/resources/raw' 'mbapk/mbapk_unpacked/res/'
cp -f 'patches/resources/strings-vi/strings.xml' 'mbapk/mbapk_unpacked/res/values-vi/'
+ echo "Applied [Add modified resources] patch !!!"
else
echo "[mbapk_unpacked] not found ! Please unpack APK first !"
fi
@@ -195,29 +211,30 @@ fi
elif [ "$opt" == 'Remove bulit-in fonts' ]; then
if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked ]
then
+ echo "Applying patch [Remove bulit-in fonts]..."
echo "Removing..."
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Black.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-BlackItalic.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Bold.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-BoldItalic.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Extrabold.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-ExtraboldItalic.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCy-Extrathin.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCy-ExtrathinItalic.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Light.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-LightItalic.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Regular.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-RegularItalic.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Semibold.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-SemiboldItalic.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Thin.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-ThinItalic.otf'
- rm 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/SF-Pro-Display-Medium.ttf'
- rm 'mbapk/mbapk_unpacked/res/font/avenir_next_bold.ttf'
- rm 'mbapk/mbapk_unpacked/res/font/bold.ttf'
- rm 'mbapk/mbapk_unpacked/res/font/medium.ttf'
- rm 'mbapk/mbapk_unpacked/res/font/regular.ttf'
- rm 'mbapk/mbapk_unpacked/assets/insider.ttf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Black.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-BlackItalic.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Bold.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-BoldItalic.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Extrabold.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-ExtraboldItalic.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCy-Extrathin.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCy-ExtrathinItalic.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Light.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-LightItalic.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Regular.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-RegularItalic.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Semibold.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-SemiboldItalic.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-Thin.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/AvertaStdCY-ThinItalic.otf'
+ rm -f 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/fonts/SF-Pro-Display-Medium.ttf'
+ rm -f 'mbapk/mbapk_unpacked/res/font/avenir_next_bold.ttf'
+ rm -f 'mbapk/mbapk_unpacked/res/font/bold.ttf'
+ rm -f 'mbapk/mbapk_unpacked/res/font/medium.ttf'
+ rm -f 'mbapk/mbapk_unpacked/res/font/regular.ttf'
+ rm -f 'mbapk/mbapk_unpacked/assets/insider.ttf'
rm -rf 'mbapk/mbapk_unpacked/assets/font'
# Placeholder font to fix display issues when open details balance notifications
echo "Creating placeholder font..."
@@ -227,18 +244,14 @@ elif [ "$opt" == 'Remove bulit-in fonts' ]; then
touch 'mbapk/mbapk_unpacked/res/font/bold.ttf'
touch 'mbapk/mbapk_unpacked/res/font/medium.ttf'
touch 'mbapk/mbapk_unpacked/res/font/regular.ttf'
-
-
-
-
-
+ echo "Applied [Remove bulit-in fonts] patch !!!"
else
echo "[mbapk_unpacked] not found ! Please unpack APK first !"
fi
-elif [ "$opt" == 'Modify app theme' ]; then
+elif [ "$opt" == 'Modify app theme' ]; then
if [ -d ~/mbbpatch/MBCPApp/mbapk/mbapk_unpacked ]
then
echo In order to modify app theme, you must extract assets first if current unpacked APK has MBShield!
@@ -250,7 +263,7 @@ do
mv 'mbapk/mbapk_unpacked/assets/flutter_assets/assets/images/dynamic/priority' 'patches/semipriority/'
sleep 2
echo Modifying QR background...
- rm 'patches/semipriority/priority/qr_img_ThemeDefalut.webp'
+ rm -f 'patches/semipriority/priority/qr_img_ThemeDefalut.webp'
mv 'patches/semipriority/priority/a_background_image.webp' 'patches/semipriority/priority/qr_img_ThemeDefalut.webp'
echo Renaming to [base]...
mv 'patches/semipriority/priority' 'patches/semipriority/base'
@@ -285,7 +298,6 @@ do
echo Applied [MBCP MBClassic] theme.
elif [ "$opt" == 'Exit' ]; then
sh patch.sh
-
break
fi
done
@@ -322,7 +334,7 @@ then
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/thongnhatVN/mipmap-xhdpi mbapk/mbapk_unpacked/res
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/thongnhatVN/mipmap-xxhdpi mbapk/mbapk_unpacked/res
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/thongnhatVN/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- echo Done !
+ echo Applied selected logo !
else
echo "[mbapk_unpacked] not found ! Please unpack APK first !"
fi
@@ -347,7 +359,7 @@ then
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/normal/mipmap-xhdpi mbapk/mbapk_unpacked/res
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/normal/mipmap-xxhdpi mbapk/mbapk_unpacked/res
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/normal/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- echo Done !
+ echo Applied selected logo !
else
echo "[mbapk_unpacked] not found ! Please unpack APK first !"
fi
@@ -372,7 +384,7 @@ then
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/tet/mipmap-xhdpi mbapk/mbapk_unpacked/res
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/tet/mipmap-xxhdpi mbapk/mbapk_unpacked/res
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/tet/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- echo Done !
+ echo Applied selected logo !
else
echo "[mbapk_unpacked] not found ! Please unpack APK first !"
fi
@@ -397,7 +409,7 @@ then
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/noel/mipmap-xhdpi mbapk/mbapk_unpacked/res
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/noel/mipmap-xxhdpi mbapk/mbapk_unpacked/res
cp -r -f ~/mbbpatch/MBCPApp/mbcpicons/noel/mipmap-xxxhdpi mbapk/mbapk_unpacked/res
- echo Done !
+ echo Applied selected logo !
else
echo "[mbapk_unpacked] not found ! Please unpack APK first !"
fi
@@ -413,11 +425,12 @@ done
elif [ "$opt" == 'Hide VTAP root detection activity & dialog' ]; then
if [ -d ~/mbbpatch/MBCPApp/patches/skip_maintainscreen ]
then
- echo "Applying patches to [mbapk/mbapk_unpacked/smali_classes4]..."
- rm 'mbapk/mbapk_unpacked/smali_classes4/com/vtap/MaintenanceActivity.smali'
- rm 'mbapk/mbapk_unpacked/smali_classes4/com/vtap/MaintenanceActivity$1.smali'
- rm 'mbapk/mbapk_unpacked/smali_classes4/com/vtap/VTapSetupPlugin.smali'
+ echo "Applying [Hide VTAP root detection activity & dialog]..."
+ rm -f 'mbapk/mbapk_unpacked/smali_classes4/com/vtap/MaintenanceActivity.smali'
+ rm -f 'mbapk/mbapk_unpacked/smali_classes4/com/vtap/MaintenanceActivity$1.smali'
+ rm -f 'mbapk/mbapk_unpacked/smali_classes4/com/vtap/VTapSetupPlugin.smali'
cp -r -f 'patches/skip_maintainscreen/com' 'mbapk/mbapk_unpacked/smali_classes4/'
+ echo "Applied [Hide VTAP root detection activity & dialog] patch !!!"
else
echo "Patch not found ! Aborting :)"
fi
diff --git a/MBCPApp/patches/skip_maintainscreen/dy.smali b/MBCPApp/patches/skip_maintainscreen/dy.smali
deleted file mode 100644
index 2b9d62f..0000000
--- a/MBCPApp/patches/skip_maintainscreen/dy.smali
+++ /dev/null
@@ -1,1370 +0,0 @@
-.class public Lcom/vkey/android/dy;
-.super Ljava/lang/Object;
-.source "SourceFile"
-
-
-# annotations
-.annotation system Ldalvik/annotation/MemberClasses;
- value = {
- Lcom/vkey/android/dy$a;
- }
-.end annotation
-
-
-# static fields
-.field private static volatile f:Z
-
-.field private static g:Lcom/vkey/android/dy;
-
-.field private static i:Ljava/util/concurrent/CopyOnWriteArrayList;
-
-.field private static j:Ljava/util/concurrent/ConcurrentHashMap;
-
-.field private static final k:[B
-
-.field private static l:I
-
-
-# instance fields
-.field public a:Z
-
-.field private b:Landroid/app/AlertDialog$Builder;
-
-.field private c:Landroid/os/Handler;
-
-.field private d:Ljava/lang/String;
-
-.field private e:Lcom/vkey/android/ea;
-
-.field private h:Lcom/vkey/android/dy$a;
-
-
-# direct methods
-.method static constructor ()V
- .locals 1
-
- const/16 v0, 0x10d
-
- new-array v0, v0, [B
-
- fill-array-data v0, :array_0
-
- sput-object v0, Lcom/vkey/android/dy;->k:[B
-
- const/16 v0, 0xf6
-
- sput v0, Lcom/vkey/android/dy;->l:I
-
- new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;
-
- invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->()V
-
- sput-object v0, Lcom/vkey/android/dy;->i:Ljava/util/concurrent/CopyOnWriteArrayList;
-
- new-instance v0, Ljava/util/concurrent/ConcurrentHashMap;
-
- invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;->()V
-
- sput-object v0, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- return-void
-
- :array_0
- .array-data 1
- 0x64t
- 0x2t
- -0x18t
- 0x6dt
- -0xft
- -0x2t
- 0x1t
- -0x5t
- 0x50t
- -0x4bt
- -0x7t
- 0x4ct
- -0x45t
- -0xbt
- -0x5t
- -0x1t
- 0x3t
- -0x7t
- 0x5t
- 0x45t
- -0x46t
- -0x7t
- 0x6t
- -0xdt
- -0x5t
- 0x6t
- 0x45t
- -0x4t
- 0x9t
- -0x3t
- -0x4t
- -0x13t
- 0x9t
- -0x8t
- -0x1t
- 0xdt
- -0x6t
- 0x0t
- -0xdt
- -0x2t
- 0x8t
- -0x1t
- -0x4t
- -0xat
- 0xat
- -0x19t
- 0xdt
- 0x1t
- -0x7t
- 0x6t
- -0xdt
- -0x5t
- 0x6t
- -0x6t
- -0x2t
- 0x6t
- -0x1t
- -0x7t
- 0x6t
- -0x15t
- 0xdt
- -0x7t
- -0x5t
- 0x9t
- -0x10t
- 0x6t
- 0x45t
- -0x55t
- 0x2t
- -0x5t
- -0x4t
- 0x9t
- -0x7t
- 0x5t
- 0x45t
- -0x47t
- -0xft
- -0x2t
- 0x36t
- 0xct
- -0x19t
- -0x15t
- 0x2t
- 0x39t
- -0x3dt
- 0x38t
- -0x2ft
- -0x17t
- 0xat
- -0xct
- 0xbt
- 0x2t
- -0x15t
- -0x1t
- 0x1t
- -0x15t
- 0xdt
- 0x4t
- -0x17t
- 0x9t
- -0x6t
- 0x6t
- 0x4t
- -0x17t
- 0x9t
- -0x6t
- 0x6t
- 0x4t
- -0x1dt
- 0x9t
- -0x1t
- 0x7t
- 0x9t
- -0xdt
- 0x6t
- 0x5t
- 0x37t
- -0x2et
- -0x17t
- 0xat
- -0xct
- 0xbt
- 0x2t
- -0x15t
- -0x1t
- 0x29t
- -0x35t
- -0x1t
- -0x2t
- 0x3t
- -0x1t
- 0x18t
- -0x13t
- -0x15t
- 0x2t
- 0x9t
- -0x9t
- -0xat
- 0x1ft
- 0xdt
- 0x1t
- -0x27t
- 0x6t
- -0xdt
- -0x5t
- 0x6t
- 0x45t
- -0x55t
- 0x9t
- -0x9t
- -0xat
- 0x31t
- -0x27t
- 0x6t
- -0xdt
- -0x5t
- 0x6t
- 0x19t
- -0x1ft
- -0xct
- -0x3t
- 0x52t
- -0x44t
- -0x1t
- -0x4t
- -0xat
- 0x2t
- -0xdt
- 0x1t
- -0x8t
- 0x5t
- 0x8t
- 0x28t
- 0x18t
- -0x50t
- -0x3t
- -0x7t
- 0x52t
- -0x55t
- 0x9t
- -0x9t
- -0xat
- 0x55t
- -0x43t
- -0xdt
- 0x5t
- -0xft
- -0x4t
- 0x52t
- -0x44t
- -0x5t
- 0x0t
- 0x0t
- -0x16t
- 0x0t
- 0xct
- 0x43t
- -0x51t
- 0x7t
- 0x1t
- -0x15t
- 0xdt
- 0x4t
- -0x17t
- 0x9t
- -0x6t
- 0x6t
- 0x4t
- -0x8t
- -0x15t
- 0x6t
- 0x5t
- -0xbt
- 0xbt
- -0x1t
- 0x6t
- -0x10t
- -0x2t
- 0x10t
- -0x8t
- 0x0t
- 0x9t
- -0x9t
- -0xat
- 0x1ft
- 0xdt
- 0x1t
- -0x27t
- 0x6t
- -0xdt
- -0x5t
- 0x6t
- 0x45t
- -0x55t
- 0x9t
- -0x9t
- -0xat
- 0x31t
- -0x27t
- 0x6t
- -0xdt
- -0x5t
- 0x6t
- 0x19t
- -0x1ft
- -0xct
- -0x3t
- 0x52t
- -0x44t
- -0x1t
- -0x4t
- -0xat
- 0x2t
- -0xdt
- 0x1t
- -0x8t
- 0x5t
- 0x8t
- 0x28t
- 0x18t
- -0x4t
- -0x13t
- -0x3t
- 0x12t
- -0xdt
- 0x1dt
- -0x24t
- 0x9t
- -0x3t
- .end array-data
-.end method
-
-.method public constructor ()V
- .locals 0
-
- invoke-direct {p0}, Ljava/lang/Object;->()V
-
- return-void
-.end method
-
-.method public static declared-synchronized a()Lcom/vkey/android/dy;
- .locals 2
-
- const-class v0, Lcom/vkey/android/dy;
-
- monitor-enter v0
-
- :try_start_0
- sget-object v1, Lcom/vkey/android/dy;->g:Lcom/vkey/android/dy;
-
- if-nez v1, :cond_0
-
- new-instance v1, Lcom/vkey/android/dy;
-
- invoke-direct {v1}, Lcom/vkey/android/dy;->()V
-
- sput-object v1, Lcom/vkey/android/dy;->g:Lcom/vkey/android/dy;
-
- :cond_0
- sget-object v1, Lcom/vkey/android/dy;->g:Lcom/vkey/android/dy;
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
-
- monitor-exit v0
-
- return-object v1
-
- :catchall_0
- move-exception v1
-
- monitor-exit v0
-
- throw v1
-.end method
-
-.method static synthetic a(Lcom/vkey/android/dy;)Lcom/vkey/android/ea;
- .locals 0
-
- iget-object p0, p0, Lcom/vkey/android/dy;->e:Lcom/vkey/android/ea;
-
- return-object p0
-.end method
-
-.method private static a(III)Ljava/lang/String;
- .locals 6
-
- rsub-int/lit8 p1, p1, 0x41
-
- add-int/lit8 p2, p2, 0x4e
-
- new-instance v0, Ljava/lang/String;
-
- sget-object v1, Lcom/vkey/android/dy;->k:[B
-
- rsub-int p0, p0, 0x104
-
- new-array v2, p1, [B
-
- add-int/lit8 p1, p1, -0x1
-
- const/4 v3, 0x0
-
- move v4, v3
-
- :goto_0
- int-to-byte v5, p2
-
- aput-byte v5, v2, v4
-
- if-ne v4, p1, :cond_0
-
- invoke-direct {v0, v2, v3}, Ljava/lang/String;->([BI)V
-
- invoke-virtual {v0}, Ljava/lang/String;->intern()Ljava/lang/String;
-
- move-result-object p0
-
- return-object p0
-
- :cond_0
- aget-byte v5, v1, p0
-
- add-int/lit8 v4, v4, 0x1
-
- sub-int/2addr p2, v5
-
- add-int/lit8 p0, p0, 0x1
-
- add-int/lit8 p2, p2, -0x2
-
- goto :goto_0
-.end method
-
-.method private a(Landroid/content/Context;Ljava/util/concurrent/CopyOnWriteArrayList;)V
- .locals 7
-
- if-eqz p2, :cond_5
-
- invoke-virtual {p2}, Ljava/util/concurrent/CopyOnWriteArrayList;->size()I
-
- move-result v0
-
- if-gtz v0, :cond_0
-
- goto/16 :goto_2
-
- :cond_0
- invoke-static {}, Lcom/vkey/android/vguard/AppInBackgroundFinder;->getInstance()Lcom/vkey/android/vguard/AppInBackgroundFinder;
-
- move-result-object v0
-
- invoke-virtual {v0}, Lcom/vkey/android/vguard/AppInBackgroundFinder;->wasInBackground()Z
-
- move-result v0
-
- sget-object v1, Lcom/vkey/android/dy;->k:[B
-
- const/16 v2, 0x8d
-
- aget-byte v2, v1, v2
-
- neg-int v2, v2
-
- const/16 v3, 0x9d
-
- aget-byte v3, v1, v3
-
- const/16 v4, 0x25
-
- invoke-static {v2, v3, v4}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- const/16 v2, 0x7d
-
- if-eqz v0, :cond_1
-
- aget-byte p1, v1, v4
-
- or-int/lit8 p2, p1, 0x25
-
- invoke-static {v2, p1, p2}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- return-void
-
- :cond_1
- invoke-direct {p0, p2}, Lcom/vkey/android/dy;->a(Ljava/util/concurrent/CopyOnWriteArrayList;)V
-
- const/4 v0, 0x1
-
- sput-boolean v0, Lcom/vkey/android/dy;->f:Z
-
- new-instance v1, Landroid/os/Handler;
-
- invoke-virtual {p1}, Landroid/content/Context;->getMainLooper()Landroid/os/Looper;
-
- move-result-object v3
-
- invoke-direct {v1, v3}, Landroid/os/Handler;->(Landroid/os/Looper;)V
-
- iput-object v1, p0, Lcom/vkey/android/dy;->c:Landroid/os/Handler;
-
- new-instance v1, Landroid/app/AlertDialog$Builder;
-
- invoke-direct {v1, p1}, Landroid/app/AlertDialog$Builder;->(Landroid/content/Context;)V
-
- iput-object v1, p0, Lcom/vkey/android/dy;->b:Landroid/app/AlertDialog$Builder;
-
- const/4 v1, 0x0
-
- :try_start_0
- invoke-virtual {p2, v1}, Ljava/util/concurrent/CopyOnWriteArrayList;->get(I)Ljava/lang/Object;
-
- move-result-object v1
-
- check-cast v1, Lcom/vkey/android/ea;
-
- invoke-virtual {v1}, Lcom/vkey/android/ea;->clone()Ljava/lang/Object;
-
- move-result-object v1
-
- check-cast v1, Lcom/vkey/android/ea;
-
- iput-object v1, p0, Lcom/vkey/android/dy;->e:Lcom/vkey/android/ea;
- :try_end_0
- .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
-
- goto :goto_0
-
- :catch_0
- move-exception v1
-
- const/4 v3, 0x0
-
- iput-object v3, p0, Lcom/vkey/android/dy;->e:Lcom/vkey/android/ea;
-
- const/16 v3, 0x100
-
- sget-object v5, Lcom/vkey/android/dy;->k:[B
-
- aget-byte v2, v5, v2
-
- const/16 v6, 0x57
-
- aget-byte v5, v5, v6
-
- neg-int v5, v5
-
- invoke-static {v3, v2, v5}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- invoke-virtual {v1}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;
-
- :goto_0
- iget-object v1, p0, Lcom/vkey/android/dy;->e:Lcom/vkey/android/ea;
-
- if-nez v1, :cond_2
-
- return-void
-
- :cond_2
- iget-object v2, v1, Lcom/vkey/android/ea;->c:Ljava/lang/String;
-
- iget-object v3, v1, Lcom/vkey/android/ea;->d:Ljava/lang/String;
-
- iget-object v1, v1, Lcom/vkey/android/ea;->e:Ljava/lang/String;
-
- iput-object v1, p0, Lcom/vkey/android/dy;->d:Ljava/lang/String;
-
- invoke-virtual {p2}, Ljava/util/concurrent/CopyOnWriteArrayList;->size()I
-
- move-result p2
-
- if-le p2, v0, :cond_4
-
- sget-object p2, Lcom/vkey/android/bg;->h:Ljava/lang/String;
-
- if-eqz p2, :cond_3
-
- goto :goto_1
-
- :cond_3
- sget p2, Lcom/vkey/android/dy;->l:I
-
- and-int/lit16 p2, p2, 0x3bd
-
- sget-object v1, Lcom/vkey/android/dy;->k:[B
-
- const/16 v5, 0x54
-
- aget-byte v5, v1, v5
-
- neg-int v5, v5
-
- aget-byte v1, v1, v4
-
- invoke-static {p2, v5, v1}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object p2
-
- :goto_1
- iput-object p2, p0, Lcom/vkey/android/dy;->d:Ljava/lang/String;
-
- iget-object p2, p0, Lcom/vkey/android/dy;->e:Lcom/vkey/android/ea;
-
- iput v0, p2, Lcom/vkey/android/ea;->a:I
-
- :cond_4
- iget-object p2, p0, Lcom/vkey/android/dy;->c:Landroid/os/Handler;
-
- new-instance v0, Lcom/vkey/android/dz;
-
- invoke-direct {v0, p0, v3, p1, v2}, Lcom/vkey/android/dz;->(Lcom/vkey/android/dy;Ljava/lang/String;Landroid/content/Context;Ljava/lang/String;)V
-
- invoke-virtual {p2, v0}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
-
- return-void
-
- :cond_5
- :goto_2
- invoke-direct {p0}, Lcom/vkey/android/dy;->c()V
-
- return-void
-.end method
-
-.method static synthetic a(Lcom/vkey/android/dy;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V
- .locals 8
-
- new-instance v0, Lcom/vkey/android/dy$a;
-
- invoke-direct {v0, p0}, Lcom/vkey/android/dy$a;->(Lcom/vkey/android/dy;)V
-
- iput-object v0, p0, Lcom/vkey/android/dy;->h:Lcom/vkey/android/dy$a;
-
- invoke-static {p1}, Lcom/vkey/android/vguard/LocalBroadcastManager;->getInstance(Landroid/content/Context;)Lcom/vkey/android/vguard/LocalBroadcastManager;
-
- move-result-object v0
-
- iget-object v1, p0, Lcom/vkey/android/dy;->h:Lcom/vkey/android/dy$a;
-
- new-instance v2, Landroid/content/IntentFilter;
-
- sget v3, Lcom/vkey/android/dy;->l:I
-
- and-int/lit16 v3, v3, 0x3ef
-
- sget-object v4, Lcom/vkey/android/dy;->k:[B
-
- const/16 v5, 0x7d
-
- aget-byte v5, v4, v5
-
- const/16 v6, 0x1f
-
- aget-byte v7, v4, v6
-
- neg-int v7, v7
-
- invoke-static {v3, v5, v7}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v3
-
- invoke-direct {v2, v3}, Landroid/content/IntentFilter;->(Ljava/lang/String;)V
-
- invoke-virtual {v0, v1, v2}, Lcom/vkey/android/vguard/LocalBroadcastManager;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V
-
- new-instance v0, Landroid/content/Intent;
-
- const-class v1, Lio/flutter/plugins/MainActivity;
-
- invoke-direct {v0, p1, v1}, Landroid/content/Intent;->(Landroid/content/Context;Ljava/lang/Class;)V
-
- const/high16 v1, 0x10000000
-
- invoke-virtual {v0, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
-
- new-instance v1, Landroid/os/Bundle;
-
- invoke-direct {v1}, Landroid/os/Bundle;->()V
-
- sget v2, Lcom/vkey/android/dy;->l:I
-
- and-int/lit16 v3, v2, 0x39d
-
- and-int/lit8 v2, v2, 0x2f
-
- const/16 v5, 0x3c
-
- invoke-static {v3, v5, v2}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v2
-
- invoke-virtual {v1, v2, p2}, Landroid/os/BaseBundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
-
- const/16 p2, 0x53
-
- aget-byte p2, v4, p2
-
- add-int/lit8 p2, p2, 0x1
-
- const/16 v2, 0x8a
-
- aget-byte v3, v4, v2
-
- const/16 v5, 0x2d
-
- invoke-static {v5, p2, v3}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object p2
-
- invoke-virtual {v1, p2, p3}, Landroid/os/BaseBundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
-
- const/16 p2, 0x4e
-
- aget-byte p2, v4, p2
-
- aget-byte p3, v4, v2
-
- const/16 v3, 0x87
-
- invoke-static {v3, p2, p3}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object p2
-
- iget-object p3, p0, Lcom/vkey/android/dy;->d:Ljava/lang/String;
-
- invoke-virtual {v1, p2, p3}, Landroid/os/BaseBundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
-
- const/16 p2, 0x54
-
- aget-byte p2, v4, p2
-
- neg-int p2, p2
-
- aget-byte p3, v4, v2
-
- const/16 v2, 0xe9
-
- invoke-static {v2, p2, p3}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object p2
-
- iget-object p3, p0, Lcom/vkey/android/dy;->e:Lcom/vkey/android/ea;
-
- iget p3, p3, Lcom/vkey/android/ea;->a:I
-
- invoke-virtual {v1, p2, p3}, Landroid/os/BaseBundle;->putInt(Ljava/lang/String;I)V
-
- const/16 p2, 0x25
-
- aget-byte p2, v4, p2
-
- const/16 p3, 0x74
-
- aget-byte p3, v4, p3
-
- aget-byte v2, v4, v6
-
- neg-int v2, v2
-
- invoke-static {p2, p3, v2}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object p2
-
- iget-object p0, p0, Lcom/vkey/android/dy;->e:Lcom/vkey/android/ea;
-
- iget p0, p0, Lcom/vkey/android/ea;->b:I
-
- invoke-virtual {v1, p2, p0}, Landroid/os/BaseBundle;->putInt(Ljava/lang/String;I)V
-
- invoke-virtual {v0, v1}, Landroid/content/Intent;->putExtras(Landroid/os/Bundle;)Landroid/content/Intent;
-
- invoke-virtual {p1, v0}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V
-
- return-void
-.end method
-
-.method static synthetic a(Lcom/vkey/android/dy;Landroid/content/Context;Ljava/util/concurrent/CopyOnWriteArrayList;)V
- .locals 0
-
- invoke-direct {p0, p1, p2}, Lcom/vkey/android/dy;->a(Landroid/content/Context;Ljava/util/concurrent/CopyOnWriteArrayList;)V
-
- return-void
-.end method
-
-.method public static a(Lcom/vkey/android/ea;)V
- .locals 1
-
- if-eqz p0, :cond_0
-
- sget-object v0, Lcom/vkey/android/dy;->i:Ljava/util/concurrent/CopyOnWriteArrayList;
-
- if-eqz v0, :cond_0
-
- invoke-virtual {v0, p0}, Ljava/util/concurrent/CopyOnWriteArrayList;->contains(Ljava/lang/Object;)Z
-
- move-result v0
-
- if-nez v0, :cond_0
-
- sget-object v0, Lcom/vkey/android/dy;->i:Ljava/util/concurrent/CopyOnWriteArrayList;
-
- invoke-virtual {v0, p0}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z
-
- :cond_0
- return-void
-.end method
-
-.method private declared-synchronized a(Ljava/util/concurrent/CopyOnWriteArrayList;)V
- .locals 4
-
- monitor-enter p0
-
- :try_start_0
- invoke-interface {p1}, Ljava/util/List;->toArray()[Ljava/lang/Object;
-
- move-result-object v0
-
- invoke-static {v0}, Ljava/util/Arrays;->sort([Ljava/lang/Object;)V
-
- const/4 v1, 0x0
-
- :goto_0
- array-length v2, v0
-
- if-ge v1, v2, :cond_1
-
- aget-object v2, v0, v1
-
- if-eqz v2, :cond_0
-
- check-cast v2, Lcom/vkey/android/ea;
-
- invoke-interface {p1, v1, v2}, Ljava/util/List;->set(ILjava/lang/Object;)Ljava/lang/Object;
- :try_end_0
- .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
-
- :cond_0
- add-int/lit8 v1, v1, 0x1
-
- goto :goto_0
-
- :cond_1
- monitor-exit p0
-
- return-void
-
- :catchall_0
- move-exception p1
-
- goto :goto_1
-
- :catch_0
- move-exception p1
-
- const/16 v0, 0xc7
-
- const/16 v1, 0x2d
-
- :try_start_1
- sget-object v2, Lcom/vkey/android/dy;->k:[B
-
- const/16 v3, 0xc1
-
- aget-byte v2, v2, v3
-
- neg-int v2, v2
-
- invoke-static {v0, v1, v2}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- invoke-virtual {p1}, Ljava/lang/Throwable;->getMessage()Ljava/lang/String;
- :try_end_1
- .catchall {:try_start_1 .. :try_end_1} :catchall_0
-
- monitor-exit p0
-
- return-void
-
- :goto_1
- monitor-exit p0
-
- throw p1
-.end method
-
-.method static synthetic b(Lcom/vkey/android/dy;)Lcom/vkey/android/dy$a;
- .locals 0
-
- iget-object p0, p0, Lcom/vkey/android/dy;->h:Lcom/vkey/android/dy$a;
-
- return-object p0
-.end method
-
-.method static synthetic b()Ljava/util/concurrent/CopyOnWriteArrayList;
- .locals 1
-
- sget-object v0, Lcom/vkey/android/dy;->i:Ljava/util/concurrent/CopyOnWriteArrayList;
-
- return-object v0
-.end method
-
-.method private c()V
- .locals 2
-
- iget-object v0, p0, Lcom/vkey/android/dy;->e:Lcom/vkey/android/ea;
-
- if-eqz v0, :cond_0
-
- iget-object v1, v0, Lcom/vkey/android/ea;->f:Landroid/os/Handler;
-
- if-eqz v1, :cond_0
-
- iget-object v0, v0, Lcom/vkey/android/ea;->g:Ljava/lang/Runnable;
-
- invoke-virtual {v1, v0}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
-
- :cond_0
- sget-object v0, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- if-eqz v0, :cond_1
-
- invoke-interface {v0}, Ljava/util/Map;->clear()V
-
- :cond_1
- const/4 v0, 0x0
-
- sput-boolean v0, Lcom/vkey/android/dy;->f:Z
-
- const/4 v0, 0x0
-
- iput-object v0, p0, Lcom/vkey/android/dy;->e:Lcom/vkey/android/ea;
-
- return-void
-.end method
-
-
-# virtual methods
-.method public final declared-synchronized a(Landroid/content/Context;Ljava/lang/String;Z)V
- .locals 10
-
- monitor-enter p0
-
- :try_start_0
- sget-object p3, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- if-eqz p3, :cond_4
-
- if-eqz p2, :cond_1
-
- const/16 p3, 0xcf
-
- sget-object v0, Lcom/vkey/android/dy;->k:[B
-
- const/16 v1, 0x55
-
- aget-byte v0, v0, v1
-
- const/16 v1, 0x1b
-
- invoke-static {p3, v0, v1}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object p3
-
- invoke-virtual {p2, p3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
-
- move-result p3
-
- if-eqz p3, :cond_1
-
- sget-boolean p2, Lcom/vkey/android/dy;->f:Z
-
- if-nez p2, :cond_0
-
- sget-object p2, Lcom/vkey/android/dy;->i:Ljava/util/concurrent/CopyOnWriteArrayList;
-
- invoke-direct {p0, p1, p2}, Lcom/vkey/android/dy;->a(Landroid/content/Context;Ljava/util/concurrent/CopyOnWriteArrayList;)V
- :try_end_0
- .catchall {:try_start_0 .. :try_end_0} :catchall_0
-
- :cond_0
- monitor-exit p0
-
- return-void
-
- :cond_1
- :try_start_1
- sget-object p3, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- sget-object v0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
-
- invoke-interface {p3, p2, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- if-eqz p2, :cond_4
-
- invoke-interface {p2}, Ljava/util/Map;->size()I
-
- move-result p2
-
- if-lez p2, :cond_4
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- sget-object p3, Lcom/vkey/android/dy;->k:[B
-
- const/16 v0, 0x7e
-
- aget-byte v1, p3, v0
-
- neg-int v1, v1
-
- const/16 v2, 0x8a
-
- aget-byte v3, p3, v2
-
- const/4 v4, 0x1
-
- sub-int/2addr v3, v4
-
- const/16 v5, 0xb1
-
- invoke-static {v5, v1, v3}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v1
-
- invoke-interface {p2, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- const/16 v1, 0x74
-
- if-eqz p2, :cond_2
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- aget-byte v3, p3, v0
-
- neg-int v3, v3
-
- aget-byte v6, p3, v2
-
- sub-int/2addr v6, v4
-
- invoke-static {v5, v3, v6}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v3
-
- invoke-interface {p2, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- check-cast p2, Ljava/lang/Boolean;
-
- invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z
-
- move-result p2
-
- if-eqz p2, :cond_2
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- sget v3, Lcom/vkey/android/dy;->l:I
-
- and-int/lit16 v3, v3, 0x398
-
- aget-byte v6, p3, v1
-
- aget-byte v7, p3, v2
-
- sub-int/2addr v7, v4
-
- invoke-static {v3, v6, v7}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v3
-
- invoke-interface {p2, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- if-eqz p2, :cond_2
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- sget v3, Lcom/vkey/android/dy;->l:I
-
- and-int/lit16 v3, v3, 0x398
-
- aget-byte v6, p3, v1
-
- aget-byte v7, p3, v2
-
- sub-int/2addr v7, v4
-
- invoke-static {v3, v6, v7}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v3
-
- invoke-interface {p2, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- check-cast p2, Ljava/lang/Boolean;
-
- invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z
-
- move-result p2
-
- if-eqz p2, :cond_2
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- const/16 v3, 0x54
-
- aget-byte v6, p3, v3
-
- neg-int v6, v6
-
- and-int/lit16 v7, v6, 0xf0
-
- const/16 v8, 0xc1
-
- aget-byte v9, p3, v8
-
- neg-int v9, v9
-
- invoke-static {v6, v7, v9}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v6
-
- invoke-interface {p2, v6}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- if-eqz p2, :cond_2
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- aget-byte v3, p3, v3
-
- neg-int v3, v3
-
- and-int/lit16 v6, v3, 0xf0
-
- aget-byte v7, p3, v8
-
- neg-int v7, v7
-
- invoke-static {v3, v6, v7}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v3
-
- invoke-interface {p2, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- check-cast p2, Ljava/lang/Boolean;
-
- invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z
-
- move-result p2
-
- if-eqz p2, :cond_2
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- sget v3, Lcom/vkey/android/dy;->l:I
-
- and-int/lit16 v3, v3, 0x3af
-
- const/16 v6, 0x75
-
- aget-byte v7, p3, v6
-
- neg-int v7, v7
-
- aget-byte v9, p3, v8
-
- neg-int v9, v9
-
- invoke-static {v3, v7, v9}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v3
-
- invoke-interface {p2, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- if-eqz p2, :cond_2
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- sget v3, Lcom/vkey/android/dy;->l:I
-
- and-int/lit16 v3, v3, 0x3af
-
- aget-byte v6, p3, v6
-
- neg-int v6, v6
-
- aget-byte v7, p3, v8
-
- neg-int v7, v7
-
- invoke-static {v3, v6, v7}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v3
-
- invoke-interface {p2, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- check-cast p2, Ljava/lang/Boolean;
-
- invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z
-
- move-result p2
-
- if-eqz p2, :cond_2
-
- iget-boolean p2, p0, Lcom/vkey/android/dy;->a:Z
-
- if-eqz p2, :cond_2
-
- sget p2, Lcom/vkey/android/bg;->r:I
-
- if-eq p2, v4, :cond_3
-
- :cond_2
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- aget-byte v3, p3, v0
-
- neg-int v3, v3
-
- aget-byte v6, p3, v2
-
- sub-int/2addr v6, v4
-
- invoke-static {v5, v3, v6}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v3
-
- invoke-interface {p2, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- if-eqz p2, :cond_4
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- aget-byte v0, p3, v0
-
- neg-int v0, v0
-
- aget-byte v3, p3, v2
-
- sub-int/2addr v3, v4
-
- invoke-static {v5, v0, v3}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v0
-
- invoke-interface {p2, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- check-cast p2, Ljava/lang/Boolean;
-
- invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z
-
- move-result p2
-
- if-eqz p2, :cond_4
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- sget v0, Lcom/vkey/android/dy;->l:I
-
- and-int/lit16 v0, v0, 0x398
-
- aget-byte v3, p3, v1
-
- aget-byte v5, p3, v2
-
- sub-int/2addr v5, v4
-
- invoke-static {v0, v3, v5}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object v0
-
- invoke-interface {p2, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- if-eqz p2, :cond_4
-
- sget-object p2, Lcom/vkey/android/dy;->j:Ljava/util/concurrent/ConcurrentHashMap;
-
- sget v0, Lcom/vkey/android/dy;->l:I
-
- and-int/lit16 v0, v0, 0x398
-
- aget-byte v1, p3, v1
-
- aget-byte p3, p3, v2
-
- sub-int/2addr p3, v4
-
- invoke-static {v0, v1, p3}, Lcom/vkey/android/dy;->a(III)Ljava/lang/String;
-
- move-result-object p3
-
- invoke-interface {p2, p3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
-
- move-result-object p2
-
- check-cast p2, Ljava/lang/Boolean;
-
- invoke-virtual {p2}, Ljava/lang/Boolean;->booleanValue()Z
-
- move-result p2
-
- if-eqz p2, :cond_4
-
- sget p2, Lcom/vkey/android/bg;->r:I
-
- if-eqz p2, :cond_3
-
- sget-object p2, Lcom/vkey/android/bg;->g:Landroid/content/Context;
-
- invoke-static {p2}, Lcom/vkey/android/internal/vguard/util/Utility;->b(Landroid/content/Context;)Z
-
- move-result p2
-
- if-nez p2, :cond_4
-
- :cond_3
- sget-boolean p2, Lcom/vkey/android/dy;->f:Z
-
- if-nez p2, :cond_4
-
- sget-object p2, Lcom/vkey/android/dy;->i:Ljava/util/concurrent/CopyOnWriteArrayList;
-
- invoke-direct {p0, p1, p2}, Lcom/vkey/android/dy;->a(Landroid/content/Context;Ljava/util/concurrent/CopyOnWriteArrayList;)V
- :try_end_1
- .catchall {:try_start_1 .. :try_end_1} :catchall_0
-
- :cond_4
- monitor-exit p0
-
- return-void
-
- :catchall_0
- move-exception p1
-
- monitor-exit p0
-
- throw p1
-.end method