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