From fd26ca1ba9fa5276201bfd781daf1000c2daa566 Mon Sep 17 00:00:00 2001 From: Mike Date: Thu, 26 Feb 2026 17:14:40 +0200 Subject: [PATCH] Files Upload --- ApkPatcher/ANSI_COLORS.py | 56 + ApkPatcher/APK_PATCHER.py | 241 ++ ApkPatcher/CLI.py | 337 ++ ApkPatcher/MODULES.py | 34 + ApkPatcher/Patch/AES.py | 214 ++ ApkPatcher/Patch/Ads_Patch.py | 181 + ApkPatcher/Patch/CERT_NSC.py | 187 + ApkPatcher/Patch/Flutter_SSL_Patch.py | 146 + ApkPatcher/Patch/Manifest_Patch.py | 172 + ApkPatcher/Patch/Package.py | 26 + ApkPatcher/Patch/Pairip_CoreX.py | 77 + ApkPatcher/Patch/Pine_Hook.py | 63 + ApkPatcher/Patch/Random_INFO.py | 3616 ++++++++++++++++++++ ApkPatcher/Patch/Smali_Patch.py | 400 +++ ApkPatcher/Patch/Spoof_Patch.py | 328 ++ ApkPatcher/Patch/TG_Patch.py | 490 +++ ApkPatcher/Patch/__init__.py | 0 ApkPatcher/Utils/Anti_Splits.py | 62 + ApkPatcher/Utils/CRC.py | 54 + ApkPatcher/Utils/Credits.py | 28 + ApkPatcher/Utils/Decompile_Compile.py | 170 + ApkPatcher/Utils/Files/AES.smali | 436 +++ ApkPatcher/Utils/Files/Hook.smali | 75 + ApkPatcher/Utils/Files/__init__.py | 0 ApkPatcher/Utils/Files/lib_Pairip_CoreX.so | Bin 0 -> 926280 bytes ApkPatcher/Utils/Files_Check.py | 196 ++ ApkPatcher/Utils/Pine/__init__.py | 0 ApkPatcher/Utils/Pine/config.json | 84 + ApkPatcher/Utils/Pine/libpine32 | Bin 0 -> 56948 bytes ApkPatcher/Utils/Pine/libpine64 | Bin 0 -> 72024 bytes ApkPatcher/Utils/Pine/loader.dex | Bin 0 -> 94552 bytes ApkPatcher/Utils/Scan.py | 118 + ApkPatcher/Utils/__init__.py | 0 ApkPatcher/__init__.py | 0 LICENSE | 21 + README.md | 230 ++ VERSION | 1 + pyproject.toml | 60 + 38 files changed, 8103 insertions(+) create mode 100644 ApkPatcher/ANSI_COLORS.py create mode 100644 ApkPatcher/APK_PATCHER.py create mode 100644 ApkPatcher/CLI.py create mode 100644 ApkPatcher/MODULES.py create mode 100644 ApkPatcher/Patch/AES.py create mode 100644 ApkPatcher/Patch/Ads_Patch.py create mode 100644 ApkPatcher/Patch/CERT_NSC.py create mode 100644 ApkPatcher/Patch/Flutter_SSL_Patch.py create mode 100644 ApkPatcher/Patch/Manifest_Patch.py create mode 100644 ApkPatcher/Patch/Package.py create mode 100644 ApkPatcher/Patch/Pairip_CoreX.py create mode 100644 ApkPatcher/Patch/Pine_Hook.py create mode 100644 ApkPatcher/Patch/Random_INFO.py create mode 100644 ApkPatcher/Patch/Smali_Patch.py create mode 100644 ApkPatcher/Patch/Spoof_Patch.py create mode 100644 ApkPatcher/Patch/TG_Patch.py create mode 100644 ApkPatcher/Patch/__init__.py create mode 100644 ApkPatcher/Utils/Anti_Splits.py create mode 100644 ApkPatcher/Utils/CRC.py create mode 100644 ApkPatcher/Utils/Credits.py create mode 100644 ApkPatcher/Utils/Decompile_Compile.py create mode 100644 ApkPatcher/Utils/Files/AES.smali create mode 100644 ApkPatcher/Utils/Files/Hook.smali create mode 100644 ApkPatcher/Utils/Files/__init__.py create mode 100644 ApkPatcher/Utils/Files/lib_Pairip_CoreX.so create mode 100644 ApkPatcher/Utils/Files_Check.py create mode 100644 ApkPatcher/Utils/Pine/__init__.py create mode 100644 ApkPatcher/Utils/Pine/config.json create mode 100644 ApkPatcher/Utils/Pine/libpine32 create mode 100644 ApkPatcher/Utils/Pine/libpine64 create mode 100644 ApkPatcher/Utils/Pine/loader.dex create mode 100644 ApkPatcher/Utils/Scan.py create mode 100644 ApkPatcher/Utils/__init__.py create mode 100644 ApkPatcher/__init__.py create mode 100644 LICENSE create mode 100644 VERSION create mode 100644 pyproject.toml diff --git a/ApkPatcher/ANSI_COLORS.py b/ApkPatcher/ANSI_COLORS.py new file mode 100644 index 0000000..a1d0afa --- /dev/null +++ b/ApkPatcher/ANSI_COLORS.py @@ -0,0 +1,56 @@ +# ————— 𝐀𝐍𝐒𝐈 𝐂𝐎𝐋𝐎𝐑𝐒 ————— + +class ANSI: + def __init__(self): + + # =====🔸𝐀𝐍𝐒𝐈 𝐂𝐎𝐋𝐎𝐑𝐒🔸===== + + self.ESC = '\033' # ( Octal ) + + # 𝐀𝐍𝐒𝐈 𝐂𝐎𝐋𝐎𝐑 ( 𝐁𝐎𝐋𝐃 = 𝟏𝐦 | 𝐃𝐀𝐑𝐊 = 𝟐𝐦 ) + + self.R = self.ESC + '[31;1m' # RED + self.G = self.ESC + '[32;1m' # GREEN + self.Y = self.ESC + '[33;1m' # YELLOW + self.B = self.ESC + '[34;1m' # BLUE + self.P = self.ESC + '[35;1m' # PURPLE + self.C = self.ESC + '[36;1m' # CYAN + self.W = self.ESC + '[37;1m' # WHITE + + # 𝐁𝐑𝐈𝐆𝐇𝐓 𝐂𝐎𝐋𝐎𝐑 + + self.BR = self.ESC + '[91;1m' # BRIGHT RED + self.BG = self.ESC + '[92;1m' # BRIGHT GREEN + self.BY = self.ESC + '[93;1m' # BRIGHT YELLOW + self.BB = self.ESC + '[94;1m' # BRIGHT BLUE + self.BP = self.ESC + '[95;1m' # BRIGHT PURPLE + self.BC = self.ESC + '[96;1m' # BRIGHT CYAN + self.BW = self.ESC + '[97;1m' # BRIGHT WHITE + + # 𝐎𝐓𝐇𝐄𝐑 𝐂𝐎𝐋𝐎𝐑 + + self.DG = self.ESC + '[32;2m' # DARK GREEN + self.GR = self.ESC + '[90;1m' # GRAY + + # 𝟐𝟓𝟔 𝐂𝐨𝐥𝐨𝐫𝐬 ( 𝐄𝐒𝐂 + '[𝟑𝟖;𝟓;{𝐈𝐃}𝐦' ) [ 𝐈𝐃 - https://user-images.githubusercontent.com/995050/47952855-ecb12480-df75-11e8-89d4-ac26c50e80b9.png ] + + self.PN = self.ESC + '[38;5;213;1m' # PINK + self.OG = self.ESC + '[38;5;202;1m' # ORANGE + + # 𝐂𝐋𝐄𝐀𝐑 𝐂𝐎𝐃𝐄𝐒 + + self.CL = self.ESC + '[2K' # CLEAR LINE + self.CC = self.ESC + '[0m' # CLEAR COLOR + + # 𝐌𝐎𝐑𝐄 𝐈𝐍𝐅𝐎 [ 𝐋𝐈𝐍𝐊 - https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797 ] + + # =====🔹𝐓𝐀𝐆🔹===== + + self.S = f'{self.B}[{self.C}' + self.E = f'{self.B}]' + self.X = f'{self.B}[ {self.P}* {self.B}]' + self.FYI = f'{self.B}[ {self.P}FYI {self.B}]' + self.INFO = f'{self.B}[ {self.Y}INFO {self.B}]{self.C}' + self.WARN = f'{self.B}[ {self.Y}WARN {self.B}]{self.B}' + self.ERROR = f'{self.B}[ {self.R}ERROR {self.B}]{self.R}' + self.SUGGEST = f'{self.B}[ {self.Y}SUGGEST {self.B}]{self.C}' \ No newline at end of file diff --git a/ApkPatcher/APK_PATCHER.py b/ApkPatcher/APK_PATCHER.py new file mode 100644 index 0000000..77ac22c --- /dev/null +++ b/ApkPatcher/APK_PATCHER.py @@ -0,0 +1,241 @@ +from .CLI import parse_arguments +from .ANSI_COLORS import ANSI; C = ANSI() +from .MODULES import IMPORT; M = IMPORT() + +from ApkPatcher.Utils.CRC import CRC_Fix +from ApkPatcher.Utils.Credits import Credits +from ApkPatcher.Utils.Scan import Scan_Apk +from ApkPatcher.Utils.Anti_Splits import Anti_Split +from ApkPatcher.Utils.Files_Check import FileCheck, __version__ +from ApkPatcher.Utils.Decompile_Compile import Decompile_Apk, Recompile_Apk, FixSigBlock, Sign_APK + +from ApkPatcher.Patch.AES import Copy_AES_Smali +from ApkPatcher.Patch.CERT_NSC import Write_NSC +from ApkPatcher.Patch.Smali_Patch import Smali_Patch +from ApkPatcher.Patch.TG_Patch import TG_Smali_Patch +from ApkPatcher.Patch.Ads_Patch import Ads_Smali_Patch +from ApkPatcher.Patch.Pine_Hook import Pine_Hook_Patch +from ApkPatcher.Patch.Spoof_Patch import Patch_Random_Info +from ApkPatcher.Patch.Flutter_SSL_Patch import Patch_Flutter_SSL +from ApkPatcher.Patch.Pairip_CoreX import Check_CoreX, Hook_Core +from ApkPatcher.Patch.Manifest_Patch import Fix_Manifest, Patch_Manifest, Permission_Manifest + + +def Clear(): + M.os.system('cls' if M.os.name == 'nt' else 'clear') +Clear() + + +# ---------------- Install Require Module --------------- +required_modules = ['requests', 'r2pipe', 'asn1crypto', 'multiprocess'] +for module in required_modules: + try: + __import__(module) + except ImportError: + print(f"{C.S} Installing {C.E} {C.OG}➸❥ {C.G}{module}...\n") + try: + M.subprocess.check_call([M.sys.executable, "-m", "pip", "install", module]) + Clear() + except (M.subprocess.CalledProcessError, Exception): + exit( + f"\n{C.ERROR} No Internet Connection. ✘\n" + f"\n{C.INFO} Internet Connection is Required to Install {C.G} pip install {module}\n" + ) + + +# ---------------- Check Dependencies --------------- +def check_dependencies(): + try: + M.subprocess.run(['java', '-version'], stdout=M.subprocess.PIPE, stderr=M.subprocess.PIPE, check=True, text=True) + except (M.subprocess.CalledProcessError, FileNotFoundError): + if M.os.name == 'posix': + install_package('openjdk-17') + else: + exit( + f'\n\n{C.ERROR} Java is not installed on Your System. ✘\n' + f'\n{C.INFO} Install Java & Run Script Again in New CMD. ✘\n' + f'\n{C.INFO} Verify Java Installation {C.G} java --version\n' + ) + + if M.os.name == 'posix': install_package('aapt') + + +# ---------------- Install Package --------------- +def install_package(pkg): + try: + result = M.subprocess.run(['pkg', 'list-installed'], stdout=M.subprocess.PIPE, stderr=M.subprocess.PIPE, text=True) + if pkg not in result.stdout: + print(f"{C.S} Installing {C.E} {C.OG}➸❥ {C.G}{pkg}...\n") + M.subprocess.check_call(['pkg', 'install', '-y', pkg]) + Clear() + except (M.subprocess.CalledProcessError, Exception): + exit( + f"\n\n{C.ERROR} No Internet Connection. ✘\n" + f"\n{C.INFO} Internet Connection is Required to Installation {C.G}pkg install {pkg}\n" + ) + +check_dependencies() + +F = FileCheck(); F.Set_Path(); F.F_D() + +Date = M.datetime.now().strftime('%d/%m/%y') +print(f"{C.OG}{f'v{__version__}':>22}") + +# Logo ( 🙏 ) +b64 = """eJzVlc9LAkEUx8/Ov9DlMXgNzLAfeMlUSAQLETx4ELGlJEehnEPgQSrqUlFYdIroHNShixDRP1DQn1DaqUv+Cc3MzszOrFtUt96u+2O+n/fmvTe7LoCwsdIEGStNzsRj8WgkSoYXe9fsdwtFp15tEsfSp8n8phyYjZKCU11tNCHTWK5V2GhE+yIUCgF1DYFplIY9s0RLGdG56EsU5PTjRgLcyfIJMk1IQNcDiaUsLCUKyYV0XoUL4H8QErNLbJxNBCtA4FSOikGdOufBj/DYAQS1L72WYreH7CB5ak+iUzPTtHSvZH32LWcYGxsX2Yp7KdIwyI2KJNx1ZpgIZ5TCURqm3qAAkNKona5qn3pkkP1QCZSbnM5QkXDG2MQpWA+fq7IuyAA8lh2e3TPNbASfBHxRkVwZI7QPkpqqUs2OjcAWLqbERv0j5uIqt685UM9bKFjUb8Swu7MFr4eX71fn/Z1jGHZ3j+CjdzfY3uufHr31OvDycAbPN4/3T90sP/B7/uKgfuckcG9/JXy//8XtFz4WiqweTJFchTi8Jtmbtq0WnLqzsl4hmmj73BeLuXTe56/FVKXl/Pt++f6XB51988Mw6ByI6tvqQxIjc+trLUHUONDYGNHz2XIhnVzILZYzuVQmITr0CawgFWQ=""" +print(f"{M.zlib.decompress(M.base64.b64decode(b64)).decode('utf-8').rstrip('\n')} | {C.B}{Date}{C.CC}") +print("————————|——————————————————|—————————————————|——————————————|————") + + +# ---------------- Target All Classes Folder --------------- +def Find_Smali_Folders(decompile_dir, isAPKEditor, isPine_Hook): + + dex_path = M.os.path.join(decompile_dir, "dex") if isAPKEditor else decompile_dir + + smali_path = M.os.path.join(decompile_dir, "smali") if isAPKEditor else decompile_dir + + if isPine_Hook: + + classes_files = [file for file in M.os.listdir(dex_path) if file.startswith("classes") and file.endswith(".dex")] + + return f"classes{len(classes_files) + 1}.dex" + + else: + + prefix = "classes" if isAPKEditor else "smali_classes" + + folders = sorted([folder for folder in M.os.listdir(smali_path) if folder == "smali" or folder.startswith(prefix)], key=lambda x: int(x.split(prefix)[-1]) if x.split(prefix)[-1].isdigit() else 0) + + return [M.os.path.join(smali_path, folder) for folder in folders] + + +# ---------------- Execute Main Function --------------- +def RK_Techno_IND(): + args = parse_arguments() + isCoreX = args.Hook_CoreX + isFlutter = args.Flutter; isPairip = args.Pairip + Skip_Patch = args.Skip_Patch if args.Skip_Patch else [] + isAPKEditor = args.APKEditor; isEmulator = args.For_Emulator + + if isEmulator: + F.isEmulator() + F.F_D_A() + + if args.Credits: + Credits() + + apk_path = args.input or args.Merge + + if not M.os.path.isfile(apk_path): + exit( + f"\n{C.ERROR} APK file '{apk_path}' not found. ✘\n\n" + f"\n{C.FYI}{C.G} Make Sure There Is 'No Extra Space' In The Folder/Apk Name In The Input Text. If Yes, Then Remove Extra Space & Correct It By Renaming It.\n" + ) + + if args.CA_Certificate: + isCert = [Cert for Cert in args.CA_Certificate if not M.os.path.isfile(Cert)] + + if isCert: + exit(f"\n{C.ERROR} Not exist: {', '.join(isCert)}\n") + + apk_path = Anti_Split(apk_path, args.Merge, isCoreX) + + # ---------------- Set All Paths Directory ---------------- + decompile_dir = M.os.path.join(M.os.path.expanduser("~"), f"{M.os.path.splitext(M.os.path.basename(apk_path))[0]}_decompiled") + + build_dir = M.os.path.abspath(M.os.path.join(M.os.path.dirname(apk_path), f"{M.os.path.splitext(M.os.path.basename(apk_path))[0]}_Patched.apk")) + + rebuild_dir = build_dir.replace('_Patched.apk', '_Patch.apk') + + manifest_path = M.os.path.join(decompile_dir, 'AndroidManifest.xml') + + if M.os.name == 'posix': + M.subprocess.run(['termux-wake-lock']) + print(f"\n{C.X}{C.C} Acquiring Wake Lock...\r") + + start_time = M.time.time() + + # ---------------- Scan & Decompile APK --------------- + Package_Name, isFlutter_lib, isPairip_lib = Scan_Apk(apk_path, isFlutter, isPairip) + + Decompile_Apk(apk_path, decompile_dir, isEmulator, isAPKEditor, args.AES_Logs, args.Pine_Hook, Package_Name) + + smali_folders = Find_Smali_Folders(decompile_dir, isAPKEditor, args.Pine_Hook) + + # ---------------- Pine Hook ---------------- + if args.Pine_Hook: + Pine_Hook_Patch(decompile_dir, isAPKEditor, args.Load_Modules, smali_folders) + else: + # ---------------- AES Logs Inject ---------------- + if args.AES_Logs: + Copy_AES_Smali(decompile_dir, smali_folders, manifest_path, args.AES_S, isAPKEditor) + + Permission_Manifest(decompile_dir, manifest_path, isAPKEditor) + + # ---------------- Remove Ads ---------------- + if args.Remove_Ads: + Ads_Smali_Patch(smali_folders) + + # ---------------- Fake / Spoof Device Info ---------------- + if args.Random_Info: + Patch_Random_Info(smali_folders, args.Android_ID) + + # ---------------- TG Patch ---------------- + if args.TG_Patch: + TG_Smali_Patch(decompile_dir, smali_folders, isAPKEditor) + + + # ---------------- Other Patch ---------------- + if args.AES_Logs or args.Remove_Ads or args.Random_Info or args.Pine_Hook or args.TG_Patch: + Fix_Manifest(manifest_path, args.Spoof_PKG, args.Pine_Hook, Package_Name) + else: + if isFlutter and isFlutter_lib: + Patch_Flutter_SSL(decompile_dir, isAPKEditor) + + # ---------------- Smali Patching / Hook CoreX ---------------- + if isCoreX and isPairip and isPairip_lib and Check_CoreX(decompile_dir, isAPKEditor): + M.shutil.rmtree(decompile_dir) + exit(1) + + Smali_Patch(decompile_dir, smali_folders, isAPKEditor, args.CA_Certificate, args.Android_ID, isPairip, isPairip_lib, args.Spoof_PKG, args.Purchase, args.Remove_SS, Skip_Patch, args.Remove_USB, isCoreX) + + if isCoreX and isPairip and isPairip_lib: + Hook_Core(args.input, decompile_dir, isAPKEditor, Package_Name) + + # ---------------- Patch Manifest & Write Network Config ---------------- + Fix_Manifest(manifest_path, args.Spoof_PKG, args.Pine_Hook, Package_Name) + + Patch_Manifest(decompile_dir, manifest_path) + + Write_NSC(decompile_dir, isAPKEditor, args.CA_Certificate) + + # ---------------- Recompile APK ---------------- + Recompile_Apk(decompile_dir, apk_path, build_dir, isEmulator, isAPKEditor, Package_Name) + + # ---------------- Fix CRC / Sign APK ---------------- + if not isCoreX and isPairip and isPairip_lib or args.unsigned_apk: + + if not isAPKEditor: + FixSigBlock(decompile_dir, apk_path, build_dir, rebuild_dir); + + CRC_Fix(apk_path, build_dir, ["AndroidManifest.xml", ".dex"]) + + else: + Sign_APK(build_dir) + + if M.os.path.exists(build_dir): + print(f'{C.S} Final APK {C.E} {C.G}︻デ═一 {C.Y}{build_dir} {C.G} ✔') + + print(f"\n{C.CC}{'_' * 61}\n") + + if not isCoreX and isPairip and isPairip_lib: + print(f'\n{C.FYI}{C.C} This is Pairip Apk So U Install {C.G}( Keep Apk Without Sign ) {C.C}in VM / Multi_App\n') + + print(f'\n{C.S} Time Spent {C.E} {C.G}︻デ═一 {C.PN}{M.time.time() - start_time:.2f} {C.CC}Seconds {C.G} ✔\n') + + print(f'\n🚩 {C.CC}࿗ {C.OG}Jai Shree Ram {C.CC}࿗ 🚩\n 🛕🛕🙏🙏🙏🛕🛕\n') + + if M.os.name == 'posix': + M.subprocess.run(['termux-wake-unlock']) + exit(f"\n{C.X}{C.C} Releasing Wake Lock...\n") + exit(0) \ No newline at end of file diff --git a/ApkPatcher/CLI.py b/ApkPatcher/CLI.py new file mode 100644 index 0000000..0e10023 --- /dev/null +++ b/ApkPatcher/CLI.py @@ -0,0 +1,337 @@ +from .ANSI_COLORS import ANSI; C = ANSI() +from .MODULES import IMPORT; M = IMPORT() + +from ApkPatcher.Utils.Files_Check import __version__ + + +Tag = f"\n{C.CC}————|———————|————{C.G}•❀ {C.OG}Tag {C.G}❀•{C.CC}————|———————|————\n" + +FE = f"{C.P}\n |\n ╰{C.CC}┈{C.OG}➢ {C.G}ApkPatcher" + +EX = f"{FE} -i Your_Apk_Path.apk {C.OG}" + + +class CustomArgumentParser(M.argparse.ArgumentParser): + # ---------------- Error Handling ---------------- + def error(self, message): + suggestion = "" + for action in self._actions: + if action.option_strings and any(option in message for option in action.option_strings): + if action.dest == 'input': + suggestion = ( + f'\n{C.FYI}{C.G} Make Sure There Is "No Extra Space" In The Folder / APK Name In The Input Text. If Yes, Then Remove Extra Space & Correct It By Renaming It.\n\n' + f'\n{C.INFO} With Your Certificate Flag: {C.OG}-c {C.P}( Input Your pem/crt/cert Path ){EX}-c {C.Y}certificate.cert\n\n' + f'\n{C.INFO} If you are using an Emulator in PC Then Use Flag: {C.OG}-e{EX}-c {C.Y}certificate.cert {C.OG}-e\n' + ) + + elif action.dest == 'Merge': + suggestion = ( + f'\n{C.INFO} Only Merge APK\n\n' + f'\n{C.INFO} Merge Extension {C.Y}( .apks/.xapk/.apkm )' + f'\n{FE}{C.OG} -m {C.G}Your_Apk_Path.apks\n' + ) + + break + + exit( + f'\n{C.ERROR} {message}\n' + f'\n{suggestion}' + ) + + # ---------------- Print Help ---------------- + def print_help(self): + + super().print_help() + + print(f"\n{C.INFO} ApkPatcher Default Patch is VPN & SSL Bypass, Show Other Patch Flags List with: {C.G}ApkPatcher -O{C.C}\n") + + # ---------------- Other Patch ---------------- + def Other_Patch(self): + print( + f"""\n{C.X}{C.C} Other Patch Flags Help ( Keep Sequence in Mind ) + + {C.G}─•❀•❀ {C.C}Info Patch {C.G}❀•❀•─ {C.OG} + + -A, {C.C}--AES_Logs {C.Y} ➸ {C.G}AES Logs Inject {C.OG} + -D, {C.C}--Android_ID {C.Y} ➸ {C.G}Hook Android ID for One Device Login Bypass {C.OG} + -f, {C.C}--Flutter {C.Y} ➸ {C.G}Flutter SSL Bypass {C.OG} + -l, {C.C}--Load_Modules {C.Y} ➸ {C.G}Path of Xposed & LSP Module {C.P}( Currently Not Supported XSharedPreferences Module ) {C.OG} + -p, {C.C}--Pairip {C.Y} ➸ {C.G}Pairip CERT SSL Bypass {C.OG} + -P, {C.C}--Purchase {C.Y} ➸ {C.G}Purchase / Paid / Price {C.OG} + -r, {C.C}--Random_Info {C.Y} ➸ {C.G}Fake Device Info {C.OG} + -rmads, {C.C}--Remove_Ads {C.Y} ➸ {C.G}Bypass Ads {C.OG} + -rmss, {C.C}--Remove_SS {C.Y} ➸ {C.G}Bypass Screenshot Restriction {C.OG} + -rmusb, {C.C}--Remove_USB {C.Y} ➸ {C.G}Bypass USB Debugging {C.OG} + -pkg, {C.C}--Spoof_PKG {C.Y} ➸ {C.G}Spoof Package Detection {C.OG} + -pine, {C.C}--Pine_Hook {C.Y} ➸ {C.G}Pine Hook {C.OG} + -skip {C.C}[Skip_Patch ...]{C.Y} ➸ {C.G}Skip Specific Patches {C.P}( e.g. getAcceptedIssuers ) {C.OG} + -s, {C.C}--AES_S {C.Y} ➸ {C.G}Do U Want Separate AES.smali Dex {C.OG} + -t, {C.C}--TG_Patch {C.Y} ➸ {C.G}Telegram / Plus Patcher {C.OG} + -x, {C.C}--Hook_CoreX {C.Y} ➸ {C.G}Hook CoreX Flag: {C.OG}-p -x {C.P}( Only For [ arm64 ] )""" + ) + + user_input = input(f"\n\n{C.B}[ {C.P}* {C.B}] {C.C} Do See Example\n{C.G} |\n └──── {C.CC}~ y / Exit to Enter {C.G}$ : {C.Y}") + + if user_input.lower() == "y": + print( + f"""\n{Tag.replace("Tag", "AES Logs Inject")} + +{C.INFO} AES MT Logs Inject Flag: {C.OG}-A{EX}-A + + +{C.INFO} Do U Want Separate AES.smali Dex Use Flag: {C.OG}-A -s{EX}-A -s + +{Tag.replace("Tag", "Hook Android ID")} + +{C.INFO} Hook Android ID For One Device Login Bypass Use Flag: {C.OG}-D {C.P}( Input Your Original 16 Digit Android ID ){EX}-D {C.Y}7e9f51f096bd5c83 + +{Tag.replace("Tag", "isFlutter / isPairip")} + +{C.INFO} If APK is Flutter Then Use Additional Flag: {C.OG}-f{EX}-f + + +{C.INFO} If APK is Pairip Then Use Additional Flag: {C.OG}-p {C.P}( Without Sign APK Use Only in VM / Multi_App ){EX}-p + + +{C.INFO} If APK is Pairip Then Hook CoreX Use Additional Flag: {C.OG}-p -x {C.P}( Install Directly Only For [ arm64 ] ){EX}-p -x + +{Tag.replace("Tag", "Spoof PKG / Device Info")} + +{C.INFO} Spoof Package Detection Flag: {C.OG}-pkg {C.P}( Dex / Manifest / Res ){EX}-pkg + +{C.INFO} Fake Device Info Flag: {C.OG}-r{EX}-r + + +{C.INFO} With Your Android ID Flag: {C.OG}-r -D {C.P}( Input Your Custom 16 Digit Android ID ){EX}-r -D {C.Y}7e9f51f096bd5c83 + +{Tag.replace("Tag", "Pine Hook")} + +{C.INFO} Pine Hook Flag: {C.OG}-pine -l {C.P}( Input Path of Xposed & LSP Module ){EX}-pine -l {C.Y}NoVPNDetect.apk just.trust.me.apk + +{Tag.replace("Tag", "Bypass Ads / SS / USB")} + +{C.INFO} Bypass Ads Flag: {C.OG}-rmads{EX}-rmads + + +{C.INFO} Bypass Screenshot Restriction Flag: {C.OG}-rmss{EX}-rmss + + +{C.INFO} Bypass USB Debugging Flag: {C.OG}-rmusb{EX}-rmusb + +{Tag.replace("Tag", "isPurchase / Skip Patch")} + +{C.INFO} Purchase / Paid / Price Flag: {C.OG}-P{EX}-P + + +{C.INFO} Skip Patch Flag: {C.OG}-skip{EX}-skip {C.Y}getAcceptedIssuers + +{Tag.replace("Tag", "Telegram / Plus Patch")} + +{C.INFO} Telegram / Plus Patch Flag: {C.OG}-t{EX}-t\n""" + ) + + else: + return + + +# ---------------- Parse Arguments ---------------- +def parse_arguments(): + + args = M.sys.argv[1:] + + if '-O' in args: + exit(CustomArgumentParser().Other_Patch()) + + if any(arg.startswith('-') for arg in args): + parser = CustomArgumentParser(description=f'{C.C}ApkPatcher v{__version__}') + else: + parser = M.argparse.ArgumentParser() + + group = parser.add_mutually_exclusive_group(required=True) + + group.add_argument( + '-i', + dest='input', + help=f'{C.Y}➸{C.G} Input APK Path...{C.C}' + ) + + group.add_argument( + '-m', + dest='Merge', + help=f'{C.Y}➸{C.G} Anti-Split ( Only Merge APK ){C.C}' + ) + + group.add_argument( + '-C', + dest='Credits', + action='store_true', + help=f'{C.Y}➸{C.G} Show Credits{C.C}' + ) + + additional = parser.add_argument_group(f'{C.OG}[ * ] Additional Flags{C.C}') + + additional.add_argument( + '-a', + '--APKEditor', + action='store_true', + help=f'{C.Y}➸ {C.G}APKEditor ( Default APKTool ){C.C}' + ) + + additional.add_argument( + '-e', + '--For_Emulator', + action='store_true', + help=f'{C.Y}➸{C.G} If using emulator on PC then use -e flag{C.C}' + ) + + additional.add_argument( + '-c', + dest='CA_Certificate', + type=str, + nargs='*', + help=f"{C.Y}➸{C.G} Input Your HttpCanary / Reqable / ProxyPin etc. Capture APK's CA-Certificate{C.C}" + ) + + additional.add_argument( + '-u', + dest='unsigned_apk', + action='store_true', + help=f"{C.Y}➸{C.G} Keep Unsigned APK{C.C}" + ) + + + # ---------------- Other Patch Flags ---------------- + parser.add_argument( + '-A', + '--AES_Logs', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-D', + '--Android_ID', + type=str, + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-f', + '--Flutter', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-l', + '--Load_Modules', + type=str, + nargs='*', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-p', + '--Pairip', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-P', + '--Purchase', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-r', + '--Random_Info', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-rmads', + '--Remove_Ads', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-rmss', + '--Remove_SS', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-rmusb', + '--Remove_USB', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-pkg', + '--Spoof_PKG', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-pine', + '--Pine_Hook', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-skip', + dest='Skip_Patch', + nargs='*', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-s', + '--AES_S', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-t', + '--TG_Patch', + action='store_true', + help=M.argparse.SUPPRESS + ) + + parser.add_argument( + '-x', + '--Hook_CoreX', + action='store_true', + help=M.argparse.SUPPRESS + ) + + + Ext = ('.apk', '.apks', '.apkm', '.xapk') + + fixed = []; start = None; Valid_Ext = False + + for index, option in enumerate(args): + if option in ['-i', '-m', '-C']: + start, fixed = index + 1, fixed + [option] + elif start and (option.endswith(Ext) or M.os.path.isdir(option)): + fixed, start = fixed + [' '.join(args[start:index+1])], None + Valid_Ext = True + elif not start: + fixed.append(option) + + + if not Valid_Ext and M.sys.argv[1:2] != ['-C']: + print(f"\n{C.X}{C.C} Only Supported Extensions {C.G}{Ext}\n") + + print(f"\n{C.S} Input Path {C.E} {C.OG}➸❥{C.Y}", *fixed, f"{C.CC}\n") + + return parser.parse_args(fixed) \ No newline at end of file diff --git a/ApkPatcher/MODULES.py b/ApkPatcher/MODULES.py new file mode 100644 index 0000000..1060ab5 --- /dev/null +++ b/ApkPatcher/MODULES.py @@ -0,0 +1,34 @@ +# ————— 𝐈𝐌𝐏𝐎𝐑𝐓 𝐌𝐎𝐃𝐔𝐋𝐄𝐒 ————— + +class IMPORT: + def __init__(self): + + # ---------------- 𝐌𝐮𝐥𝐭𝐢𝐏𝐫𝐨𝐜𝐞𝐬𝐬 / 𝐌𝐮𝐥𝐭𝐢𝐏𝐫𝐨𝐜𝐞𝐬𝐬𝐢𝐧𝐠 ---------------- + try: + mp = __import__('multiprocess') + except ImportError: + mp = __import__('multiprocessing') + + # ————— 𝐋𝐢𝐛𝐫𝐚𝐫𝐢𝐞𝐬 𝐈𝐦𝐩𝐨𝐫𝐭 ————— + self.re = __import__('re') + self.os = __import__('os') + self.sys = __import__('sys') + self.zlib = __import__('zlib') + self.json = __import__('json') + self.time = __import__('time') + self.shutil = __import__('shutil') + self.string = __import__('string') + self.zipfile = __import__('zipfile') + self.hashlib = __import__('hashlib') + self.base64 = __import__('base64') + self.binascii = __import__('binascii') + self.random = __import__('random') + self.argparse = __import__('argparse') + self.subprocess = __import__('subprocess') + + # ————— 𝐄𝐱𝐭𝐫𝐚 𝐋𝐢𝐛𝐫𝐚𝐫𝐢𝐞𝐬 ————— + self.Pool = mp.Pool + self.Manager = mp.Manager + self.cpu_count = mp.cpu_count + self.datetime = __import__('datetime').datetime + \ No newline at end of file diff --git a/ApkPatcher/Patch/AES.py b/ApkPatcher/Patch/AES.py new file mode 100644 index 0000000..65c086a --- /dev/null +++ b/ApkPatcher/Patch/AES.py @@ -0,0 +1,214 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +from collections import defaultdict +from ApkPatcher.Utils.Files_Check import FileCheck + +F = FileCheck(); F.Set_Path() +C_Line = f"{C.CC}{'_' * 61}" + + +# ---------------- Regex Scan ---------------- +def R_S_F(smali_folders): + for smali_folder in smali_folders: + for root, _, files in M.os.walk(smali_folder): + for file in files: + file_path = M.os.path.join(root, file) + yield file_path, open(file_path, 'r', encoding='utf-8', errors='ignore').read() + + +# ---------------- AES Logs Inject ---------------- +def AES_Logs_Inject(decompile_dir, smali_folders): + reg = M.re.compile(r'"AES/[^/]+/[^"]+"') + Class_P = M.re.compile(r'\.class[^;]* (L[^;]+;)') + Met_P = M.re.compile(r'\.method.*?\s([a-zA-Z0-9_<>\$]+)\((.*?)\)(.*)') + + Match_F = defaultdict(list) + + matched_files = [] + + total_files = 0 + + for file_path, content in R_S_F(smali_folders): + if "Ljavax/crypto/Cipher;->doFinal([B)[B" in content and "Ljavax/crypto/spec/SecretKeySpec;" in content and "Ljavax/crypto/spec/IvParameterSpec;" in content: + + Class_N = Class_P.search(content)[1] + + for block in content.split('.method')[1:]: + + if reg.search(block): + Met_M = Met_P.search(".method" + block.split('\n', 1)[0]) + + if Met_M: + total_files += 1 + + Met_Sig = f"{Met_M[1]}({Met_M[2]}){Met_M[3]}" + + match = f"{Class_N}->{Met_Sig}" + + Match_F[match].append(file_path) + + print(f"\r{C.S} Total Method Signature {C.E} {C.OG}➸❥ {C.PN}{total_files}", end='', flush=True) + + if total_files == 0: + M.shutil.rmtree(decompile_dir) + + exit( + f"{C.ERROR} No Matching Patterns found ! ✘\n" + f"\n{C.INFO} Sorry Bro Your Bad Luck !, Not Working MT Logs Method in This Apk, Try Another Method.\n" + ) + + print(f" {C.G} ✔\n\n", flush=True) + + for file_path, content in R_S_F(smali_folders): + if any(match in content for match in Match_F): + total_files += 1 + + matched_files.append(file_path) + + print(f"\r{C.S} Find Target Smali {C.E} {C.OG}➸❥ {C.PN}{total_files}", end='', flush=True) + + print(f" {C.G} ✔", flush=True) + + print(f'\n{C_Line}\n') + + Inject_A = r"invoke-static (\{[pv]\d+\}), Ljavax/crypto/Cipher;->getInstance\(Ljava/lang/String;\)Ljavax/crypto/Cipher;[^>]*?move-result-object ([pv]\d+)" + + Inject_A_matches = defaultdict(list) + + for match, file_paths in Match_F.items(): + for file_path in file_paths: + content = open(file_path, 'r', encoding='utf-8', errors='ignore').read() + matches = list(M.re.finditer(Inject_A, content)) + + if matches: + Inject_A_matches[Inject_A].append(M.os.path.basename(file_path)) + + updated_content = content + + for m in matches: + invoke_pv, result_pv = m[1], m[2] + + if f"invoke-static {invoke_pv}, LRK_TECHNO_INDIA/AES;->getInstance(Ljava/lang/Object;)V" not in updated_content: + injected_lines = [ + f"invoke-static {invoke_pv}, LRK_TECHNO_INDIA/AES;->getInstance(Ljava/lang/Object;)V", + f"invoke-static {invoke_pv}, Ljavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;", + f"move-result-object {result_pv}", + f"invoke-static {{{result_pv}}}, LRK_TECHNO_INDIA/AES;->getInstance(Ljava/lang/Object;)V", + ] + match_text = m[0] + replacement_text = "\n ".join(injected_lines) + + if match_text in updated_content: + updated_content = updated_content.replace(match_text, replacement_text) + + open(file_path, 'w', encoding='utf-8', errors='ignore').write(updated_content) + + for pattern, file_paths in Inject_A_matches.items(): + print(f"\n{C.S} Cipher {C.E} {C.C}Method Signature {C.OG}➸❥ {C.P}{pattern}\n") + for file_name in file_paths: + print(f"{C.G} |\n └──── {C.CC}~{C.G}$ {C.Y}{file_name} {C.G} ✔") + + print( + f"\n{C.S} Pattern Applied {C.E} {C.OG}➸❥ {C.PN}{len(file_paths)} {C.C}Time/Smali {C.G} ✔\n" + f"\n{C_Line}\n" + ) + + print(f'{C_Line}\n') + + for match in Match_F: + regex = M.re.escape(match) + matching_files, T_P = [], 0 + + Inject_R = rf"invoke-static \{{(.*?)\}}, {regex}[^>]*?move-result-object ([pv]\d+)" + + for file_path in matched_files: + content = open(file_path, 'r', encoding='utf-8', errors='ignore').read() + + matches = list(M.re.finditer(Inject_R, content)) + + if matches: + T_P += 1 + matching_files.append(M.os.path.basename(file_path)) + + if T_P > 0: + print(f"\n{C.S} Method Signature {C.E} {C.OG}➸❥ {C.P}{match}\n") + for file_name in matching_files: + print(f"{C.G} |\n └──── {C.CC}~{C.G}$ {C.Y}{M.os.path.basename(file_name)} {C.G} ✔") + print( + f"\n{C.S} Pattern Applied {C.E} {C.OG}➸❥ {C.PN}{len(matching_files)} {C.C}Time/Smali {C.G} ✔\n" + f"\n{C_Line}\n" + ) + + for file_path in matched_files: + content = open(file_path, 'r', encoding='utf-8', errors='ignore').read() + matches = list(M.re.finditer(Inject_R, content)) + + if matches: + updated_content = content + for m in matches: + invoke_args, result_register = m[1], m[2] + + invoke_args_list = invoke_args.split(", ") + param_count = len(invoke_args_list) + + injected_lines = [] + if param_count == 1: + injected_lines.append(f"invoke-static {{{invoke_args_list[0]}}}, LRK_TECHNO_INDIA/AES;->a(Ljava/lang/Object;)V") + injected_lines.append(f"invoke-static {{{invoke_args}}}, {match}\n move-result-object {result_register}") + injected_lines.append(f"invoke-static {{{result_register}}}, LRK_TECHNO_INDIA/AES;->a(Ljava/lang/Object;)V") + elif param_count > 1: + for idx, param in enumerate(invoke_args_list, start=1): + injected_lines.append(f"invoke-static {{{param}}}, LRK_TECHNO_INDIA/AES;->b{idx}(Ljava/lang/Object;)V") + injected_lines.append(f"invoke-static {{}}, LRK_TECHNO_INDIA/AES;->b()V") + injected_lines.append(f"invoke-static {{{invoke_args}}}, {match}\n move-result-object {result_register}") + injected_lines.append(f"invoke-static {{{result_register}}}, LRK_TECHNO_INDIA/AES;->a(Ljava/lang/Object;)V") + + match_text = m[0] + replacement_text = "\n ".join(injected_lines) + + if match_text in updated_content: + updated_content = updated_content.replace(match_text, replacement_text) + + open(file_path, 'w', encoding='utf-8', errors='ignore').write(updated_content) + + +# ---------------- Copy AES Smali ---------------- +def Copy_AES_Smali(decompile_dir, smali_folders, manifest_path, isAES_MS, isAPKEditor): + + AES_Logs_Inject(decompile_dir, smali_folders) + + if isAES_MS: + if isAPKEditor: + decompile_dir = M.os.path.join(decompile_dir, "smali") + + prefix = "classes" if isAPKEditor else "smali_classes" + + L_S_C_F = M.os.path.join(decompile_dir, f"{prefix}{int(M.os.path.basename(smali_folders[-1])[len(prefix):]) + 1}") + + M.os.makedirs(L_S_C_F, exist_ok=True) + else: + L_S_C_F = smali_folders[-1] + + + # ---------------- Copy AES.smali ---------------- + Target_Dest = M.os.path.join(L_S_C_F, 'RK_TECHNO_INDIA', 'AES.smali') + M.os.makedirs(M.os.path.dirname(Target_Dest), exist_ok=True) + M.shutil.copy(F.AES_Smali, Target_Dest) + + print(f"\n{C.S} Generate {C.E} {C.G}AES.smali {C.OG}➸❥ {C.Y}{M.os.path.relpath(Target_Dest, decompile_dir)} {C.G} ✔") + + + # ---------------- Update Package Name ---------------- + PKG_Name = M.re.search( + r'package="([^"]+)"', + open(manifest_path, 'r', encoding='utf-8', errors='ignore').read() + )[1] + + content = open(Target_Dest, 'r', encoding='utf-8', errors='ignore').read() + + Update_PKG = content.replace('PACKAGENAME', PKG_Name) + + open(Target_Dest, 'w', encoding='utf-8', errors='ignore').write(Update_PKG) + + print(f"{C.G} |\n └── {C.CC}Update Package Name ~{C.G}$ {C.OG}➸❥ {C.P}'{C.G}{PKG_Name}{C.P}' {C.G} ✔\n") \ No newline at end of file diff --git a/ApkPatcher/Patch/Ads_Patch.py b/ApkPatcher/Patch/Ads_Patch.py new file mode 100644 index 0000000..4df0138 --- /dev/null +++ b/ApkPatcher/Patch/Ads_Patch.py @@ -0,0 +1,181 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +C_Line = f"{C.CC}{'_' * 61}" + + +# ---------------- Regex Scan ---------------- +def Regex_Scan(Smali_Path, Target_Regex, Count, Lock): + + Smali = open(Smali_Path, 'r', encoding='utf-8', errors='ignore').read() + + Regexs = [M.re.compile(r) for r in Target_Regex] + + for Regex in Regexs: + + if Regex.search(Smali): + + if Lock: + try: + with Lock: + Count.value += 1 + + print(f"\r{C.S} Find Target Smali {C.E} {C.OG}➸❥ {C.PN}{Count.value}", end='', flush=True) + + except Exception: + return None + + else: + Count[0] += 1 + + print(f"\r{C.S} Find Target Smali {C.E} {C.OG}➸❥ {C.PN}{Count[0]}", end='', flush=True) + + return Smali_Path + + +# ---------------- Ads Smali Patch ---------------- +def Ads_Smali_Patch(smali_folders): + + Smali_Paths, Match_Smali = [], [] + + patterns = [ + ( + r'"(com.google.android.play.core.appupdate.protocol.IAppUpdateService|Theme.Dialog.Alert|com.google.android.play.core.install.BIND_UPDATE_SERVICE)"', + r'""', + "Update Disable" + ), + ( + r'(invoke(?!.*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop)).*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/[^;]+;->(.*(load|show).*)\([^)]*\)V)|(invoke(?!.*(close|Deactiv|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop|Throw)).*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/[^;]+;->(request.*|(.*(activat|Banner|build|Event|exec|header|html|initAd|initi|JavaScript|Interstitial|load|log|MetaData|metri|Native|onAd|propert|report|response|Rewarded|show|trac|url|(fetch|refresh|render|video)Ad).*)|.*Request)\([^)]*\)V)|(invoke(?!.*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop)).*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/[^;]+;->((.*(Banner|initAd|Interstitial|load|Native|onAd|Rewarded|show|(fetch|refresh|render|request|video)Ad).*))\([^)]*\)V)|invoke-.*\{.*\}, L[^;]+;->(loadAd|requestNativeAd|showInterstitial|fetchad|fetchads|onadloaded|requestInterstitialAd|showAd|loadAds|AdRequest|requestBannerAd|loadNextAd|createInterstitialAd|setNativeAd|loadBannerAd|loadNativeAd|loadRewardedAd|loadRewardedInterstitialAd|loadAds|loadAdViewAd|showInterstitialAd|shownativead|showbannerad|showvideoad|onAdFailedToLoad)\([^)]*\)V|invoke-[^{]+ \{[^\}]*\}, Lcom[^;]+;->requestInterstitialAd\([^)]*\)V|invoke-[^{]+ \{[^\}]*\}, Lcom[^;]+;->loadAds\([^)]*\)V|invoke-[^{]+ \{[^\}]*\}, Lcom[^;]+;->loadAd\([^)]*\)V|invoke-[^{]+ \{[^\}]*\}, Lcom[^;]+;->requestBannerAd\([^)]*\)V|invoke-[^{]+ \{[pv]\d\}, Lcom/facebook[^;]+;->show\([^)]*\)V|invoke-[^{]+ \{[pv]\d\}, Lcom/google[^;]+;->show\([^)]*\)V', + r'nop', + "Ads Regex 1" + ), + ( + r'(invoke(?!.*(close|Deactiv|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop|Throw)).*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/[^;]+;->(request.*|(.*(activat|Banner|build|Event|exec|header|html|initAd|initi|JavaScript|Interstitial|load|log|MetaData|metri|Native|(can|get|is|has|was)Ad|propert|report|response|Rewarded|show|trac|url|(fetch|refresh|render|video)Ad).*)|.*Request)\([^)]*\)Z[^>]*?)move-result ([pv]\d+)|(invoke(?!.*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop)).*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/[^;]+;->((.*(Banner|initAd|Interstitial|load|Native|(can|get|has|is|was)Ad|Rewarded|show|(fetch|refresh|render|request|video)Ad).*))\([^)]*\)Z[^>]*?)move-result ([pv]\d+)', + r'const/4 \9, 0x0', + "Ads Regex 2" + ), + ( + r'(invoke(?!.*(close|Destroy|Dismiss|Disabl|error|player|remov|expir|fail|hide|skip|stop)).*/(adcolony|admob|ads|adsdk|aerserv|appbrain|applovin|appodeal|appodealx|appsflyer|bytedance/sdk/openadsdk|chartboost|flurry|fyber|hyprmx|inmobi|ironsource|mbrg|mbridge|mintegral|moat|mobfox|mobilefuse|mopub|my/target|ogury|Omid|onesignal|presage|smaato|smartadserver|snap/adkit|snap/appadskit|startapp|taboola|tapjoy|tappx|vungle)/[^;]+;->(.*(load|show).*)\([^)]*\)Z[^>]*?)move-result ([pv]\d+)', + r'const/4 \6, 0x0', + "Ads Regex 3" + ), + ( + r'(\.method\s(public|private|static)\s\b(?!\babstract|native\b)[^(]*?loadAd\([^)]*\)V)', + r'\1\n\treturn-void', + "Ads Regex 4" + ), + ( + r'(\.method\s(public|private|static)\s\b(?!\babstract|native\b)[^(]*?loadAd\([^)]*\)Z)', + r'\1\n\tconst/4 v0, 0x0\n\treturn v0', + "Ads Regex 5" + ), + ( + r'(invoke[^{]+ \{[^\}]*\}, L[^(]*loadAd\([^)]*\)[VZ])|(invoke[^{]+ \{[^\}]*\}, L[^(]*gms.*\>(loadUrl|loadDataWithBaseURL|requestInterstitialAd|showInterstitial|showVideo|showAd|loadData|onAdClicked|onAdLoaded|isLoading|loadAds|AdLoader|AdRequest|AdListener|AdView)\([^)]*\)V)', + r'#', + "Ads Regex 6" + ), + ( + r'\.method [^(]*(loadAd|requestNativeAd|showInterstitial|fetchad|fetchads|onadloaded|requestInterstitialAd|showAd|loadAds|AdRequest|requestBannerAd|loadNextAd|createInterstitialAd|setNativeAd|loadBannerAd|loadNativeAd|loadRewardedAd|loadRewardedInterstitialAd|loadAds|loadAdViewAd|showInterstitialAd|shownativead|showbannerad|showvideoad|onAdFailedToLoad)\([^)]*\)V\s+\.locals \d+[\s\S]*?\.end method', + r'#', + "Ads Regex 7" + ), + ( + r'"ca-app-pub-\d{16}/\d{10}"', + r'"ca-app-pub-0000000000000000/0000000000"', + "Ads Regex 8" + ), + ( + r'"(http.*|//.*)(61.145.124.238|-ads.|.ad.|.ads.|.analytics.localytics.com|.mobfox.com|.mp.mydas.mobi|.plus1.wapstart.ru|.scorecardresearch.com|.startappservice.com|/ad.|/ads|ad-mail|ad.*_logging|ad.api.kaffnet.com|adc3-launch|adcolony|adinformation|adkmob|admax|admob|admost|adsafeprotected|adservice|adtag|advert|adwhirl|adz.wattpad.com|alta.eqmob.com|amazon-*ads|amazon.*ads|amobee|analytics|applovin|applvn|appnext|appodeal|appsdt|appsflyer|burstly|cauly|cloudfront|com.google.android.gms.ads.identifier.service.START|crashlytics|crispwireless|doubleclick|dsp.batmobil.net|duapps|dummy|flurry|gad|getads|google.com/dfp|googleAds|googleads|googleapis.*.ad-*|googlesyndication|googletagmanager|greystripe|gstatic|inmobi|inneractive|jumptag|live.chartboost.com|madnet|millennialmedia|moatads|mopub|native_ads|pagead|pubnative|smaato|supersonicads|tapas|tapjoy|unityads|vungle|zucks).*"', + r'"="', + "Ads Regex 9" + ), + ( + r'"(http.*|//.*)(61\.145\.124\.238|/2mdn\.net|-ads\.|\.5rocks\.io|\.ad\.|\.adadapted|\.admitad\.|\.admost\.|\.ads\.|\.aerserv\.|\.airpush\.|\.batmobil\.|\.chartboost\.|\.cloudmobi\.|\.conviva\.|\.dov-e\.com|\.fyber\.|\.mng-ads\|\.mydas\.|\.predic\.|\.talkingdata\.|\.tapdaq\.|\.tele\.fm|\.unity3d\.|\.unity\.|\.wapstart\.|\.xdrig\.|\.zapr\.|\/ad\.|\/ads|a4\.tl|accengage|ad4push|ad4screen|ad-mail|ad\..*_logging|ad\.api\.kaffnet\.|ad\.cauly\.co\.|adbuddiz|adc3-launch|adcolony|adfurikun|adincube|adinformation|adkmob|admax\.|admixer|admob|admost|ads\.mdotm\.|adsafeprotected|adservice|adsmogo|adsrvr|adswizz|adtag|adtech\.de|advert|adwhirl|adz\.wattpad\.|alimama\.|alta\.eqmob\.|amazon-.*ads|amazon\..*ads|amobee|analytics|anvato|appboy|appbrain|applovin|applvn|appmetrica|appnext|appodeal|appsdt|appsflyer|apsalar|avocarrot|axonix|banners-slb\.mobile\.yandex\.net|banners\.mobile\.yandex\.net|brightcove\.|burstly|cauly|cloudfront|cmcm\.|com\.google\.android\.gms\.ads\.identifier\.service\.START|comscore|contextual\.media\.net|crashlytics|crispwireless|criteo\.|dmtry\.|doubleclick|duapps|dummy|flurry|fwmrm|gad|getads|gimbal|glispa|google\.com\/dfp|googleAds|googleads|googleapis\..*\.ad-.*|googlesyndication|googletagmanager|greystripe|gstatic|heyzap|hyprmx|iasds01|inmobi|inneractive|instreamatic|integralads|jumptag|jwpcdn|jwpltx|jwpsrv|kochava|localytics|madnet|mapbox|mc\.yandex\.ru|media\.net|metrics\.|millennialmedia|mixpanel|mng-ads\.com|moat\.|moatads|mobclix|mobfox|mobpowertech|moodpresence|mopub|native_ads|nativex\.|nexage\.|ooyala|openx\.|pagead|pingstart|prebid|presage\.io|pubmatic|pubnative|rayjump|saspreview|scorecardresearch|smaato|smartadserver|sponsorpay|startappservice|startup\.mobile\.yandex\.net|statistics\.videofarm\.daum\.net|supersonicads|taboola|tapas|tapjoy|tapylitics|target\.my\.com|teads\.|umeng|unityads|vungle|zucks).*"', + r'"127.0.0.1"', + "Ads Regex 10" + ), + + # ---------------- Fix Play ---------------- + ( + r'(invoke-interface \{[^\}]*\}, Lcom/google/android/vending/licensing/Policy;->allowAccess\(\)Z[^>]*?\s+)move-result ([pv]\d+)', + r'\1const/4 \2, 0x1', + "Bypass Client-Side LVL (allowAccess)" + ), + ( + r'(\.method [^(]*connectToLicensingService\(\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "connectToLicensingService" + ), + ( + r'(\.method [^(]*initializeLicenseCheck\(\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "initializeLicenseCheck" + ), + ( + r'(\.method [^(]*processResponse\(ILandroid/os/Bundle;\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "processResponse" + ) + ] + + Target_Regex = [p[0] for p in patterns] + + for smali_folder in smali_folders: + for root, _, files in M.os.walk(smali_folder): + for file in files: + if file.endswith('.smali'): + Smali_Paths.append(M.os.path.join(root, file)) + + try: + # ---------------- Multiple Threading ---------------- + with M.Manager() as MT: + Count = MT.Value('i', 0); Lock = MT.Lock() + with M.Pool(M.cpu_count()) as PL: + Match_Smali = [path for path in PL.starmap(Regex_Scan, [(Smali_Path, Target_Regex, Count, Lock) for Smali_Path in Smali_Paths]) if path] + + except Exception: + # ---------------- Single Threading ---------------- + Count = [0] + for Smali_Path in Smali_Paths: + result = Regex_Scan(Smali_Path, Target_Regex, Count, None) + + if result: + Match_Smali.append(result) + + print(f" {C.G} ✔", flush=True) + + print(f'\n{C_Line}\n') + + if Match_Smali: + for pattern, replacement, description in patterns: + + Count_Applied = 0 + + Applied_Files = set() + + for file_path in Match_Smali: + + content = open(file_path, 'r', encoding='utf-8', errors='ignore').read() + + new_content = M.re.sub(pattern, replacement, content) + + if new_content != content: + if file_path not in Applied_Files: + Applied_Files.add(file_path) + + Count_Applied += 1 + + open(file_path, 'w', encoding='utf-8', errors='ignore').write(new_content) + + if Count_Applied > 0: + print(f"\n{C.S} Tag {C.E} {C.G}{description}") + + print(f"\n{C.S} Pattern {C.E} {C.OG}➸❥ {C.P}{pattern}") + + for file_path in Applied_Files: + print(f"{C.G} |\n └──── {C.CC}~{C.G}$ {C.Y}{M.os.path.basename(file_path)} {C.G} ✔") + + print( + f"\n{C.S} Pattern Applied {C.E} {C.OG}➸❥ {C.PN}{Count_Applied} {C.C}Time/Smali {C.G} ✔\n" + f"\n{C_Line}\n" + ) \ No newline at end of file diff --git a/ApkPatcher/Patch/CERT_NSC.py b/ApkPatcher/Patch/CERT_NSC.py new file mode 100644 index 0000000..dd603a1 --- /dev/null +++ b/ApkPatcher/Patch/CERT_NSC.py @@ -0,0 +1,187 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + + +# ---------------- Write RAW CERT ---------------- +def Write_CERT(decompile_dir, isAPKEditor, CA_Cert): + + if isAPKEditor: + decompile_dir = M.os.path.join(decompile_dir, 'resources', 'package_1') + + Default_CERT = """\ +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgIHALdlRG+pDzANBgkqhkiG9w0BAQ0FADBHMRswGQYDVQQD +DBJIdHRwQ2FuYXJ5IFJvb3QgQ0ExEzARBgNVBAoMCkh0dHBDYW5hcnkxEzARBgNV +BAsMCkh0dHBDYW5hcnkwHhcNMjIwMzA2MTIxMTAxWhcNMzMwMzAzMTIxMTAxWjBH +MRswGQYDVQQDDBJIdHRwQ2FuYXJ5IFJvb3QgQ0ExEzARBgNVBAoMCkh0dHBDYW5h +cnkxEzARBgNVBAsMCkh0dHBDYW5hcnkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCrzm03w7mMvHujpl0IMb/jgxEwJdUsfpazdgUVdsq+7T/Ks8O3NMFP +d4hl6sUgRbaMx3Uz8WolEtz/wu/fdGnrUVDcdWXiJKfhLUUP3KuYwE9tahrfRf14 +Yg/xGoA8Pz1BEaUnsJSt6RB5qm5fwn2O8QRykAbgr11or2rr8KQWMaoeciN04tjd +kkcWmPWNSytwea7l1LOrolUXGcbFlpXpGY1cTCoB1RZJe7HkUd1zdYhKUlhHZo3P +in9FhGa/UJGlyWXmT3ybY0nuPtIvqJ3Ao4FwP1zkrrqvS0UCi3QvJZrZ8EEju0U9 +NM009njCT6sX56TUG189Dk1uettEiTtlAgMBAAGjZDBiMB0GA1UdDgQWBBT0yJzC +NcHzwIVXMTnvgPp74q1KWjAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBtjAj +BgNVHSUEHDAaBggrBgEFBQcDAQYIKwYBBQUHAwIGBFUdJQAwDQYJKoZIhvcNAQEN +BQADggEBAA9H0nWzKUKKfgu6RI657wVgSONymRRnpzQ+GNjbDoi6CR3QWL8SvPe8 +s61nM8xUP0aMFv0VYrd80sICTQXAEld+/eXoDib7qxg1I2I9v+FkLwPSN2FaJRkv +GKxfki4s6kpNNvmO5X+1eR1fK7Y/lrlp9V7zP8oMbcBuNkiWO6UYNGGGuqxFr3H4 +f4LRvODZks/aGea2E0pdiAnAZCIGZS3Mg5cS7wA5vUSkKwpBIcYFVdYTF/xblJfX +OBoyS7CMCG66aSfs3zk4lT8fVwtFJjvkM01gH3A4q6T78rZ/Nkx01GC90Y1+xDAW +0o1SBaeL3tulFzqhMkl5KW0F3vYpP8k= +-----END CERTIFICATE-----""" + + raw_dir = M.os.path.join(decompile_dir, 'res', 'raw') + + M.os.makedirs(raw_dir, exist_ok=True) + + addCERT = [] + + if CA_Cert: + for idx, cert_path in enumerate(CA_Cert, start=1): + raw_file = f'Techno_India_{idx}.pem' if idx > 1 else 'Techno_India.pem' + M.shutil.copy(cert_path, M.os.path.join(raw_dir, raw_file)) + + addCERT.append(raw_file) + + print( + f"\n{C.S} Certificate {C.E}{C.C} Your Certificate Path...\n" + f"{C.G} |\n |\n └──── {C.CC}Input ~{C.G}#{C.Y} {', '.join(CA_Cert)} {C.G} ✔\n" + ) + + print(f"\n{C.S} Write Certificate {C.E} {C.OG}➸❥ {C.Y}raw/{', '.join(addCERT)} {C.G} ✔\n") + + else: + raw_path = M.os.path.join(raw_dir, 'Techno_India.pem') + + open(raw_path, 'w', encoding='utf-8', errors='ignore').write(Default_CERT) + + print(f"\n{C.S} Certificate {C.E}{C.G} The default certificate is from TechnoIndia's Modded HttpCanary... ✔\n") + + print(f"\n{C.S} Write Default Certificate {C.E} {C.OG}➸❥ {C.Y}{M.os.path.basename(raw_dir)}/Techno_India.pem {C.G} ✔\n") + + +# ---------------- Write NSC XML ---------------- +def Write_NSC(decompile_dir, isAPKEditor, CA_Cert, xml_file='network_security_config.xml'): + + Write_CERT(decompile_dir, isAPKEditor, CA_Cert) + + if isAPKEditor: + decompile_dir = M.os.path.join(decompile_dir, 'resources', 'package_1') + + NSC = """\ + + + + + * + 0.0.0.0 + 127.0.0.1 + + {cert_PlaceHolder} + + + + + + + {cert_PlaceHolder} + + + + + + + {cert_PlaceHolder} + + + + +""" + + cert_Entries = "" + + if CA_Cert: + for idx, _ in enumerate(CA_Cert, start=1): + CERT_Name = f'Techno_India_{idx}' if idx > 1 else 'Techno_India' + cert_Entries += f' \n' + + else: + cert_Entries += ' \n' + + NSC_XML = NSC.format(cert_PlaceHolder = cert_Entries.strip()) + + xml_dir = M.os.path.join(decompile_dir, 'res', 'xml') + + M.os.makedirs(xml_dir, exist_ok=True) + + xml_path = M.os.path.join(xml_dir, xml_file) + + open(xml_path, 'w', encoding='utf-8', errors='ignore').write(NSC_XML) + + print(f"\n{C.S} Write Network Config {C.E} {C.OG}➸❥ {C.Y}{M.os.path.basename(xml_dir)}/{xml_file} {C.G} ✔\n") + + if isAPKEditor: + update_public_xml(decompile_dir, CA_Cert) + + +# ---------------- For isAPKEditor ---------------- +def update_public_xml(decompile_dir, CA_Cert): + + public_xml_path = M.os.path.join(decompile_dir, 'res', 'values', 'public.xml') + + public_xml = open(public_xml_path, 'r', encoding='utf-8', errors='ignore').readlines() + + raw_ids = [] + xml_ids = [] + + raw_xml_regex = M.re.compile(r'') + + raw_found = False + xml_found = False + + for line in public_xml: + for match in raw_xml_regex.findall(line): + res_id = int(match[0], 16) + res_type = match[1] + res_name = match[2] + + if res_type == "raw" and res_name == "Techno_India": + raw_found = True + elif res_type == "xml" and res_name == "network_security_config": + xml_found = True + + if res_type == "raw": + raw_ids.append(res_id) + elif res_type == "xml": + xml_ids.append(res_id) + + if raw_found and xml_found: + return + + new_raw_id = max(raw_ids) + 1 if raw_ids else 0x7fffff01 + new_xml_id = max(xml_ids) + 1 if xml_ids else 0x7ffffff1 + + new_entries = [] + + if not raw_found: + if CA_Cert: + for idx, _ in enumerate(CA_Cert, start=1): + CERT_Name = f'Techno_India_{idx}' if idx > 1 else 'Techno_India' + new_entries.append(f' \n') + new_raw_id += 1 + + else: + new_entries.append(f' \n') + + if not xml_found: + new_entries.append(f' \n') + + for idx in range(len(public_xml)): + if "" in public_xml[idx]: + public_xml[idx:idx] = new_entries + break + + open(public_xml_path, 'w', encoding='utf-8', errors='ignore').writelines(public_xml) + + print(f"\n{C.S} Write New Entries {C.E} {C.OG}➸❥ {C.G}public.xml\n\n{C.OG}{''.join(new_entries).strip()}\n") \ No newline at end of file diff --git a/ApkPatcher/Patch/Flutter_SSL_Patch.py b/ApkPatcher/Patch/Flutter_SSL_Patch.py new file mode 100644 index 0000000..0f277b0 --- /dev/null +++ b/ApkPatcher/Patch/Flutter_SSL_Patch.py @@ -0,0 +1,146 @@ +# -* coding: utf-8 *- +# @auhtor: AbhiTheModder + +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + + +patterns = { + "arm64": [ + "F. 0F 1C F8 F. 5. 01 A9 F. 5. 02 A9 F. .. 03 A9 .. .. .. .. 68 1A 40 F9", + "F. 43 01 D1 FE 67 01 A9 F8 5F 02 A9 F6 57 03 A9 F4 4F 04 A9 13 00 40 F9 F4 03 00 AA 68 1A 40 F9", + "FF 43 01 D1 FE 67 01 A9 .. .. 06 94 .. 7. 06 94 68 1A 40 F9 15 15 41 F9 B5 00 00 B4 B6 4A 40 F9", + "F. 0F 1C F8 F. .. 0. .. .. .. .. .9 .. .. 0. .. 68 1A 40 F9 15 .. 4. F9 B5 00 00 B4 B6 46 40 F9", + ], + "arm": [ + "2D E9 F. 4. D0 F8 00 80 81 46 D8 F8 18 00 D0 F8", + ], + "x86": [ + "55 41 57 41 56 41 55 41 54 53 50 49 89 fe 48 8b 1f 48 8b 43 30 4c 8b b8 d0 01 00 00 4d 85 ff 74 12 4d 8b a7 90 00 00 00 4d 85 e4 74 4a 49 8b 04 24 eb 46", + "55 41 57 41 56 41 55 41 54 53 50 49 89 f. 4c 8b 37 49 8b 46 30 4c 8b a. .. 0. 00 00 4d 85 e. 74 1. 4d 8b", + "55 41 57 41 56 41 55 41 54 53 48 83 EC 18 49 89 FF 48 8B 1F 48 8B 43 30 4C 8B A0 28 02 00 00 4D 85 E4 74", + "55 41 57 41 56 41 55 41 54 53 48 83 EC 38 C6 02 50 48 8B AF A. 00 00 00 48 85 ED 74 7. 48 83 7D 00 00 74", + "55 41 57 41 56 41 55 41 54 53 48 83 EC 18 49 89 FE 4C 8B 27 49 8B 44 24 30 48 8B 98 D0 01 00 00 48 85 DB", + ], +} + + +# ---------------- Get r2 Version ---------------- +def get_r2_version(): + + try: + result = M.subprocess.run(["r2", "-V"], capture_output=True, text=True, check=True) + results = result.stdout.strip().split() + + for result in results: + if result.startswith(("5.", "6.")): + result = result.split("-")[0] + return result + + return None + + except (M.subprocess.CalledProcessError, FileNotFoundError): + return None + + +# ---------------- Find Offset ---------------- +def find_offset(r2, patterns, is_iA=False): + + if is_iA: + arch = M.json.loads(r2.cmd("iAj")) + else: + arch = M.json.loads(r2.cmd("iaj")) + + arch_value = arch["bins"][0]["arch"] + arch_bits = arch["bins"][0]["bits"] + + if arch_value == "arm" and arch_bits == 64: + arch = "arm64" + elif arch_value == "arm" and arch_bits == 16: + arch = "arm" + elif arch_value == "x86" and arch_bits == 64: + arch = "x86" + else: + print(f"\n{C.ERROR} Unsupported architecture: {arch_value}\n") + return + + if arch in patterns: + for arch in patterns: + for pattern in patterns[arch]: + search_result = r2.cmd(f"/x {pattern}") + search_result = search_result.strip().split(" ")[0] + + if search_result: + search_fcn = r2.cmd(f"{search_result};afl.").strip().split(" ")[0] + print(f"\n{C.X}{C.C} ssl_verify_peer_cert found at: {C.PN}{search_result}\n") + + if not search_fcn and arch == "x86": + search_fcn = search_result + r2.cmd(f"af @{search_fcn}") + + print(f"\n{C.X}{C.C} function at: {C.PN}{search_fcn}\n") + return search_fcn + + +# ---------------- Patch Flutter SSL ---------------- +def Patch_Flutter_SSL(decompile_dir, isAPKEditor): + + print(f"\r{C.X}{C.C} Flutter SSL Patch, Script by {C.OG}🇮🇳 AbhiTheM0dder 🇮🇳\n") + + try: + r2_version = tuple(map(int, get_r2_version().split("."))) + ia_version = tuple(map(int, "5.9.5".split("."))) + + if r2_version <= ia_version: + is_iA = True + else: + is_iA = False + + except Exception as e: + exit(f"\n{C.ERROR} {str(e)}\n") + + architectures = ["arm64-v8a", "armeabi-v7a", "armeabi", "x86_64"] + lib_so_path = None + + for arch in architectures: + lib = "root/lib" if isAPKEditor else "lib" + potential_path = M.os.path.join(decompile_dir, lib, arch, 'libflutter.so') + + if M.os.path.exists(potential_path): + lib_so_path = potential_path + break + + if lib_so_path: + print(f"\n{C.S} Found {C.E} {C.OG}➸❥ {C.Y}{arch}/{M.os.path.basename(lib_so_path)} {C.G} ✔\n") + else: + exit(f"\n{C.ERROR} libflutter.so not found in any of the specified architectures {architectures}\n") + + M.shutil.rmtree(decompile_dir) + + import r2pipe + + if r2pipe.in_r2(): + r2 = r2pipe.open() + r2.cmd("e log.quiet=true") + r2.cmd("oo+") + else: + r2 = r2pipe.open(lib_so_path, flags=["-w", "-e", "log.quiet=true"]) + + print(f"\n{C.X}{C.G} Analyzing function calls...\n") + + r2.cmd("aac") + + print(f"\n{C.X}{C.G} Searching for offset...\n") + + offset = find_offset(r2, patterns, is_iA) + + if offset: + r2.cmd(f"{offset}") + r2.cmd("wao ret0") + print(f"\n{C.X}{C.C} ssl_verify_peer_cert: {C.G}Patched Successfully ! ✔\n") + else: + print(f"\n{C.ERROR} ssl_verify_peer_cert Not Found. ✘\n") + + print(f"{C.CC}{'_' * 61}\n\n") + + r2.quit() \ No newline at end of file diff --git a/ApkPatcher/Patch/Manifest_Patch.py b/ApkPatcher/Patch/Manifest_Patch.py new file mode 100644 index 0000000..ac69313 --- /dev/null +++ b/ApkPatcher/Patch/Manifest_Patch.py @@ -0,0 +1,172 @@ +from.Package import P + +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + + +# ---------------- Fix Manifest ---------------- +def Fix_Manifest(manifest_path, isPKG, isPine_Hook, Package_Name): + + if isPine_Hook: + Pine_Hook(manifest_path, Package_Name) + + isPC = bool(M.re.search('piracychecker', open(manifest_path).read(), M.re.I)) + + patterns = [ + ( + r'\s+android:(splitTypes|requiredSplitTypes)="[^"]*?"', + r'', + 'Splits' + ), + ( + r'(isSplitRequired=)"true"', + r'\1"false"', + 'isSplitRequired' + ), + ( + r'\s+]*"com.android.(vending.|stamp.|dynamic.apk.)[^"]*"[^>]*/>', + r'', + '' + ), + ( + r'\s+<[^>]*"(com.pairip.licensecheck)[^"]*"[^>]*/>' if isPC else r'\s+<[^>]*"com.(pairip.licensecheck|android.vending.CHECK_LICENSE)[^"]*"[^>]*/>', + r'', + 'CHECK_LICENSE' + ) + ] + + if isPKG: + patterns.extend( + [ + ( + rf'{P.Menifest_Regex}', + r'', + 'Spoof Package Detection' + ) + ] + ) + + for pattern, replacement, description in patterns: + content = open(manifest_path, 'r', encoding='utf-8', errors='ignore').read() + new_content = M.re.sub(pattern, replacement, content) + + if new_content != content: + print( + f"\n{C.S} Tag {C.E} {C.OG}{description}\n" + f"\n{C.S} Applying Pattern {C.E} {C.OG}➸❥ {C.P}{pattern}\n" + f"{C.G} |\n └──── {C.CC}Patch Cleaned Up ~{C.G}$ {C.P}'{C.G}{M.os.path.basename(manifest_path)}{C.P}' {C.G} ✔\n" + ) + + open(manifest_path, 'w', encoding='utf-8', errors='ignore').write(new_content) + + +# ---------------- Patch Manifest ---------------- +def Patch_Manifest(decompile_dir, manifest_path): + + content = open(manifest_path, 'r', encoding='utf-8', errors='ignore').read() + + application_tag = M.re.search(r']*>', content)[0] + + cleaned_tag = M.re.sub( + r'\s+android:(usesCleartextTraffic|networkSecurityConfig)="[^"]*?"', + '', + application_tag + ) + + content = content.replace(application_tag, + M.re.sub( + r'>', + '\n\tandroid:usesCleartextTraffic="true"\n\tandroid:networkSecurityConfig="@xml/network_security_config">', + cleaned_tag + ) + ) + + open(manifest_path, 'w', encoding='utf-8', errors='ignore').write(content) + + print(f'\n{C.S} Updated {C.E}{C.C} android:networkSecurityConfig={C.P}"{C.G}@xml/network_security_config{C.P}" {C.OG}➸❥ {C.Y}{M.os.path.basename(manifest_path)} {C.G} ✔\n') + + print(f'\n{C.S} Updated {C.E}{C.C} android:usesCleartextTraffic={C.P}"{C.G}true{C.P}" {C.OG}➸❥ {C.Y}{M.os.path.basename(manifest_path)} {C.G} ✔\n') + + +# ---------------- Permission Manifest ---------------- +def Permission_Manifest(decompile_dir, manifest_path, isAPKEditor): + + A_Y_P = M.os.path.join(decompile_dir, 'apktool.yml') + + content = open(manifest_path, 'r', encoding='utf-8', errors='ignore').read() + + new_permissions = '''\t\n\t\n\t''' + + content = M.re.sub( + r'\s+]*android:name="(android.permission.((READ|WRITE|MANAGE)_EXTERNAL_STORAGE))"[^>]*>', + '', + content + ) + + content = M.re.sub( + r'android:targetSdkVersion="\d+"', + 'android:targetSdkVersion="28"', + content + ) + + content = M.re.sub( + r'(]*>)', + r'\1\n' + new_permissions, + content + ) + + application_tag = M.re.search(r']*>', content)[0] + + cleaned_tag = M.re.sub( + r'\s+android:(request|preserve)LegacyExternalStorage="[^"]*?"', + '', + application_tag + ) + + content = content.replace(application_tag, + M.re.sub( + r'>', + '\n\tandroid:requestLegacyExternalStorage="true"\n\tandroid:preserveLegacyExternalStorage="true">', + cleaned_tag + ) + ) + + open(manifest_path, 'w', encoding='utf-8', errors='ignore').write(content) + + print(f"\n{C.S} Storage Permission {C.E} {C.OG}➸❥ {C.P}'{C.G}AndroidManifest.xml{C.P}' {C.G} ✔\n") + + if not isAPKEditor: + yml = open(A_Y_P, 'r', encoding='utf-8', errors='ignore').read() + + update_yml = M.re.sub( + r'(targetSdkVersion:) (\d+)', + r'\1 28', + yml + ) + + open(A_Y_P, 'w', encoding='utf-8', errors='ignore').write(update_yml) + + print(f"\n{C.S} targetSdkVersion {C.E} {C.PN}28 {C.OG}➸❥{C.G} apktool.yml\n") + + +# ---------------- Pine Hook ---------------- +def Pine_Hook(manifest_path, Package_Name): + + content = open(manifest_path, 'r', encoding='utf-8', errors='ignore').read() + + provider = f''' + ''' + + content = M.re.sub( + r'(]*>)', + rf'\1{provider}', + content + ) + + open(manifest_path, 'w', encoding='utf-8', errors='ignore').write(content) + + print(f'\n{C.S} HooK Manifest {C.E}\n{C.PN} {provider} {C.G} ✔\n') \ No newline at end of file diff --git a/ApkPatcher/Patch/Package.py b/ApkPatcher/Patch/Package.py new file mode 100644 index 0000000..45f2f72 --- /dev/null +++ b/ApkPatcher/Patch/Package.py @@ -0,0 +1,26 @@ +from ..MODULES import IMPORT; M = IMPORT() + + +class P: + # ---------------- Spoof Package Detection ---------------- + Find_String = ['com.noshufou.android.su.elite', 'com.noshufou.android.su', 'eu.chainfire.supersu', 'com.koushikdutta.superuser', 'com.thirdparty.superuser', 'com.yellowes.su', 'com.topjohnwu.magisk', 'com.kingroot.kinguser', 'com.kingo.root', 'com.smedialink.oneclickroot', 'com.zhiqupk.root.global', 'com.alephzain.framaroot', 'com.koushikdutta.rommanager.license', 'com.koushikdutta.rommanager', 'com.dimonvideo.luckypatcher', 'com.chelpus.lackypatch', 'com.ramdroid.appquarantinepro', 'com.ramdroid.appquarantine', 'com.android.vending.billing.InAppBillingService.COIN', 'com.android.vending.billing.InAppBillingService.LUCK', 'com.chelpus.luckypatcher', 'com.blackmartalpha', 'org.blackmart.market', 'com.allinone.free', 'com.repodroid.app', 'org.creeplays.hack', 'com.baseappfull.fwd', 'com.zmapp', 'com.dv.marketmod.installer', 'org.mobilism.android', 'com.android.wp.net.log', 'com.android.camera.update', 'cc.madkite.freedom', 'com.solohsu.android.edxp.manager', 'org.meowcat.edxposed.manager', 'com.xmodgame', 'com.cih.game_cih', 'com.charles.lpoqasert', 'catch_.me_.if_.you_.can_', 'com.devadvance.rootcloakplus', 'com.devadvance.rootcloak', 'com.saurik.substrate', 'com.zachspong.temprootremovejb', 'com.amphoras.hidemyrootadfree', 'com.amphoras.hidemyroot', 'com.formyhm.hiderootPremium', 'com.formyhm.hideroot', 'me.weishu.exp', 'moe.shizuku.privileged.', 'com.guoshi.httpcanary.premium', 'com.guoshi.httpcanary', 'com.reqable.android', 'com.network.proxy', 'com.sniffer3', 'com.sniffer2', 'com.sniffer', 'com.datacapture.pro', 'com.black.canary', 'org.httpcanary.pro', 'app.greyshirts.sslcapture', 'com.evbadroid.proxymon', 'com.minhui.networkcapture.pro', 'com.minhui.networkcapture', 'com.minhui.wifianalyzer', 'com.packagesniffer.frtparlak', 'com.evbadroid.wicapdemo', 'jp.co.taosoftware.android.packetcapture', 'com.andriell.multicast_sniffer', 'com.emanuelef.remote_capture', 'de.stefanpledl.localcast', 'bin.mt.plus.canary', 'bin.mt.plus', 'ru.maximoff.apktool', 'idm.internet.download.manager.plus', 'idm.internet.download.manager', 'com.applisto.appcloner', 'org.lsposed.lspatch', 'me.jsonet.jshook', 'br.tiagohm.restler', 'com.replit.app', 'io.virtualapp', 'de.robv.android.xposed'] + + Match_Regex = f'"({"|".join(Find_String[:-1])}|{Find_String[-1]}.*)"' + + Menifest_Regex = rf'(\s+]*android:name={Match_Regex}[^>]*/>)' + + + # ---------------- Generate Hash ---------------- + def Hash(self, CA_Cert): + + from asn1crypto import x509 + + f = open(CA_Cert,'rb').read() + + if f.startswith(b'-----'): f = M.base64.b64decode(''.join(f.decode().splitlines()[1:-1])) + CERT = x509.Certificate.load(f)['tbs_certificate']['subject_public_key_info'].dump() + + sha1 = M.base64.b64encode(M.hashlib.sha1(CERT).digest()).decode() + sha256 = M.base64.b64encode(M.hashlib.sha256(CERT).digest()).decode() + + return sha1, sha256 \ No newline at end of file diff --git a/ApkPatcher/Patch/Pairip_CoreX.py b/ApkPatcher/Patch/Pairip_CoreX.py new file mode 100644 index 0000000..1cea4eb --- /dev/null +++ b/ApkPatcher/Patch/Pairip_CoreX.py @@ -0,0 +1,77 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +from ApkPatcher.Utils.Files_Check import FileCheck + +F = FileCheck(); F.Set_Path() + + +# ---------------- Check CoreX ---------------- +def Check_CoreX(decompile_dir, isAPKEditor): + + Lib_CoreX = [] + + lib_paths = M.os.path.join(decompile_dir, + *( + ['root', 'lib', 'arm64-v8a'] if isAPKEditor else ['lib', 'arm64-v8a'] + ) + ) + + for target_file in ['lib_Pairip_CoreX.so', 'libFirebaseCppApp.so']: + + if M.os.path.isfile(M.os.path.join(lib_paths, target_file)): + + Lib_CoreX.append(f"{C.G}{target_file} ➸❥ {C.P}arm64-v8a") + + if Lib_CoreX: + print(f"{C.INFO}{C.C} Already Added {C.OG}➸❥ {f' {C.OG}& '.join(Lib_CoreX)} {C.G} ✔\n") + + return True + return False + + +# ---------------- HooK CoreX ---------------- +def Hook_Core(apk_path, decompile_dir, isAPKEditor, Package_Name): + + with M.zipfile.ZipFile(apk_path, 'r') as zf: + base_apk = "base.apk" if "base.apk" in zf.namelist() else f"{Package_Name}.apk" + + try: + if M.os.name == 'nt' and M.shutil.which("7z"): + M.subprocess.run(["7z", "e", apk_path, base_apk, "-y"], text=True, capture_output=True) + + with M.zipfile.ZipFile(apk_path) as zf: + zf.extract(base_apk) + + else: + if M.shutil.which("unzip"): + M.subprocess.run(["unzip", "-o", apk_path, base_apk], text=True, capture_output=True) + + with M.zipfile.ZipFile(apk_path) as zf: + zf.extract(base_apk) + + print(f'\n{C.S} Dump {C.E} {C.G}➸❥ {C.OG}{base_apk}\n') + + Dump_Apk = "libFirebaseCppApp.so" + + M.os.rename(base_apk, Dump_Apk) + + lib_paths = M.os.path.join(decompile_dir, + *( + ['root', 'lib', 'arm64-v8a'] if isAPKEditor else ['lib', 'arm64-v8a'] + ) + ) + + print(f"\n{C.S} Arch {C.E} {C.G}➸❥ arm64-v8a\n") + + M.shutil.move(Dump_Apk, lib_paths); M.shutil.copy(F.Pairip_CoreX, lib_paths); + + print( + f'\n{C.S} HooK {C.E} {C.G}➸❥ {C.OG}libFirebaseCppApp.so {C.G} ✔\n' + f'\n{C.S} HooK {C.E} {C.G}➸❥ {C.OG}lib_Pairip_CoreX.so {C.G} ✔\n' + ) + + return True + + except Exception as e: + print(f"\n{C.ERROR} {e} ✘") \ No newline at end of file diff --git a/ApkPatcher/Patch/Pine_Hook.py b/ApkPatcher/Patch/Pine_Hook.py new file mode 100644 index 0000000..b2b645d --- /dev/null +++ b/ApkPatcher/Patch/Pine_Hook.py @@ -0,0 +1,63 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +from ApkPatcher.Utils.Files_Check import FileCheck + +F = FileCheck(); F.Set_Path() + + +# ---------------- Pine Hook Patch ---------------- +def Pine_Hook_Patch(decompile_dir, isAPKEditor, isModules, isDex): + + print(f"{C.X}{C.C} Pine HooK, {C.OG}🇮🇳 AbhiTheM0dder 🇮🇳 {C.PN}& {C.OG}残页 {C.P}(canyie)\n") + + Target_Path = M.os.path.join(decompile_dir, + *( + ['root', 'hook'] if isAPKEditor else ['unknown', 'hook'] + ) + ) + + Dex_Path = M.os.path.join(decompile_dir, + *( + ['dex'] if isAPKEditor else [] + ) + ) + + # ---------------- Hook dexloader ---------------- + Loader_Dex = M.os.path.join(Dex_Path, isDex) + + M.shutil.copy(F.loader, Loader_Dex) + + print(f'\n{C.S} Loader {C.E} {C.G}➸❥ {C.OG}{isDex} {C.G} ✔\n') + + + # ---------------- Hook library ---------------- + if not M.os.path.exists(Target_Path): + M.os.makedirs(Target_Path) + + print(f'\n{C.S} Target Path {C.E} {C.G}➸❥ hook\n') + + for Target_Files in [F.config, F.libpine32, F.libpine64]: + + M.shutil.copy(Target_Files, Target_Path) + + print(f'\n{C.S} HooK {C.E} {C.G}➸❥ {C.OG}{M.os.path.basename(Target_Files)} {C.G} ✔\n') + + + # ---------------- isModules ---------------- + if isModules: + + Modules_Path = M.os.path.join(Target_Path, 'modules') + + if not M.os.path.exists(Modules_Path): + M.os.makedirs(Modules_Path) + + print(f"\n{C.S} Modules Path {C.E} {C.G}➸❥ hook/modules\n") + + Module_List = isModules if isinstance(isModules, (list, tuple)) else [isModules] + + for Modules in Module_List: + if M.os.path.exists(Modules): + M.shutil.copy(Modules, Modules_Path) + + print(f'\n{C.S} Module {C.E} {C.G}➸❥ {C.OG}{M.os.path.basename(Modules)} {C.G} ✔\n') \ No newline at end of file diff --git a/ApkPatcher/Patch/Random_INFO.py b/ApkPatcher/Patch/Random_INFO.py new file mode 100644 index 0000000..3dad2dc --- /dev/null +++ b/ApkPatcher/Patch/Random_INFO.py @@ -0,0 +1,3616 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + + +# ---------------- Random Info ---------------- +class R_I: + + def __init__(self): + + self.device_info_list = [ + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "SM-G973F", + "PRODUCT": "beyond1lte", + "DEVICE": "beyond1", + "BOARD": "universal9820", + "HARDWARE": "exynos9820", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "G973FXXS9DUE3", + "SERIAL": "23HJ9G7TR8XQ", + "DISPLAY": "G973F_11.0.3.1234", + "HOST": "buildhost01", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "E973FGH345", + "FINGERPRINT": "Samsung/SM-G973F/beyond1lte:11/RP1A.200720.012/G973FXXS9DUE3:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Redmi", + "MODEL": "M2101K7AI", + "PRODUCT": "mojito_in", + "DEVICE": "mojito", + "BOARD": "sdm732", + "HARDWARE": "qcom", + "ID": "RKQ1.211103.002", + "Android_Version": "12", + "BOOTLOADER": "02022323_mjto1_in", + "SERIAL": "XMAI9901123", + "DISPLAY": "Redmi_12.5.6_Stable", + "HOST": "build_xiaomi_server", + "RADIO": "SDX55_5G", + "RADIO_VERSION": "QVCN012344", + "FINGERPRINT": "Redmi/M2101K7AI/mojito_in:12/RKQ1.211103.002/Stable1234:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 6", + "PRODUCT": "raven", + "DEVICE": "raven", + "BOARD": "gs101", + "HARDWARE": "tensor", + "ID": "SP2A.220505.002", + "Android_Version": "13", + "BOOTLOADER": "4110R0R0.1201", + "SERIAL": "GGLX20233011", + "DISPLAY": "Pixel_6_13.0.1_Raven", + "HOST": "google_cloud_13", + "RADIO": "Tensor_LTE_5G", + "RADIO_VERSION": "RV600_12034_Stable", + "FINGERPRINT": "Google/Pixel6/raven:13/SP2A.220505.002/Raven1203:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "IN2023", + "PRODUCT": "OnePlus8Pro", + "DEVICE": "instantnoodle", + "BOARD": "kona", + "HARDWARE": "qcom", + "ID": "IN2023_14.5.0", + "Android_Version": "13", + "BOOTLOADER": "IN2023_1505_Stable", + "SERIAL": "OP8820237744", + "DISPLAY": "IN2023_14.5.0_Stable", + "HOST": "buildserver_oppo", + "RADIO": "Qualcomm_X55_5G", + "RADIO_VERSION": "X555G2345IN2023", + "FINGERPRINT": "OnePlus/IN2023/instantnoodle:13/IN2023_14.5.0/K.5a75b18-40234/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "V2025", + "PRODUCT": "vivo_y70", + "DEVICE": "Y70T2025", + "BOARD": "mt6765", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "V2025_3.5.1_LTS", + "SERIAL": "VVV102548774X", + "DISPLAY": "Vivo_Y70_11.0.6.8", + "HOST": "vivo_buildserver", + "RADIO": "MT6765_LTE", + "RADIO_VERSION": "MT6765_4556L", + "FINGERPRINT": "Vivo/V2025/vivo_y70:11/RP1A.200720.012/Build344:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "RMX3381", + "PRODUCT": "RealmeGTNeo2", + "DEVICE": "neo2", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "RMX3381_12.1.0.140", + "Android_Version": "12", + "BOOTLOADER": "RMX3381_1201_Stable", + "SERIAL": "RMTX778999345", + "DISPLAY": "RMX3381_12.1.140_EX", + "HOST": "build_realme_server", + "RADIO": "X50_ProModem", + "RADIO_VERSION": "RQ_12034_Stable", + "FINGERPRINT": "Realme/RMX3381/RealmeGTNeo2:12/RMX3381_12.1.0.140/K.5a75b18-4234/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Moto", + "MODEL": "XT2201-1", + "PRODUCT": "Edge30Pro", + "DEVICE": "ranger", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "TP1A.220905.004", + "Android_Version": "13", + "BOOTLOADER": "XT2201-4_T13_Official", + "SERIAL": "MOTX1234489933", + "DISPLAY": "XT2201_13.0.2", + "HOST": "motorola_build_center", + "RADIO": "Moto_LTE_5G", + "RADIO_VERSION": "Moto_3456XT20", + "FINGERPRINT": "Motorola/XT2201-1/Edge30Pro:13/TP1A.220905.004/K.5a75b18-45234/release-keys" + }, + { + "MANUFACTURER": "Sony", + "BRAND": "Xperia", + "MODEL": "XQ-BC62", + "PRODUCT": "Xperia1III", + "DEVICE": "XQBC", + "BOARD": "qcom", + "HARDWARE": "Snapdragon888", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "XQBCX_3.8.9_Official", + "SERIAL": "SN12345678123", + "DISPLAY": "Xperia1III_12.5.1", + "HOST": "sony_global_host", + "RADIO": "Snapdragon_LTE", + "RADIO_VERSION": "SND8884_30054", + "FINGERPRINT": "Sony/XQ-BC62/Xperia1III:12/SP1A.210812.016/K.5a95b18-45234/release-keys" + }, + { + "MANUFACTURER": "LG", + "BRAND": "LG", + "MODEL": "LM-G910", + "PRODUCT": "LGV60ThinQ5G", + "DEVICE": "LG-G910", + "BOARD": "QSC9871", + "HARDWARE": "qcom", + "ID": "QP1A.190711.020", + "Android_Version": "11", + "BOOTLOADER": "LM-G910_3.6.7", + "SERIAL": "LGVV123459993", + "DISPLAY": "LGV60_11.3.9_LTS", + "HOST": "lg_us_host", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "X60LG4459", + "FINGERPRINT": "LG/LM-G910/LG-V60:11/QP1A.190711.020/L.5a95b18-45234/release-keys" + }, + { + "MANUFACTURER": "ASUS", + "BRAND": "ASUS", + "MODEL": "ROG Phone 6", + "PRODUCT": "ROG6", + "DEVICE": "ASUS_I005D", + "BOARD": "sdm888+", + "HARDWARE": "qcom", + "ID": "SP2A.220405.003", + "Android_Version": "12", + "BOOTLOADER": "I005D_12.0.1_Stable", + "SERIAL": "AS1239994567", + "DISPLAY": "ROG6_12.1.0_Global", + "HOST": "asus_server_global", + "RADIO": "X65_LTE_5G", + "RADIO_VERSION": "QCM123456ASUS", + "FINGERPRINT": "ASUS/ROG6/ASUS_I005D:12/SP2A.220405.003/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Huawei", + "BRAND": "Huawei", + "MODEL": "P40 Pro", + "PRODUCT": "P40Pro", + "DEVICE": "HWANA", + "BOARD": "kirin990_5g", + "HARDWARE": "hisilicon", + "ID": "10.1.0.122", + "Android_Version": "10", + "BOOTLOADER": "HW_P40Pro_5.1.2", + "SERIAL": "HW12345678901", + "DISPLAY": "P40Pro_EMUI10.1", + "HOST": "huawei_global_build", + "RADIO": "Kirin_5GModem", + "RADIO_VERSION": "5G123HUAWEI", + "FINGERPRINT": "Huawei/P40Pro/HWANA:10/10.1.0.122/L.15c95b18-45234/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Realme", + "MODEL": "RMX3471", + "PRODUCT": "RealmeNarzo50", + "DEVICE": "RMX3471", + "BOARD": "mt6781", + "HARDWARE": "mediatek", + "ID": "RMX3471_11.0.6", + "Android_Version": "11", + "BOOTLOADER": "RMX3471_11.2.5", + "SERIAL": "RMZ1234567098", + "DISPLAY": "Narzo50_11.6_LTS", + "HOST": "oppo_build_server", + "RADIO": "MT5G_Modem", + "RADIO_VERSION": "MTK123REALME", + "FINGERPRINT": "Oppo/RMX3471/RealmeNarzo50:11/RMX3471_11.0.6/L.15c96b18-45234/release-keys" + }, + { + "MANUFACTURER": "Lenovo", + "BRAND": "Motorola", + "MODEL": "XT2125", + "PRODUCT": "MotoGPower2022", + "DEVICE": "CapriPlus", + "BOARD": "MT6739", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.010", + "Android_Version": "11", + "BOOTLOADER": "XT2125_11.5.1", + "SERIAL": "MOT12345678G9", + "DISPLAY": "MotoG_2022_LTS", + "HOST": "motorola_host_global", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTKCAPRI_MOTOROLA", + "FINGERPRINT": "Motorola/XT2125/MotoGPower2022:11/RP1A.200720.010/L.15c96b18-45234/release-keys" + }, + { + "MANUFACTURER": "Honor", + "BRAND": "Honor", + "MODEL": "HRY-LX2", + "PRODUCT": "Honor9XLite", + "DEVICE": "HRYLX", + "BOARD": "kirin710", + "HARDWARE": "hisilicon", + "ID": "9.1.0.330", + "Android_Version": "9", + "BOOTLOADER": "HRY-LX2_BKL", + "SERIAL": "HN9876543219", + "DISPLAY": "Honor9X_EMUI9.1", + "HOST": "honor_build_server", + "RADIO": "Kirin710_4GModem", + "RADIO_VERSION": "HISI123456HONOR", + "FINGERPRINT": "Honor/HRY-LX2/Honor9XLite:9/9.1.0.330/L.15c96b18-45134/release-keys" + }, + { + "MANUFACTURER": "ZTE", + "BRAND": "Nubia", + "MODEL": "NX669J", + "PRODUCT": "RedMagic6SPro", + "DEVICE": "NX669", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "NX669_12.0.3", + "SERIAL": "ZTE0001239999", + "DISPLAY": "RedMagic6_Pro_12", + "HOST": "zte_global_build", + "RADIO": "Snapdragon_LTE5G", + "RADIO_VERSION": "SDM123REDMAGIC", + "FINGERPRINT": "ZTE/NX669J/RedMagic6SPro:12/SP1A.210812.016/L.15c96b18-78134/release-keys" + }, + { + "MANUFACTURER": "HTC", + "BRAND": "HTC", + "MODEL": "2Q9S100", + "PRODUCT": "HTC_U20", + "DEVICE": "HTCU20", + "BOARD": "mt6853", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.011", + "Android_Version": "11", + "BOOTLOADER": "HTC_2Q9S_1102", + "SERIAL": "HTC5671234001", + "DISPLAY": "HTC_U20_5G", + "HOST": "htc_dev_server", + "RADIO": "MT6853_Modem", + "RADIO_VERSION": "MTKM123HTC5G", + "FINGERPRINT": "HTC/2Q9S100/HTCU20:11/RP1A.200720.011/L.15c96b19-78134/release-keys" + }, + { + "MANUFACTURER": "Nokia", + "BRAND": "Nokia", + "MODEL": "TA-1357", + "PRODUCT": "NokiaC30", + "DEVICE": "Magnetar", + "BOARD": "SC9863A", + "HARDWARE": "unisoc", + "ID": "RP1A.200720.010", + "Android_Version": "11", + "BOOTLOADER": "TA-1357_LTS", + "SERIAL": "NKC1357891230", + "DISPLAY": "NokiaC30_11.0.1", + "HOST": "nokia_build_server", + "RADIO": "UNISOC_LTE", + "RADIO_VERSION": "UNSC986NOKIA", + "FINGERPRINT": "Nokia/TA-1357/NokiaC30:11/RP1A.200720.010/Stable:user/release-keys" + }, + { + "MANUFACTURER": "TCL", + "BRAND": "Alcatel", + "MODEL": "9021G", + "PRODUCT": "Alcatel1SE", + "DEVICE": "1SE2020", + "BOARD": "mt6762", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.013", + "Android_Version": "10", + "BOOTLOADER": "9021G_10.1.0", + "SERIAL": "TCL1230009981", + "DISPLAY": "Alcatel_1SE_10", + "HOST": "alcatel_server_build", + "RADIO": "MTK_LTE4G", + "RADIO_VERSION": "MTKM1234ALCATEL", + "FINGERPRINT": "TCL/9021G/Alcatel1SE:10/RP1A.200720.013/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "V2151", + "PRODUCT": "Vivo_Y33s", + "DEVICE": "Vivo_Y33s", + "BOARD": "mt6769v", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "Vivo_V2151_1205", + "SERIAL": "VV9987123004", + "DISPLAY": "Vivo_Y33s_12.5_LTS", + "HOST": "vivo_global_server", + "RADIO": "MTK5G_LTE", + "RADIO_VERSION": "MTKM1234VIVO", + "FINGERPRINT": "Vivo/V2151/Vivo_Y33s:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "MI 11X", + "PRODUCT": "aliothin", + "DEVICE": "alioth", + "BOARD": "SM8250", + "HARDWARE": "qcom", + "ID": "RP1A.200720.010", + "Android_Version": "11", + "BOOTLOADER": "alioth_11.0.3", + "SERIAL": "XIAO1234567890", + "DISPLAY": "MI11X_11.0.3", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55", + "FINGERPRINT": "Xiaomi/MI 11X/aliothin:11/RP1A.200720.010/Stable:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO 9", + "PRODUCT": "V2163A", + "DEVICE": "V2163", + "BOARD": "SM8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "iQOO_9_12.0.6", + "SERIAL": "IQ1234567890", + "DISPLAY": "iQOO9_12.0.6", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X65", + "RADIO_VERSION": "X65QCOM", + "FINGERPRINT": "iQOO/V2163A/iQOO 9:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy S22", + "PRODUCT": "s22_exynos", + "DEVICE": "s22", + "BOARD": "Exynos2200", + "HARDWARE": "exynos", + "ID": "SP1A.210812.016", + "IMEI": "351561161736307", + "Android_Version": "12", + "BOOTLOADER": "S22_12.0.4", + "SERIAL": "SAMSUNG12345", + "DISPLAY": "S22_12.0.4", + "HOST": "samsung_global_build", + "RADIO": "Exynos_5G", + "RADIO_VERSION": "Exynos_2200", + "FINGERPRINT": "Samsung/Galaxy S22/s22_exynos:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 7", + "PRODUCT": "panther", + "DEVICE": "panther", + "BOARD": "gs101", + "HARDWARE": "tensor", + "ID": "SP2A.220505.002", + "Android_Version": "13", + "BOOTLOADER": "panther_13.0.1", + "SERIAL": "GOOGLE987654321", + "DISPLAY": "Pixel7_13.0.1", + "HOST": "google_build_server", + "RADIO": "Tensor_5G", + "RADIO_VERSION": "Tensor_5G_01", + "FINGERPRINT": "Google/Pixel7/panther:13/SP2A.220505.002/Stable:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 10 Pro", + "PRODUCT": "OnePlus10Pro", + "DEVICE": "instantly", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "OnePlus10Pro_12.1.0", + "SERIAL": "OP12345678910", + "DISPLAY": "OnePlus10Pro_12.1.0", + "HOST": "oneplus_build_server", + "RADIO": "X55_LTE_5G", + "RADIO_VERSION": "X55_QCOM_OnePlus", + "FINGERPRINT": "OnePlus/OnePlus 10 Pro/instantly:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Edge 20 Pro", + "PRODUCT": "MotorolaEdge20Pro", + "DEVICE": "motorola_edge", + "BOARD": "SM8250", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "Edge20Pro_11.0.5", + "SERIAL": "MOT1234567890", + "DISPLAY": "Edge20Pro_11.0.5", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X55_5G", + "RADIO_VERSION": "Moto_X55_Stable", + "FINGERPRINT": "Motorola/Edge 20 Pro/motorola_edge:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Nothing", + "BRAND": "Nothing", + "MODEL": "Phone 1", + "PRODUCT": "A065", + "DEVICE": "A065", + "BOARD": "SM8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "Nothing_12.0.4", + "SERIAL": "NO1234567890", + "DISPLAY": "Phone1_12.0.4", + "HOST": "nothing_global", + "RADIO": "Snapdragon_5G", + "RADIO_VERSION": "5G_Snapdragon", + "FINGERPRINT": "Nothing/Phone 1/A065:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme GT", + "PRODUCT": "RMX2202", + "DEVICE": "GT", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "RMX2202_11.2.4", + "SERIAL": "RMX220212345", + "DISPLAY": "Realme_GT_11.2.4", + "HOST": "realme_build_server", + "RADIO": "X55_LTE_5G", + "RADIO_VERSION": "QCOM_X55", + "FINGERPRINT": "Realme/RMX2202/Realme GT:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "V21e", + "PRODUCT": "V21e", + "DEVICE": "Vivo_V21e", + "BOARD": "mt6769v", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.010", + "Android_Version": "11", + "BOOTLOADER": "V21e_11.2.0", + "SERIAL": "VV9876543210", + "DISPLAY": "Vivo_V21e_11.2.0", + "HOST": "vivo_build_server", + "RADIO": "MT6769_LTE", + "RADIO_VERSION": "MTK_LTE_VIVO", + "FINGERPRINT": "Vivo/V21e/Vivo_V21e:11/RP1A.200720.010/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "OPPO Reno 5", + "PRODUCT": "CPH2145", + "DEVICE": "Reno5", + "BOARD": "sm7125", + "HARDWARE": "qcom", + "ID": "SP2A.220505.002", + "Android_Version": "12", + "BOOTLOADER": "CPH2145_12.0.5", + "SERIAL": "OPPO987654321", + "DISPLAY": "OPPO_Reno5_12.0.5", + "HOST": "oppo_build_server", + "RADIO": "X55_LTE_5G", + "RADIO_VERSION": "QCOM_X55_OPPO", + "FINGERPRINT": "Oppo/CPH2145/Reno5:12/SP2A.220505.002/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Redmi Note 10", + "PRODUCT": "mojito", + "DEVICE": "mojito", + "BOARD": "SM7150", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "mojito_11.0.5", + "SERIAL": "XM1234567890", + "DISPLAY": "RedmiNote10_11.0.5", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55", + "FINGERPRINT": "Xiaomi/Redmi Note 10/mojito:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO Z6", + "PRODUCT": "V2163A", + "DEVICE": "V2163", + "BOARD": "sm6150", + "HARDWARE": "qcom", + "ID": "RP1A.200720.011", + "Android_Version": "12", + "BOOTLOADER": "iQOO_Z6_12.0.4", + "SERIAL": "IQZ6123456789", + "DISPLAY": "iQOOZ6_12.0.4", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_iQOO", + "FINGERPRINT": "iQOO/V2163A/iQOO Z6:12/RP1A.200720.011/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy A52", + "PRODUCT": "a52", + "DEVICE": "a52", + "BOARD": "sm7150", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "A52_11.0.4", + "SERIAL": "SAMSUNG1234A52", + "DISPLAY": "GalaxyA52_11.0.4", + "HOST": "samsung_build_server", + "RADIO": "Exynos_5G", + "RADIO_VERSION": "Exynos_Exynos5", + "FINGERPRINT": "Samsung/Galaxy A52/a52:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 6", + "PRODUCT": "oriole", + "DEVICE": "oriole", + "BOARD": "gs101", + "HARDWARE": "tensor", + "ID": "SP2A.220505.002", + "Android_Version": "13", + "BOOTLOADER": "oriole_13.0.3", + "SERIAL": "GOOGLE654321098", + "DISPLAY": "Pixel6_13.0.3", + "HOST": "google_build_server", + "RADIO": "Tensor_5G", + "RADIO_VERSION": "Tensor_5G_02", + "FINGERPRINT": "Google/Pixel6/oriole:13/SP2A.220505.002/Stable:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus Nord CE 2", + "PRODUCT": "EBBA", + "DEVICE": "EBBA", + "BOARD": "sm6375", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "12", + "BOOTLOADER": "OnePlus_NordCE2_12.1.4", + "SERIAL": "OPCE1234567890", + "DISPLAY": "NordCE2_12.1.4", + "HOST": "oneplus_build_server", + "RADIO": "X60_LTE_5G", + "RADIO_VERSION": "OnePlus_X60", + "FINGERPRINT": "OnePlus/OnePlus Nord CE 2/EBBA:12/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto G60", + "PRODUCT": "potter", + "DEVICE": "potter", + "BOARD": "sm7150", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "Moto_G60_11.0.7", + "SERIAL": "MOTG12345678", + "DISPLAY": "MotoG60_11.0.7", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_Moto", + "FINGERPRINT": "Motorola/Moto G60/potter:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Nothing", + "BRAND": "Nothing", + "MODEL": "Phone 2", + "PRODUCT": "A076", + "DEVICE": "A076", + "BOARD": "SM8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "Nothing_12.1.0", + "SERIAL": "NO9876543210", + "DISPLAY": "Phone2_12.1.0", + "HOST": "nothing_build_server", + "RADIO": "Snapdragon_5G", + "RADIO_VERSION": "5G_Snapdragon2", + "FINGERPRINT": "Nothing/Phone 2/A076:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme Narzo 50 Pro", + "PRODUCT": "RMX3381", + "DEVICE": "RMX3381", + "BOARD": "mt6877", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "RMX3381_11.2.4", + "SERIAL": "RMX3381123456", + "DISPLAY": "Narzo50Pro_11.2.4", + "HOST": "realme_build_server", + "RADIO": "MTK_LTE_5G", + "RADIO_VERSION": "MTK_LTE_Realme", + "FINGERPRINT": "Realme/RMX3381/Realme Narzo 50 Pro:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "V23 5G", + "PRODUCT": "V2130", + "DEVICE": "V2130", + "BOARD": "mt6877", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "Vivo_V2130_12.0.1", + "SERIAL": "VV1234567890", + "DISPLAY": "VivoV23_12.0.1", + "HOST": "vivo_build_server", + "RADIO": "MTK_5G_LTE", + "RADIO_VERSION": "MTK_VIVO_LTE", + "FINGERPRINT": "Vivo/V2130/Vivo V23 5G:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo F19 Pro+", + "PRODUCT": "CPH2109", + "DEVICE": "F19Pro+", + "BOARD": "sm7250", + "HARDWARE": "qcom", + "ID": "SP2A.220505.002", + "Android_Version": "11", + "BOOTLOADER": "CPH2109_11.0.6", + "SERIAL": "OPF190123456", + "DISPLAY": "F19ProPlus_11.0.6", + "HOST": "oppo_build_server", + "RADIO": "X55_5G", + "RADIO_VERSION": "QCOM_X55_OPPO", + "FINGERPRINT": "Oppo/CPH2109/F19Pro+:11/SP2A.220505.002/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Mi 10i", + "PRODUCT": "gauguin_in", + "DEVICE": "gauguin", + "BOARD": "sm7250", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "gauguin_in_11.0.9", + "SERIAL": "XM987654321", + "DISPLAY": "Mi10i_11.0.9", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_5G", + "RADIO_VERSION": "QCOM_X55_Xiaomi", + "FINGERPRINT": "Xiaomi/Mi 10i/gauguin_in:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO 7 Legend", + "PRODUCT": "V2171A", + "DEVICE": "V2171", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "12", + "BOOTLOADER": "iQOO_7_12.1.0", + "SERIAL": "IQ0000123456", + "DISPLAY": "iQOO7_12.1.0", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_iQOO", + "FINGERPRINT": "iQOO/V2171A/iQOO 7 Legend:12/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy A12", + "PRODUCT": "a12", + "DEVICE": "a12", + "BOARD": "Exynos850", + "HARDWARE": "exynos", + "ID": "RP1A.200720.010", + "Android_Version": "11", + "BOOTLOADER": "A12_11.1.2", + "SERIAL": "SAMSUNG12345A12", + "DISPLAY": "GalaxyA12_11.1.2", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos_850", + "FINGERPRINT": "Samsung/Galaxy A12/a12:11/RP1A.200720.010/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 5", + "PRODUCT": "redfin", + "DEVICE": "redfin", + "BOARD": "gs101", + "HARDWARE": "tensor", + "ID": "SP2A.220505.002", + "Android_Version": "13", + "BOOTLOADER": "redfin_13.0.2", + "SERIAL": "GOOGLE1122334455", + "DISPLAY": "Pixel5_13.0.2", + "HOST": "google_build_server", + "RADIO": "Tensor_5G", + "RADIO_VERSION": "Tensor_5G_03", + "FINGERPRINT": "Google/Pixel5/redfin:13/SP2A.220505.002/Stable:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 9", + "PRODUCT": "LE2111", + "DEVICE": "LE", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "OnePlus_9_12.1.3", + "SERIAL": "OP1234098765", + "DISPLAY": "OnePlus9_12.1.3", + "HOST": "oneplus_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_OnePlus", + "FINGERPRINT": "OnePlus/OnePlus 9/LE:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto Edge 30", + "PRODUCT": "sirocco", + "DEVICE": "sirocco", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "RP1A.200720.010", + "Android_Version": "12", + "BOOTLOADER": "Edge30_12.1.5", + "SERIAL": "MOTEDGE1234", + "DISPLAY": "MotoEdge30_12.1.5", + "HOST": "motorola_build_server", + "RADIO": "X60_LTE_5G", + "RADIO_VERSION": "QCOM_X60_Motorola", + "FINGERPRINT": "Motorola/Moto Edge 30/sirocco:12/RP1A.200720.010/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Nothing", + "BRAND": "Nothing", + "MODEL": "Phone 1", + "PRODUCT": "A065", + "DEVICE": "A065", + "BOARD": "SM8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "Nothing_12.0.4", + "SERIAL": "NO1234567890", + "DISPLAY": "Phone1_12.0.4", + "HOST": "nothing_build_server", + "RADIO": "Snapdragon_5G", + "RADIO_VERSION": "Snapdragon_5G_04", + "FINGERPRINT": "Nothing/Phone 1/A065:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme 8 Pro", + "PRODUCT": "RMX3081", + "DEVICE": "RMX3081", + "BOARD": "sm7125", + "HARDWARE": "qcom", + "ID": "RP1A.200720.011", + "Android_Version": "11", + "BOOTLOADER": "RMX3081_11.1.2", + "SERIAL": "RMX308112345", + "DISPLAY": "Realme8Pro_11.1.2", + "HOST": "realme_build_server", + "RADIO": "X55_5G", + "RADIO_VERSION": "QCOM_X55_Realme", + "FINGERPRINT": "Realme/RMX3081/Realme 8 Pro:11/RP1A.200720.011/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "V21", + "PRODUCT": "V2030", + "DEVICE": "V2030", + "BOARD": "mt6853", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "Vivo_V2030_11.2.3", + "SERIAL": "VV9876543210", + "DISPLAY": "VivoV21_11.2.3", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_VIVO", + "FINGERPRINT": "Vivo/V2030/Vivo V21:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo Reno 6", + "PRODUCT": "CPH2201", + "DEVICE": "Reno6", + "BOARD": "sm7250", + "HARDWARE": "qcom", + "ID": "SP2A.220505.002", + "Android_Version": "11", + "BOOTLOADER": "CPH2201_11.0.7", + "SERIAL": "OPPO220112345", + "DISPLAY": "Reno6_11.0.7", + "HOST": "oppo_build_server", + "RADIO": "X60_LTE_5G", + "RADIO_VERSION": "QCOM_X60_5G_OPPO", + "FINGERPRINT": "Oppo/CPH2201/Reno6:11/SP2A.220505.002/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Zero 8", + "PRODUCT": "X683", + "DEVICE": "X683", + "BOARD": "mt6785", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "10", + "BOOTLOADER": "X683_10.0.3", + "SERIAL": "INFINIX123456", + "DISPLAY": "Zero8_10.0.3", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE_5G", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X683/Zero 8:10/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO X3 Pro", + "PRODUCT": "Vayu", + "DEVICE": "Vayu", + "BOARD": "sm8150", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "POCO_X3Pro_11.0.10", + "SERIAL": "POCOX3123456789", + "DISPLAY": "POCOX3Pro_11.0.10", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_POCO", + "FINGERPRINT": "POCO/POCO X3 Pro/Vayu:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Honor", + "BRAND": "Honor", + "MODEL": "Honor 10X Lite", + "PRODUCT": "YAL-L21", + "DEVICE": "YAL", + "BOARD": "kirin710", + "HARDWARE": "huawei", + "ID": "SP1A.210812.016", + "Android_Version": "10", + "BOOTLOADER": "YAL-L21_10.0.3", + "SERIAL": "HONOR12345678", + "DISPLAY": "Honor10XLite_10.0.3", + "HOST": "honor_build_server", + "RADIO": "Kirin_LTE", + "RADIO_VERSION": "Kirin710_Honor", + "FINGERPRINT": "Honor/YAL-L21/Honor 10X Lite:10/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Camon 16", + "PRODUCT": "CG7", + "DEVICE": "CG7", + "BOARD": "mt6768", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.011", + "Android_Version": "10", + "BOOTLOADER": "Tecno_Camon16_10.0.4", + "SERIAL": "TECNO123456", + "DISPLAY": "TecnoCamon16_10.0.4", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/CG7/Tecno Camon 16:10/RP1A.200720.011/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Mi 11X", + "PRODUCT": "Alioth", + "DEVICE": "alioth", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "alioth_11.0.9", + "SERIAL": "XM9876543210", + "DISPLAY": "Mi11X_11.0.9", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_5G", + "RADIO_VERSION": "QCOM_X55_Xiaomi", + "FINGERPRINT": "Xiaomi/Mi 11X/alioth:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO Z7", + "PRODUCT": "V2235A", + "DEVICE": "V2235", + "BOARD": "sm6375", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "12", + "BOOTLOADER": "iQOO_Z7_12.0.1", + "SERIAL": "IQZ7123456789", + "DISPLAY": "iQOOZ7_12.0.1", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_iQOO", + "FINGERPRINT": "iQOO/V2235A/iQOO Z7:12/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy S21", + "PRODUCT": "S21", + "DEVICE": "S21", + "BOARD": "Exynos2100", + "HARDWARE": "exynos", + "ID": "RP1A.200720.010", + "IMEI": "350336267465478", + "Android_Version": "12", + "BOOTLOADER": "GalaxyS21_12.1.2", + "SERIAL": "SAMSUNG12345S21", + "DISPLAY": "GalaxyS21_12.1.2", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE_5G", + "RADIO_VERSION": "Exynos_2100", + "FINGERPRINT": "Samsung/Galaxy S21/S21:12/RP1A.200720.010/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 6a", + "PRODUCT": "Bluejay", + "DEVICE": "bluejay", + "BOARD": "gs101", + "HARDWARE": "tensor", + "ID": "SP2A.220505.002", + "Android_Version": "13", + "BOOTLOADER": "bluejay_13.0.3", + "SERIAL": "GOOGLE23456789", + "DISPLAY": "Pixel6a_13.0.3", + "HOST": "google_build_server", + "RADIO": "Tensor_5G", + "RADIO_VERSION": "Tensor_5G_02", + "FINGERPRINT": "Google/Pixel6a/bluejay:13/SP2A.220505.002/Stable:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 10 Pro", + "PRODUCT": "LE2121", + "DEVICE": "LE2121", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "OnePlus_10Pro_12.1.0", + "SERIAL": "OP1012345678", + "DISPLAY": "OnePlus10Pro_12.1.0", + "HOST": "oneplus_build_server", + "RADIO": "X60_5G", + "RADIO_VERSION": "QCOM_X60_OnePlus", + "FINGERPRINT": "OnePlus/OnePlus 10 Pro/LE2121:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto G Power (2022)", + "PRODUCT": "hale", + "DEVICE": "hale", + "BOARD": "sm7225", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "Moto_GPower_11.0.8", + "SERIAL": "MOTGPower1234", + "DISPLAY": "MotoGPower2022_11.0.8", + "HOST": "motorola_build_server", + "RADIO": "X60_5G", + "RADIO_VERSION": "QCOM_X60_Motorola", + "FINGERPRINT": "Motorola/Moto G Power 2022/hale:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Nothing", + "BRAND": "Nothing", + "MODEL": "Nothing Phone 2", + "PRODUCT": "A076", + "DEVICE": "A076", + "BOARD": "SM8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "Nothing_12.1.0", + "SERIAL": "NO876543210", + "DISPLAY": "NothingPhone2_12.1.0", + "HOST": "nothing_build_server", + "RADIO": "Snapdragon_5G", + "RADIO_VERSION": "Snapdragon_5G_04", + "FINGERPRINT": "Nothing/Phone 2/A076:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme Narzo 30 Pro", + "PRODUCT": "RMX2161", + "DEVICE": "RMX2161", + "BOARD": "sm7150", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "RMX2161_10.0.3", + "SERIAL": "RMX2161N123", + "DISPLAY": "Narzo30Pro_10.0.3", + "HOST": "realme_build_server", + "RADIO": "X55_LTE_5G", + "RADIO_VERSION": "QCOM_X55_Realme", + "FINGERPRINT": "Realme/RMX2161/Realme Narzo 30 Pro:10/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo Y20", + "PRODUCT": "V2026", + "DEVICE": "V2026", + "BOARD": "mt6765", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "10", + "BOOTLOADER": "Vivo_V2026_10.0.3", + "SERIAL": "VV123456789", + "DISPLAY": "VivoY20_10.0.3", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_VIVO", + "FINGERPRINT": "Vivo/V2026/Vivo Y20:10/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo A15", + "PRODUCT": "CPH2185", + "DEVICE": "A15", + "BOARD": "mt6765", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "10", + "BOOTLOADER": "CPH2185_10.0.3", + "SERIAL": "OPPOA15123456", + "DISPLAY": "OppoA15_10.0.3", + "HOST": "oppo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_OPPO", + "FINGERPRINT": "Oppo/CPH2185/Oppo A15:10/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Note 10", + "PRODUCT": "X695", + "DEVICE": "X695", + "BOARD": "mt6769", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "X695_11.0.1", + "SERIAL": "INFINIX12345678", + "DISPLAY": "InfinixNote10_11.0.1", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE_5G", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X695/Infinix Note 10:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO M3", + "PRODUCT": "Lemongrab", + "DEVICE": "Lemongrab", + "BOARD": "sm6115", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "POCO_M3_10.0.2", + "SERIAL": "POCO123456M3", + "DISPLAY": "POCO_M3_10.0.2", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_POCO", + "FINGERPRINT": "POCO/POCO M3/Lemongrab:10/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Honor", + "BRAND": "Honor", + "MODEL": "Honor 30 Pro", + "PRODUCT": "NOH-NX9", + "DEVICE": "NOH", + "BOARD": "kirin990", + "HARDWARE": "huawei", + "ID": "SP1A.210812.016", + "Android_Version": "10", + "BOOTLOADER": "NOH-NX9_10.0.0", + "SERIAL": "HONOR23456789", + "DISPLAY": "Honor30Pro_10.0.0", + "HOST": "honor_build_server", + "RADIO": "Kirin_LTE", + "RADIO_VERSION": "Kirin990_Honor", + "FINGERPRINT": "Honor/NOH-NX9/Honor 30 Pro:10/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Spark 7", + "PRODUCT": "KE5", + "DEVICE": "KE5", + "BOARD": "mt6765", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.011", + "Android_Version": "11", + "BOOTLOADER": "Tecno_Spark7_11.0.0", + "SERIAL": "TECNO234567", + "DISPLAY": "TecnoSpark7_11.0.0", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/KE5/Tecno Spark 7:11/RP1A.200720.011/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Redmi Note 10", + "PRODUCT": "Mojito", + "DEVICE": "mojito", + "BOARD": "sm6150", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "mojito_11.0.9", + "SERIAL": "XM987654321", + "DISPLAY": "RedmiNote10_11.0.9", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X12", + "RADIO_VERSION": "QCOM_X12_Xiaomi", + "FINGERPRINT": "Xiaomi/Redmi Note 10/Mojito:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO 7", + "PRODUCT": "PD2056", + "DEVICE": "PD2056", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "iQOO_7_11.1.2", + "SERIAL": "IQ70123456", + "DISPLAY": "iQOO7_11.1.2", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_iQOO", + "FINGERPRINT": "iQOO/PD2056/iQOO 7:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy A32", + "PRODUCT": "A32", + "DEVICE": "A32", + "BOARD": "exynos850", + "HARDWARE": "exynos", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "GalaxyA32_11.0.3", + "SERIAL": "SAMSUNG1234567A32", + "DISPLAY": "GalaxyA32_11.0.3", + "HOST": "samsung_build_server", + "RADIO": "Exynos_5G", + "RADIO_VERSION": "Exynos_850", + "FINGERPRINT": "Samsung/Galaxy A32/A32:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 6", + "PRODUCT": "Oriole", + "DEVICE": "oriole", + "BOARD": "gs101", + "HARDWARE": "tensor", + "ID": "SP2A.220505.002", + "Android_Version": "13", + "BOOTLOADER": "oriole_13.0.2", + "SERIAL": "GOOGLE98765432", + "DISPLAY": "Pixel6_13.0.2", + "HOST": "google_build_server", + "RADIO": "Tensor_5G", + "RADIO_VERSION": "Tensor_5G_03", + "FINGERPRINT": "Google/Pixel6/oriole:13/SP2A.220505.002/Stable:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 9 Pro", + "PRODUCT": "LE2123", + "DEVICE": "LE2123", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "OnePlus_9Pro_12.1.0", + "SERIAL": "OP991234567", + "DISPLAY": "OnePlus9Pro_12.1.0", + "HOST": "oneplus_build_server", + "RADIO": "X60_5G", + "RADIO_VERSION": "QCOM_X60_OnePlus", + "FINGERPRINT": "OnePlus/OnePlus 9 Pro/LE2123:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto Edge 20", + "PRODUCT": "Edge 20", + "DEVICE": "Edge20", + "BOARD": "sm7250", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "Moto_Edge_20_11.0.2", + "SERIAL": "MOTEdge2021234", + "DISPLAY": "MotoEdge20_11.0.2", + "HOST": "motorola_build_server", + "RADIO": "X60_5G", + "RADIO_VERSION": "QCOM_X60_Motorola", + "FINGERPRINT": "Motorola/Moto Edge 20/Edge20:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Nothing", + "BRAND": "Nothing", + "MODEL": "Nothing Phone 1", + "PRODUCT": "A063", + "DEVICE": "A063", + "BOARD": "SM8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "Nothing_12.0.5", + "SERIAL": "NO123456789", + "DISPLAY": "NothingPhone1_12.0.5", + "HOST": "nothing_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Nothing", + "FINGERPRINT": "Nothing/Phone1/A063:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme GT 5G", + "PRODUCT": "RMX2202", + "DEVICE": "RMX2202", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "RMX2202_11.0.4", + "SERIAL": "RMX2202GT1234", + "DISPLAY": "RealmeGT5G_11.0.4", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_Realme", + "FINGERPRINT": "Realme/RMX2202/Realme GT 5G:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo V21", + "PRODUCT": "V2101", + "DEVICE": "V2101", + "BOARD": "mt6853", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "Vivo_V2101_11.0.1", + "SERIAL": "VV987654321", + "DISPLAY": "VivoV21_11.0.1", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_VIVO", + "FINGERPRINT": "Vivo/V2101/Vivo V21:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo F19 Pro+", + "PRODUCT": "CPH2219", + "DEVICE": "F19ProPlus", + "BOARD": "mt6877", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "Oppo_F19ProPlus_11.0.1", + "SERIAL": "OPPOF1923456", + "DISPLAY": "OppoF19ProPlus_11.0.1", + "HOST": "oppo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_OPPO", + "FINGERPRINT": "Oppo/CPH2219/Oppo F19 Pro+:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Zero 5G", + "PRODUCT": "X6815", + "DEVICE": "X6815", + "BOARD": "mt6877", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "X6815_11.0.2", + "SERIAL": "INFINIX87654321", + "DISPLAY": "Zero5G_11.0.2", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE_5G", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X6815/Infinix Zero 5G:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO X4 Pro", + "PRODUCT": "2201116PG", + "DEVICE": "2201116PG", + "BOARD": "sm7150", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "POCO_X4_11.0.1", + "SERIAL": "POCOX4Pro1234", + "DISPLAY": "POCOX4Pro_11.0.1", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_POCO", + "FINGERPRINT": "POCO/POCO X4 Pro/2201116PG:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Zero 8", + "PRODUCT": "X688C", + "DEVICE": "X688C", + "BOARD": "mt6785", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "10", + "BOOTLOADER": "X688C_10.0.0", + "SERIAL": "INFINIX123456", + "DISPLAY": "Zero8_10.0.0", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X688C/Infinix Zero 8:10/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO F2 Pro", + "PRODUCT": "Everest", + "DEVICE": "Everest", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "SP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "POCO_F2Pro_11.0.1", + "SERIAL": "POCOF212345", + "DISPLAY": "POCOF2Pro_11.0.1", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_POCO", + "FINGERPRINT": "POCO/POCO F2 Pro/Everest:11/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Honor", + "BRAND": "Honor", + "MODEL": "Honor 9X", + "PRODUCT": "HRY-AL00", + "DEVICE": "HRY", + "BOARD": "kirin710", + "HARDWARE": "huawei", + "ID": "SP1A.210812.016", + "Android_Version": "9", + "BOOTLOADER": "HRY-AL00_9.1.0", + "SERIAL": "HONOR987654", + "DISPLAY": "Honor9X_9.1.0", + "HOST": "honor_build_server", + "RADIO": "Kirin_LTE", + "RADIO_VERSION": "Kirin710_Honor", + "FINGERPRINT": "Honor/HRY-AL00/Honor 9X:9/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Camon 17", + "PRODUCT": "KE7", + "DEVICE": "KE7", + "BOARD": "mt6769", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "TecnoCamon17_11.0.0", + "SERIAL": "TECNO12345", + "DISPLAY": "TecnoCamon17_11.0.0", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/KE7/Tecno Camon 17:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Redmi Note 9 Pro", + "PRODUCT": "Curtana", + "DEVICE": "Curtana", + "BOARD": "sm7125", + "HARDWARE": "qcom", + "ID": "SP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "RedmiNote9Pro_11.0.6", + "SERIAL": "XM123456789", + "DISPLAY": "RedmiNote9Pro_11.0.6", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Xiaomi", + "FINGERPRINT": "Xiaomi/Redmi Note 9 Pro/Curtana:11/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO Z3", + "PRODUCT": "V2124A", + "DEVICE": "V2124A", + "BOARD": "sm7250", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "iQOOZ3_11.0.1", + "SERIAL": "IQO01234567", + "DISPLAY": "iQOOZ3_11.0.1", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_iQOO", + "FINGERPRINT": "iQOO/V2124A/iQOO Z3:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy M32", + "PRODUCT": "SM-M325F", + "DEVICE": "SM-M325F", + "BOARD": "exynos9611", + "HARDWARE": "exynos", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "GalaxyM32_11.0.4", + "SERIAL": "SAMSUNG987654", + "DISPLAY": "GalaxyM32_11.0.4", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos_9611", + "FINGERPRINT": "Samsung/Galaxy M32/SM-M325F:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 5", + "PRODUCT": "Redfin", + "DEVICE": "redfin", + "BOARD": "qcom", + "HARDWARE": "google", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "Pixel5_11.0.1", + "SERIAL": "GOOGLE12345", + "DISPLAY": "Pixel5_11.0.1", + "HOST": "google_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_Google", + "FINGERPRINT": "Google/Pixel5/redfin:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus Nord 2", + "PRODUCT": "AC2003", + "DEVICE": "AC2003", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "OnePlusNord2_11.0.2", + "SERIAL": "OP1234567890", + "DISPLAY": "OnePlusNord2_11.0.2", + "HOST": "oneplus_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_OnePlus", + "FINGERPRINT": "OnePlus/OnePlus Nord 2/AC2003:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto G60", + "PRODUCT": "corn", + "DEVICE": "corn", + "BOARD": "sm7150", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "MotoG60_11.0.1", + "SERIAL": "MOTG6012345", + "DISPLAY": "MotoG60_11.0.1", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Motorola", + "FINGERPRINT": "Motorola/Moto G60/corn:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Nothing", + "BRAND": "Nothing", + "MODEL": "Nothing Phone 2", + "PRODUCT": "A066", + "DEVICE": "A066", + "BOARD": "SM8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "13", + "BOOTLOADER": "NothingPhone2_13.0.2", + "SERIAL": "NOTHING987654", + "DISPLAY": "NothingPhone2_13.0.2", + "HOST": "nothing_build_server", + "RADIO": "Snapdragon_X65", + "RADIO_VERSION": "QCOM_X65_Nothing", + "FINGERPRINT": "Nothing/Phone2/A066:13/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme 7 Pro", + "PRODUCT": "RMX2170", + "DEVICE": "RMX2170", + "BOARD": "sm7125", + "HARDWARE": "qcom", + "ID": "SP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "RMX2170_10.0.0", + "SERIAL": "RMX21701234", + "DISPLAY": "Realme7Pro_10.0.0", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Realme", + "FINGERPRINT": "Realme/RMX2170/Realme 7 Pro:10/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo V21e", + "PRODUCT": "V2050", + "DEVICE": "V2050", + "BOARD": "mt6769", + "HARDWARE": "mediatek", + "ID": "SP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "Vivo_V2050_11.0.0", + "SERIAL": "VV987654321", + "DISPLAY": "VivoV21e_11.0.0", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_VIVO", + "FINGERPRINT": "Vivo/V2050/Vivo V21e:11/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo Reno 5 Pro", + "PRODUCT": "CPH2201", + "DEVICE": "Reno5Pro", + "BOARD": "mt6877", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "OppoReno5Pro_11.0.4", + "SERIAL": "OPPO9876543", + "DISPLAY": "OppoReno5Pro_11.0.4", + "HOST": "oppo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_OPPO", + "FINGERPRINT": "Oppo/CPH2201/Oppo Reno 5 Pro:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Smart 5", + "PRODUCT": "X657", + "DEVICE": "X657", + "BOARD": "mt6761", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "10", + "BOOTLOADER": "InfinixSmart5_10.0.0", + "SERIAL": "INFINIX7654321", + "DISPLAY": "InfinixSmart5_10.0.0", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X657/Infinix Smart 5:10/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO M2 Pro", + "PRODUCT": "Salta", + "DEVICE": "Salta", + "BOARD": "sm7125", + "HARDWARE": "qcom", + "ID": "SP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "POCO_M2Pro_10.0.4", + "SERIAL": "POCO1234567890", + "DISPLAY": "POCO_M2Pro_10.0.4", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_POCO", + "FINGERPRINT": "POCO/POCO M2 Pro/Salta:10/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme X7", + "PRODUCT": "RMX3092", + "DEVICE": "RMX3092", + "BOARD": "mt6877", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "RealmeX7_10.0.1", + "SERIAL": "RMX987654321", + "DISPLAY": "RealmeX7_10.0.1", + "HOST": "realme_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Realme", + "FINGERPRINT": "Realme/RMX3092/Realme X7:10/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo V20", + "PRODUCT": "V2026", + "DEVICE": "V2026", + "BOARD": "sd720g", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "Vivo_V2026_11.0.0", + "SERIAL": "VV123456789", + "DISPLAY": "VivoV20_11.0.0", + "HOST": "vivo_build_server", + "RADIO": "Snapdragon_X12", + "RADIO_VERSION": "QCOM_X12_VIVO", + "FINGERPRINT": "Vivo/V2026/Vivo V20:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo F19 Pro", + "PRODUCT": "CPH2109", + "DEVICE": "CPH2109", + "BOARD": "mt6779", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "OppoF19Pro_11.0.3", + "SERIAL": "OPPO12345678", + "DISPLAY": "OppoF19Pro_11.0.3", + "HOST": "oppo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_OPPO", + "FINGERPRINT": "Oppo/CPH2109/Oppo F19 Pro:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Note 10", + "PRODUCT": "X695", + "DEVICE": "X695", + "BOARD": "mt6769", + "HARDWARE": "mediatek", + "ID": "SP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "InfinixNote10_11.0.1", + "SERIAL": "INFINIX123456", + "DISPLAY": "InfinixNote10_11.0.1", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X695/Infinix Note 10:11/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO M3", + "PRODUCT": "Lemax", + "DEVICE": "Lemax", + "BOARD": "sm6115", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "POCO_M3_10.0.2", + "SERIAL": "POCO987654321", + "DISPLAY": "POCO_M3_10.0.2", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_POCO", + "FINGERPRINT": "POCO/POCO M3/Lemax:10/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Spark 6", + "PRODUCT": "KE5", + "DEVICE": "KE5", + "BOARD": "mt6761", + "HARDWARE": "mediatek", + "ID": "SP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "TecnoSpark6_10.0.0", + "SERIAL": "TECNO987654", + "DISPLAY": "TecnoSpark6_10.0.0", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/KE5/Tecno Spark 6:10/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Moto", + "BRAND": "Moto", + "MODEL": "Moto G9", + "PRODUCT": "guacamole", + "DEVICE": "guacamole", + "BOARD": "sm6125", + "HARDWARE": "qcom", + "ID": "SP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "MotoG9_10.0.2", + "SERIAL": "MOTO123456789", + "DISPLAY": "MotoG9_10.0.2", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Moto", + "FINGERPRINT": "Motorola/Moto G9/guacamole:10/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Redmi Note 10 Pro", + "PRODUCT": "Sweet", + "DEVICE": "Sweet", + "BOARD": "sm7150", + "HARDWARE": "qcom", + "ID": "SP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "RedmiNote10Pro_11.0.5", + "SERIAL": "XM987654321", + "DISPLAY": "RedmiNote10Pro_11.0.5", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Xiaomi", + "FINGERPRINT": "Xiaomi/Redmi Note 10 Pro/Sweet:11/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO 7", + "PRODUCT": "V2056A", + "DEVICE": "V2056A", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "iQOO7_11.0.1", + "SERIAL": "IQO012345678", + "DISPLAY": "iQOO7_11.0.1", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_iQOO", + "FINGERPRINT": "iQOO/V2056A/iQOO 7:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy S21", + "PRODUCT": "SM-G991B", + "DEVICE": "SM-G991B", + "BOARD": "exynos2100", + "HARDWARE": "samsung", + "ID": "RP1A.200720.012", + "IMEI": "350336263545489", + "Android_Version": "11", + "BOOTLOADER": "GalaxyS21_11.0.4", + "SERIAL": "SAMSUNG123456", + "DISPLAY": "GalaxyS21_11.0.4", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos_2100_Samsung", + "FINGERPRINT": "Samsung/Galaxy S21/SM-G991B:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 9", + "PRODUCT": "LE2111", + "DEVICE": "LE2111", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "OnePlus9_11.0.3", + "SERIAL": "OP123456789", + "DISPLAY": "OnePlus9_11.0.3", + "HOST": "oneplus_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_OnePlus", + "FINGERPRINT": "OnePlus/OnePlus 9/LE2111:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto G Power", + "PRODUCT": "guacamole", + "DEVICE": "guacamole", + "BOARD": "sm6125", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "MotoGPower_10.0.1", + "SERIAL": "MOTG987654", + "DISPLAY": "MotoGPower_10.0.1", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Motorola", + "FINGERPRINT": "Motorola/Moto G Power/guacamole:10/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Nothing", + "BRAND": "Nothing", + "MODEL": "Nothing Phone 1", + "PRODUCT": "A063", + "DEVICE": "A063", + "BOARD": "SM8450", + "HARDWARE": "qcom", + "ID": "RP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "NothingPhone1_12.0.4", + "SERIAL": "NOTHING123456", + "DISPLAY": "NothingPhone1_12.0.4", + "HOST": "nothing_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Nothing", + "FINGERPRINT": "Nothing/Phone1/A063:12/RP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 6", + "PRODUCT": "Raven", + "DEVICE": "raven", + "BOARD": "google", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "Pixel6_12.0.1", + "SERIAL": "GOOGLE1234567", + "DISPLAY": "Pixel6_12.0.1", + "HOST": "google_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Google", + "FINGERPRINT": "Google/Pixel6/raven:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme 8 Pro", + "PRODUCT": "RMX3081", + "DEVICE": "RMX3081", + "BOARD": "sm7125", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "Realme8Pro_11.0.2", + "SERIAL": "RMX123456789", + "DISPLAY": "Realme8Pro_11.0.2", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Realme", + "FINGERPRINT": "Realme/RMX3081/Realme 8 Pro:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo Y20", + "PRODUCT": "V2027", + "DEVICE": "V2027", + "BOARD": "sd460", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "VivoY20_10.0.2", + "SERIAL": "VV1234567890", + "DISPLAY": "VivoY20_10.0.2", + "HOST": "vivo_build_server", + "RADIO": "Snapdragon_X6", + "RADIO_VERSION": "QCOM_X6_Vivo", + "FINGERPRINT": "Vivo/V2027/Vivo Y20:10/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo Reno 5", + "PRODUCT": "CPH2145", + "DEVICE": "CPH2145", + "BOARD": "mt6877", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "OppoReno5_11.0.1", + "SERIAL": "OPPO987654321", + "DISPLAY": "OppoReno5_11.0.1", + "HOST": "oppo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_OPPO", + "FINGERPRINT": "Oppo/CPH2145/Oppo Reno 5:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Zero 8", + "PRODUCT": "X686", + "DEVICE": "X686", + "BOARD": "mt6785", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "10", + "BOOTLOADER": "InfinixZero8_10.0.0", + "SERIAL": "INFINIX987654", + "DISPLAY": "InfinixZero8_10.0.0", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X686/Infinix Zero 8:10/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO F3", + "PRODUCT": "Alioth", + "DEVICE": "Alioth", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "POCOF3_11.0.4", + "SERIAL": "POCO123456789", + "DISPLAY": "POCOF3_11.0.4", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_POCO", + "FINGERPRINT": "POCO/POCO F3/Alioth:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Camon 17", + "PRODUCT": "KE7", + "DEVICE": "KE7", + "BOARD": "mt6769", + "HARDWARE": "mediatek", + "ID": "SP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "TecnoCamon17_11.0.1", + "SERIAL": "TECNO987654", + "DISPLAY": "TecnoCamon17_11.0.1", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/KE7/Tecno Camon 17:11/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Moto", + "BRAND": "Moto", + "MODEL": "Moto E", + "PRODUCT": "go", + "DEVICE": "go", + "BOARD": "sm4250", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "MotoE_10.0.0", + "SERIAL": "MOTO987654", + "DISPLAY": "MotoE_10.0.0", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Moto", + "FINGERPRINT": "Motorola/Moto E/go:10/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Redmi", + "BRAND": "Redmi", + "MODEL": "Redmi Note 9 Pro", + "PRODUCT": "Joyeuse", + "DEVICE": "Joyeuse", + "BOARD": "sm7125", + "HARDWARE": "qcom", + "ID": "SP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "RedmiNote9Pro_10.0.1", + "SERIAL": "REDMI123456", + "DISPLAY": "RedmiNote9Pro_10.0.1", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Redmi", + "FINGERPRINT": "Xiaomi/Redmi Note 9 Pro/Joyeuse:10/SP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO Z3", + "PRODUCT": "V2054A", + "DEVICE": "V2054A", + "BOARD": "sm7250", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "iQOOZ3_11.0.2", + "SERIAL": "IQO0123456", + "DISPLAY": "iQOOZ3_11.0.2", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_iQOO", + "FINGERPRINT": "iQOO/V2054A/iQOO Z3:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy A51", + "PRODUCT": "SM-A515F", + "DEVICE": "SM-A515F", + "BOARD": "exynos9611", + "HARDWARE": "samsung", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "GalaxyA51_11.0.4", + "SERIAL": "SAMSUNG1234", + "DISPLAY": "GalaxyA51_11.0.4", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos_9611_Samsung", + "FINGERPRINT": "Samsung/Galaxy A51/SM-A515F:11/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus Nord 2", + "PRODUCT": "DN2101", + "DEVICE": "DN2101", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "OnePlusNord2_11.0.3", + "SERIAL": "OP1234567", + "DISPLAY": "OnePlusNord2_11.0.3", + "HOST": "oneplus_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_OnePlus", + "FINGERPRINT": "OnePlus/DN2101/OnePlus Nord 2:11/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto G60", + "PRODUCT": "cornsilk", + "DEVICE": "cornsilk", + "BOARD": "sm7150", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "MotoG60_10.0.1", + "SERIAL": "MOTG123456", + "DISPLAY": "MotoG60_10.0.1", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X11", + "RADIO_VERSION": "QCOM_X11_Motorola", + "FINGERPRINT": "Motorola/Moto G60/cornsilk:10/RP1A.200720.012/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 5", + "PRODUCT": "Redfin", + "DEVICE": "redfin", + "BOARD": "google", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "12", + "BOOTLOADER": "Pixel5_12.0.1", + "SERIAL": "GOOGLE12345", + "DISPLAY": "Pixel5_12.0.1", + "HOST": "google_build_server", + "RADIO": "Snapdragon_X65", + "RADIO_VERSION": "QCOM_X65_Google", + "FINGERPRINT": "Google/Pixel5/redfin:12/SP1A.210812.016/Stable:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme 9 Pro", + "PRODUCT": "RMX3471", + "DEVICE": "RMX3471", + "BOARD": "sm7250", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "12", + "BOOTLOADER": "Realme9Pro_12.0.3", + "SERIAL": "RMX123654789", + "DISPLAY": "Realme9Pro_12.0.3", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_Realme", + "FINGERPRINT": "Realme/RMX3471/Realme 9 Pro:12/RP1A.200720.012/R.2a75b19-19315:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo V21", + "PRODUCT": "V2050", + "DEVICE": "V2050", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "VivoV21_11.0.5", + "SERIAL": "VV987654321", + "DISPLAY": "VivoV21_11.0.5", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Vivo", + "FINGERPRINT": "Vivo/V2050/Vivo V21:11/RP1A.200720.012/R.4f82f39-76311:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo F19 Pro", + "PRODUCT": "CPH2109", + "DEVICE": "CPH2109", + "BOARD": "mt6769", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "OppoF19Pro_11.0.2", + "SERIAL": "OPPO987654321", + "DISPLAY": "OppoF19Pro_11.0.2", + "HOST": "oppo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Oppo", + "FINGERPRINT": "Oppo/CPH2109/Oppo F19 Pro:11/SP1A.210812.016/R.6d11f15-18412:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Note 10", + "PRODUCT": "X693", + "DEVICE": "X693", + "BOARD": "mt6768", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "InfinixNote10_11.0.1", + "SERIAL": "INFINIX123654", + "DISPLAY": "InfinixNote10_11.0.1", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X693/Infinix Note 10:11/SP1A.210812.016/R.1a23b54-98102:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO X3 Pro", + "PRODUCT": "Vayu", + "DEVICE": "Vayu", + "BOARD": "sm8150", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "POCOX3Pro_11.0.4", + "SERIAL": "POCO123987", + "DISPLAY": "POCOX3Pro_11.0.4", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_POCO", + "FINGERPRINT": "POCO/POCO X3 Pro/Vayu:11/SP1A.210812.016/R.8f37b12-65141:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Spark 7", + "PRODUCT": "KE7", + "DEVICE": "KE7", + "BOARD": "mt6769", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "TecnoSpark7_11.0.3", + "SERIAL": "TECNO654321", + "DISPLAY": "TecnoSpark7_11.0.3", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/KE7/Tecno Spark 7:11/RP1A.200720.012/R.9d61e03-72136:user/release-keys" + }, + { + "MANUFACTURER": "Moto", + "BRAND": "Moto", + "MODEL": "Moto G60", + "PRODUCT": "cornsilk", + "DEVICE": "cornsilk", + "BOARD": "sm7150", + "HARDWARE": "qcom", + "ID": "SP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "MotoG60_10.0.2", + "SERIAL": "MOTG987654", + "DISPLAY": "MotoG60_10.0.2", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Moto", + "FINGERPRINT": "Motorola/Moto G60/cornsilk:10/SP1A.200720.012/R.1b97a61-84902:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Mi 11X Pro", + "PRODUCT": "Alioth", + "DEVICE": "Alioth", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "Mi11XPro_11.0.5", + "SERIAL": "MI123456789", + "DISPLAY": "Mi11XPro_11.0.5", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Xiaomi", + "FINGERPRINT": "Xiaomi/Mi 11X Pro/Alioth:11/RP1A.200720.012/R.6d2a7f9-59223:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO 7", + "PRODUCT": "V2043", + "DEVICE": "V2043", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "iQOO7_11.0.2", + "SERIAL": "IQO1234567", + "DISPLAY": "iQOO7_11.0.2", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_iQOO", + "FINGERPRINT": "iQOO/V2043/iQOO 7:11/RP1A.200720.012/R.2b81d40-45112:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy A72", + "PRODUCT": "SM-A725F", + "DEVICE": "SM-A725F", + "BOARD": "exynos9611", + "HARDWARE": "samsung", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "GalaxyA72_11.0.3", + "SERIAL": "SAMSUNG123654", + "DISPLAY": "GalaxyA72_11.0.3", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos_9611_Samsung", + "FINGERPRINT": "Samsung/Galaxy A72/SM-A725F:11/RP1A.200720.012/R.3a64e92-30215:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 9", + "PRODUCT": "LE2111", + "DEVICE": "LE2111", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "11", + "BOOTLOADER": "OnePlus9_11.0.1", + "SERIAL": "OP987654321", + "DISPLAY": "OnePlus9_11.0.1", + "HOST": "oneplus_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_OnePlus", + "FINGERPRINT": "OnePlus/LE2111/OnePlus 9:11/SP1A.210812.016/R.8c5d39b-20976:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto G Power", + "PRODUCT": "cornsilk", + "DEVICE": "cornsilk", + "BOARD": "sm7250", + "HARDWARE": "qcom", + "ID": "SP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "MotoGPower_10.0.3", + "SERIAL": "MOTG654321", + "DISPLAY": "MotoGPower_10.0.3", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_Motorola", + "FINGERPRINT": "Motorola/Moto G Power/cornsilk:10/SP1A.200720.012/R.7f4a90f-12543:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme Narzo 30 Pro", + "PRODUCT": "RMX2020", + "DEVICE": "RMX2020", + "BOARD": "sm7125", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "RealmeNarzo30_10.0.3", + "SERIAL": "RMX123987654", + "DISPLAY": "RealmeNarzo30_10.0.3", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_Realme", + "FINGERPRINT": "Realme/RMX2020/Realme Narzo 30 Pro:10/RP1A.200720.012/M.2a75b19-19315:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo Y51", + "PRODUCT": "V2030", + "DEVICE": "V2030", + "BOARD": "sm6125", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "VivoY51_10.0.5", + "SERIAL": "VIVO1234567", + "DISPLAY": "VivoY51_10.0.5", + "HOST": "vivo_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_Vivo", + "FINGERPRINT": "Vivo/V2030/Vivo Y51:10/RP1A.200720.012/M.1b90f18-71521:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo A53", + "PRODUCT": "CPH2127", + "DEVICE": "CPH2127", + "BOARD": "sm6125", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "OppoA53_10.0.3", + "SERIAL": "OPPO12345678", + "DISPLAY": "OppoA53_10.0.3", + "HOST": "oppo_build_server", + "RADIO": "Snapdragon_X55", + "RADIO_VERSION": "QCOM_X55_Oppo", + "FINGERPRINT": "Oppo/CPH2127/Oppo A53:10/RP1A.200720.012/M.3d92c37-48190:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Zero 8", + "PRODUCT": "X6810", + "DEVICE": "X6810", + "BOARD": "mt6769", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "10", + "BOOTLOADER": "InfinixZero8_10.0.4", + "SERIAL": "INFINIX123654", + "DISPLAY": "InfinixZero8_10.0.4", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X6810/Infinix Zero 8:10/SP1A.210812.016/M.5e40d29-89216:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO M2 Pro", + "PRODUCT": "gram", + "DEVICE": "gram", + "BOARD": "sm7125", + "HARDWARE": "qcom", + "ID": "SP1A.200812.016", + "Android_Version": "10", + "BOOTLOADER": "POCO_M2Pro_10.0.4", + "SERIAL": "POCO123987", + "DISPLAY": "POCO_M2Pro_10.0.4", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_POCO", + "FINGERPRINT": "POCO/POCO M2 Pro/gram:10/SP1A.200812.016/M.7c1b34d-61256:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Camon 16", + "PRODUCT": "KE5", + "DEVICE": "KE5", + "BOARD": "mt6768", + "HARDWARE": "mediatek", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "TecnoCamon16_10.0.4", + "SERIAL": "TECNO654321", + "DISPLAY": "TecnoCamon16_10.0.4", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/KE5/Tecno Camon 16:10/RP1A.200720.012/M.1c72f60-62139:user/release-keys" + }, + { + "MANUFACTURER": "Moto", + "BRAND": "Moto", + "MODEL": "Moto G60", + "PRODUCT": "cornflower", + "DEVICE": "cornflower", + "BOARD": "sm7250", + "HARDWARE": "qcom", + "ID": "SP1A.200812.016", + "Android_Version": "11", + "BOOTLOADER": "MotoG60_11.0.2", + "SERIAL": "MOTG987654", + "DISPLAY": "MotoG60_11.0.2", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Moto", + "FINGERPRINT": "Motorola/Moto G60/cornflower:11/SP1A.200812.016/M.3f18e12-68415:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Redmi Note 10 Pro", + "PRODUCT": "sweet", + "DEVICE": "sweet", + "BOARD": "sm7150", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "RedmiNote10Pro_11.0.4", + "SERIAL": "MI123456789", + "DISPLAY": "RedmiNote10Pro_11.0.4", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Xiaomi", + "FINGERPRINT": "Xiaomi/Redmi Note 10 Pro/sweet:11/RP1A.200720.012/M.9d72f43-83265:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO 3", + "PRODUCT": "I1927", + "DEVICE": "I1927", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "10", + "BOOTLOADER": "iQOO3_10.0.5", + "SERIAL": "IQO1234567", + "DISPLAY": "iQOO3_10.0.5", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_iQOO", + "FINGERPRINT": "iQOO/I1927/iQOO 3:10/RP1A.200720.012/M.2d74f11-93561:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy M32", + "PRODUCT": "SM-M325F", + "DEVICE": "SM-M325F", + "BOARD": "exynos9611", + "HARDWARE": "samsung", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "GalaxyM32_11.0.4", + "SERIAL": "SAMSUNG987654", + "DISPLAY": "GalaxyM32_11.0.4", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos9611_Samsung", + "FINGERPRINT": "Samsung/Galaxy M32/SM-M325F:11/RP1A.200720.012/M.5e92c43-74129:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus Nord 2", + "PRODUCT": "DN2101", + "DEVICE": "DN2101", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "SP1A.200812.016", + "Android_Version": "11", + "BOOTLOADER": "OnePlusNord2_11.0.3", + "SERIAL": "OP987654321", + "DISPLAY": "OnePlusNord2_11.0.3", + "HOST": "oneplus_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_OnePlus", + "FINGERPRINT": "OnePlus/DN2101/OnePlus Nord 2:11/SP1A.200812.016/M.4a75e90-95314:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto Edge", + "PRODUCT": "edge", + "DEVICE": "edge", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "RP1A.200720.012", + "Android_Version": "11", + "BOOTLOADER": "MotoEdge_11.0.3", + "SERIAL": "MOTG876543", + "DISPLAY": "MotoEdge_11.0.3", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Motorola", + "FINGERPRINT": "Motorola/Moto Edge/edge:11/RP1A.200720.012/M.2b45f13-51239:user/release-keys" + }, + { + "MANUFACTURER": "Nothing", + "BRAND": "Nothing", + "MODEL": "Nothing Phone (1)", + "PRODUCT": "A065", + "DEVICE": "A065", + "BOARD": "qcom", + "HARDWARE": "qcom", + "ID": "SP1A.200812.016", + "Android_Version": "12", + "BOOTLOADER": "NothingPhone1_12.0.2", + "SERIAL": "NOTHING123", + "DISPLAY": "NothingPhone1_12.0.2", + "HOST": "nothing_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Nothing", + "FINGERPRINT": "Nothing/A065/Nothing Phone (1):12/SP1A.200812.016/M.7d3c92b-90123:user/release-keys" + }, + { + "MANUFACTURER": "Google", + "BRAND": "Google", + "MODEL": "Pixel 5", + "PRODUCT": "redfin", + "DEVICE": "redfin", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "SP1A.200812.016", + "Android_Version": "11", + "BOOTLOADER": "Pixel5_11.0.2", + "SERIAL": "GOOG1234567", + "DISPLAY": "Pixel5_11.0.2", + "HOST": "google_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Google", + "FINGERPRINT": "Google/redfin/Pixel 5:11/SP1A.200812.016/M.8a72f81-15647:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme GT 2 Pro", + "PRODUCT": "RMX3301", + "DEVICE": "RMX3301", + "BOARD": "sm8250", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "RealmeGT2Pro_13.0.3", + "SERIAL": "RMX123987654", + "DISPLAY": "RealmeGT2Pro_13.0.3", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Realme", + "FINGERPRINT": "Realme/RMX3301/Realme GT 2 Pro:13/TP1A.220905.001/M.4b73e10-56123:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo V23e 5G", + "PRODUCT": "V2131", + "DEVICE": "V2131", + "BOARD": "mt6833", + "HARDWARE": "mediatek", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "VivoV23e_13.0.2", + "SERIAL": "VIVO87654321", + "DISPLAY": "VivoV23e_13.0.2", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Vivo", + "FINGERPRINT": "Vivo/V2131/Vivo V23e 5G:13/TP1A.220905.001/M.3f74c23-19874:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo Find X5 Pro", + "PRODUCT": "CPH2305", + "DEVICE": "CPH2305", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "OppoFindX5Pro_13.0.4", + "SERIAL": "OPPO123456789", + "DISPLAY": "OppoFindX5Pro_13.0.4", + "HOST": "oppo_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Oppo", + "FINGERPRINT": "Oppo/CPH2305/Oppo Find X5 Pro:13/TP1A.220905.001/M.2b84d71-67215:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Zero Ultra", + "PRODUCT": "X6812", + "DEVICE": "X6812", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "InfinixZeroUltra_13.0.2", + "SERIAL": "INFINIX1234567", + "DISPLAY": "InfinixZeroUltra_13.0.2", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X6812/Infinix Zero Ultra:13/TP1A.220905.001/M.5f72c83-92115:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO X4 GT", + "PRODUCT": "redmi", + "DEVICE": "redmi", + "BOARD": "sm7325", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "POCOX4GT_13.0.3", + "SERIAL": "POCO987654321", + "DISPLAY": "POCOX4GT_13.0.3", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_POCO", + "FINGERPRINT": "POCO/redmi/POCO X4 GT:13/TP1A.220905.001/M.6b92f47-12456:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Phantom X2", + "PRODUCT": "KE6", + "DEVICE": "KE6", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "TecnoPhantomX2_13.0.5", + "SERIAL": "TECNO123987", + "DISPLAY": "TecnoPhantomX2_13.0.5", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/KE6/Tecno Phantom X2:13/TP1A.220905.001/M.1c92f47-80123:user/release-keys" + }, + { + "MANUFACTURER": "Moto", + "BRAND": "Moto", + "MODEL": "Moto G200 5G", + "PRODUCT": "corned-beef", + "DEVICE": "corned-beef", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "MotoG200_13.0.2", + "SERIAL": "MOTG123456", + "DISPLAY": "MotoG200_13.0.2", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Moto", + "FINGERPRINT": "Motorola/Moto G200/corned-beef:13/TP1A.220905.001/M.2a73c25-98274:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Xiaomi 12 Pro", + "PRODUCT": "cypress", + "DEVICE": "cypress", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "Xiaomi12Pro_13.0.4", + "SERIAL": "MI12345678", + "DISPLAY": "Xiaomi12Pro_13.0.4", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Xiaomi", + "FINGERPRINT": "Xiaomi/cypress/Xiaomi 12 Pro:13/TP1A.220905.001/M.3b85d32-74629:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO 9 Pro", + "PRODUCT": "I2126", + "DEVICE": "I2126", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "iQOO9Pro_13.0.2", + "SERIAL": "IQO1234567", + "DISPLAY": "iQOO9Pro_13.0.2", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_iQOO", + "FINGERPRINT": "iQOO/I2126/iQOO 9 Pro:13/TP1A.220905.001/M.2b75e11-63215:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy S22 Ultra", + "PRODUCT": "SM-S908B", + "DEVICE": "SM-S908B", + "BOARD": "exynos2200", + "HARDWARE": "samsung", + "ID": "TP1A.220905.001", + "IMEI": "350280388762357", + "Android_Version": "13", + "BOOTLOADER": "GalaxyS22Ultra_13.0.3", + "SERIAL": "SAMSUNG123456", + "DISPLAY": "GalaxyS22Ultra_13.0.3", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos2200_Samsung", + "FINGERPRINT": "Samsung/SM-S908B/Galaxy S22 Ultra:13/TP1A.220905.001/M.3f92e41-76291:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 10 Pro", + "PRODUCT": "LE2120", + "DEVICE": "LE2120", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "OnePlus10Pro_13.0.4", + "SERIAL": "OP987654321", + "DISPLAY": "OnePlus10Pro_13.0.4", + "HOST": "oneplus_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_OnePlus", + "FINGERPRINT": "OnePlus/LE2120/OnePlus 10 Pro:13/TP1A.220905.001/M.1a84d32-67381:user/release-keys" + }, + { + "MANUFACTURER": "Motorola", + "BRAND": "Motorola", + "MODEL": "Moto G Power (2023)", + "PRODUCT": "XT2315", + "DEVICE": "XT2315", + "BOARD": "sm7225", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "MotoGPower2023_14.0.3", + "SERIAL": "MOTG987654", + "DISPLAY": "MotoGPower2023_14.0.3", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Motorola", + "FINGERPRINT": "Motorola/Moto G Power (2023)/XT2315:14/TP1A.220905.001/M.3d17b98-92543:user/release-keys" + }, + { + "MANUFACTURER": "Nothing", + "BRAND": "Nothing", + "MODEL": "Nothing Phone (2)", + "PRODUCT": "A072", + "DEVICE": "A072", + "BOARD": "qcom", + "HARDWARE": "qcom", + "ID": "SP1A.200812.016", + "Android_Version": "14", + "BOOTLOADER": "NothingPhone2_14.0.1", + "SERIAL": "NOTHING87654321", + "DISPLAY": "NothingPhone2_14.0.1", + "HOST": "nothing_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Nothing", + "FINGERPRINT": "Nothing/A072/Nothing Phone (2):14/SP1A.200812.016/M.9d51f90-74182:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme 10 Pro+", + "PRODUCT": "RMX3686", + "DEVICE": "RMX3686", + "BOARD": "sm8550", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "Realme10ProPlus_14.0.2", + "SERIAL": "RMX1009876", + "DISPLAY": "Realme10ProPlus_14.0.2", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_Realme", + "FINGERPRINT": "Realme/RMX3686/Realme 10 Pro+:14/TP1A.220905.001/A.3a72d92-19415:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo X90 Pro", + "PRODUCT": "V2219A", + "DEVICE": "V2219A", + "BOARD": "mt6895", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "15", + "BOOTLOADER": "VivoX90Pro_15.0.1", + "SERIAL": "VIVO890123", + "DISPLAY": "VivoX90Pro_15.0.1", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Vivo", + "FINGERPRINT": "Vivo/V2219A/Vivo X90 Pro:15/SP1A.210812.016/A.5e73c84-78412:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo Reno 8 Pro", + "PRODUCT": "CPH2359", + "DEVICE": "CPH2359", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "15", + "BOOTLOADER": "OppoReno8Pro_15.0.2", + "SERIAL": "OPPO1098765", + "DISPLAY": "OppoReno8Pro_15.0.2", + "HOST": "oppo_build_server", + "RADIO": "Snapdragon_X65", + "RADIO_VERSION": "QCOM_X65_Oppo", + "FINGERPRINT": "Oppo/CPH2359/Oppo Reno 8 Pro:15/SP1A.210812.016/A.8f72d72-90231:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Zero 5G 2023", + "PRODUCT": "X6813", + "DEVICE": "X6813", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "TP1A.220905.001", + "Android_Version": "15", + "BOOTLOADER": "InfinixZero5G2023_15.0.2", + "SERIAL": "INFINIX332156", + "DISPLAY": "InfinixZero5G2023_15.0.2", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X6813/Infinix Zero 5G 2023:15/TP1A.220905.001/A.4e62b19-89512:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO F4 GT", + "PRODUCT": "Mondrian", + "DEVICE": "Mondrian", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "POCOF4GT_14.0.1", + "SERIAL": "POCO789654", + "DISPLAY": "POCOF4GT_14.0.1", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X65", + "RADIO_VERSION": "QCOM_X65_POCO", + "FINGERPRINT": "POCO/Mondrian/POCO F4 GT:14/TP1A.220905.001/A.6e93d15-81423:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Camon 20 Pro", + "PRODUCT": "AD9", + "DEVICE": "AD9", + "BOARD": "mt6895", + "HARDWARE": "mediatek", + "ID": "TP1A.220905.001", + "Android_Version": "15", + "BOOTLOADER": "TecnoCamon20Pro_15.0.3", + "SERIAL": "TECNO7654321", + "DISPLAY": "TecnoCamon20Pro_15.0.3", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/AD9/Tecno Camon 20 Pro:15/TP1A.220905.001/A.2d75b19-93215:user/release-keys" + }, + { + "MANUFACTURER": "Moto", + "BRAND": "Moto", + "MODEL": "Moto Edge 40 Pro", + "PRODUCT": "edge40pro", + "DEVICE": "edge40pro", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "15", + "BOOTLOADER": "MotoEdge40Pro_15.0.1", + "SERIAL": "MOTG654321", + "DISPLAY": "MotoEdge40Pro_15.0.1", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_Moto", + "FINGERPRINT": "Motorola/Moto Edge 40 Pro/edge40pro:15/TP1A.220905.001/A.3a71b93-97124:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Xiaomi 13", + "PRODUCT": "nuwa", + "DEVICE": "nuwa", + "BOARD": "sm8550", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "Xiaomi13_14.0.2", + "SERIAL": "MI1098765", + "DISPLAY": "Xiaomi13_14.0.2", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_Xiaomi", + "FINGERPRINT": "Xiaomi/nuwa/Xiaomi 13:14/TP1A.220905.001/A.7a91d19-63345:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO Neo 7", + "PRODUCT": "I2206", + "DEVICE": "I2206", + "BOARD": "sm8550", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "14", + "BOOTLOADER": "iQOONeo7_14.0.3", + "SERIAL": "IQO0987654", + "DISPLAY": "iQOONeo7_14.0.3", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_iQOO", + "FINGERPRINT": "iQOO/I2206/iQOO Neo 7:14/SP1A.210812.016/A.9a85b26-67134:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy Z Fold 5", + "PRODUCT": "SM-F946B", + "DEVICE": "SM-F946B", + "BOARD": "exynos2200", + "HARDWARE": "samsung", + "ID": "TP1A.220905.001", + "IMEI": "351561160767485", + "Android_Version": "14", + "BOOTLOADER": "GalaxyZFold5_14.0.1", + "SERIAL": "SAMSUNG123456", + "DISPLAY": "GalaxyZFold5_14.0.1", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos2200_Samsung", + "FINGERPRINT": "Samsung/Galaxy Z Fold 5/SM-F946B:14/TP1A.220905.001/A.2a92d83-66125:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 10 Pro", + "PRODUCT": "NE2210", + "DEVICE": "NE2210", + "BOARD": "sm8550", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "15", + "BOOTLOADER": "OnePlus10Pro_15.0.2", + "SERIAL": "OP98765432", + "DISPLAY": "OnePlus10Pro_15.0.2", + "HOST": "oneplus_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_OnePlus", + "FINGERPRINT": "OnePlus/NE2210/OnePlus 10 Pro:15/SP1A.210812.016/A.3b91f82-91372:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme 9 Pro+", + "PRODUCT": "RMX3393", + "DEVICE": "RMX3393", + "BOARD": "sm6350", + "HARDWARE": "qcom", + "ID": "SP1A.220812.016", + "Android_Version": "14", + "BOOTLOADER": "Realme9Pro+_14.0.2", + "SERIAL": "RMX1234567", + "DISPLAY": "Realme9Pro+_14.0.2", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Realme", + "FINGERPRINT": "Realme/RMX3393/Realme 9 Pro+:14/SP1A.220812.016/G.2a75b19-19315:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo V27 Pro", + "PRODUCT": "V2246", + "DEVICE": "V2246", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "15", + "BOOTLOADER": "VivoV27Pro_15.0.1", + "SERIAL": "VIVO7654321", + "DISPLAY": "VivoV27Pro_15.0.1", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Vivo", + "FINGERPRINT": "Vivo/V2246/Vivo V27 Pro:15/SP1A.210812.016/G.7a75c12-47351:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo Find X5 Pro", + "PRODUCT": "CPH2201", + "DEVICE": "CPH2201", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "15", + "BOOTLOADER": "OppoFindX5Pro_15.0.2", + "SERIAL": "OPPO0987654", + "DISPLAY": "OppoFindX5Pro_15.0.2", + "HOST": "oppo_build_server", + "RADIO": "Snapdragon_X65", + "RADIO_VERSION": "QCOM_X65_Oppo", + "FINGERPRINT": "Oppo/CPH2201/Oppo Find X5 Pro:15/SP1A.210812.016/G.4a63c29-78421:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Zero Ultra", + "PRODUCT": "X6813", + "DEVICE": "X6813", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "InfinixZeroUltra_14.0.1", + "SERIAL": "INFINIX563785", + "DISPLAY": "InfinixZeroUltra_14.0.1", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X6813/Infinix Zero Ultra:14/TP1A.220905.001/G.1a72c29-67451:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO X5 Pro", + "PRODUCT": "mondrian", + "DEVICE": "mondrian", + "BOARD": "sm8550", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "POCOX5Pro_13.0.1", + "SERIAL": "POCO12344321", + "DISPLAY": "POCOX5Pro_13.0.1", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_POCO", + "FINGERPRINT": "POCO/mondrian/POCO X5 Pro:13/TP1A.220905.001/G.3a61d92-57341:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Phantom X2", + "PRODUCT": "AD8", + "DEVICE": "AD8", + "BOARD": "mt6895", + "HARDWARE": "mediatek", + "ID": "SP1A.210812.016", + "Android_Version": "14", + "BOOTLOADER": "TecnoPhantomX2_14.0.1", + "SERIAL": "TECNO198765", + "DISPLAY": "TecnoPhantomX2_14.0.1", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/AD8/Tecno Phantom X2:14/SP1A.210812.016/G.2b75b24-81932:user/release-keys" + }, + { + "MANUFACTURER": "Moto", + "BRAND": "Moto", + "MODEL": "Moto Edge 30", + "PRODUCT": "edge30", + "DEVICE": "edge30", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "14", + "BOOTLOADER": "MotoEdge30_14.0.3", + "SERIAL": "MOTG456789", + "DISPLAY": "MotoEdge30_14.0.3", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Moto", + "FINGERPRINT": "Motorola/Moto Edge 30/edge30:14/SP1A.210812.016/G.4b73d91-38128:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Xiaomi 12", + "PRODUCT": "cody", + "DEVICE": "cody", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "15", + "BOOTLOADER": "Xiaomi12_15.0.1", + "SERIAL": "MI2345678", + "DISPLAY": "Xiaomi12_15.0.1", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_Xiaomi", + "FINGERPRINT": "Xiaomi/cody/Xiaomi 12:15/TP1A.220905.001/G.1a91d17-65328:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO 11", + "PRODUCT": "I2202", + "DEVICE": "I2202", + "BOARD": "sm8550", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "iQOO11_14.0.2", + "SERIAL": "IQO332546", + "DISPLAY": "iQOO11_14.0.2", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_iQOO", + "FINGERPRINT": "iQOO/I2202/iQOO 11:14/TP1A.220905.001/G.3b65d82-87341:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy S22 Ultra", + "PRODUCT": "SM-S908E", + "DEVICE": "SM-S908E", + "BOARD": "exynos2200", + "HARDWARE": "samsung", + "ID": "TP1A.220905.001", + "IMEI": "350280381492614", + "Android_Version": "14", + "BOOTLOADER": "GalaxyS22Ultra_14.0.3", + "SERIAL": "SAMSUNG876543", + "DISPLAY": "GalaxyS22Ultra_14.0.3", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos2200_Samsung", + "FINGERPRINT": "Samsung/Galaxy S22 Ultra/SM-S908E:14/TP1A.220905.001/G.2b75c27-38172:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 9 Pro", + "PRODUCT": "LE2121", + "DEVICE": "LE2121", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "15", + "BOOTLOADER": "OnePlus9Pro_15.0.3", + "SERIAL": "OP7654321", + "DISPLAY": "OnePlus9Pro_15.0.3", + "HOST": "oneplus_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_OnePlus", + "FINGERPRINT": "OnePlus/LE2121/OnePlus 9 Pro:15/SP1A.210812.016/G.7a61d35-58239:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme GT 2 Pro", + "PRODUCT": "RMX3300", + "DEVICE": "RMX3300", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "15", + "BOOTLOADER": "RealmeGT2Pro_15.0.2", + "SERIAL": "RMX44321", + "DISPLAY": "RealmeGT2Pro_15.0.2", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_Realme", + "FINGERPRINT": "Realme/RMX3300/Realme GT 2 Pro:15/SP1A.210812.016/K.2a75b19-19315:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo V23 Pro", + "PRODUCT": "V2132", + "DEVICE": "V2132", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "VivoV23Pro_14.0.3", + "SERIAL": "VIVO987654", + "DISPLAY": "VivoV23Pro_14.0.3", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Vivo", + "FINGERPRINT": "Vivo/V2132/Vivo V23 Pro:14/TP1A.220905.001/K.2a75b19-19315:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo Reno 8 Pro", + "PRODUCT": "CPH2343", + "DEVICE": "CPH2343", + "BOARD": "sm7325", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "15", + "BOOTLOADER": "OppoReno8Pro_15.0.1", + "SERIAL": "OPPO654321", + "DISPLAY": "OppoReno8Pro_15.0.1", + "HOST": "oppo_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_Oppo", + "FINGERPRINT": "Oppo/CPH2343/Oppo Reno 8 Pro:15/TP1A.220905.001/K.4a76b17-58421:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Zero 5G", + "PRODUCT": "X6810", + "DEVICE": "X6810", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "SP1A.220812.016", + "Android_Version": "14", + "BOOTLOADER": "InfinixZero5G_14.0.2", + "SERIAL": "INFINIX789101", + "DISPLAY": "InfinixZero5G_14.0.2", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X6810/Infinix Zero 5G:14/SP1A.220812.016/K.2b75d92-58451:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO F4", + "PRODUCT": "mondrian", + "DEVICE": "mondrian", + "BOARD": "sm8550", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "POCOF4_14.0.1", + "SERIAL": "POCO987654", + "DISPLAY": "POCOF4_14.0.1", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_POCO", + "FINGERPRINT": "POCO/mondrian/POCO F4:14/TP1A.220905.001/K.3a75c19-67221:user/release-keys" + }, + { + "MANUFACTURER": "Tecno", + "BRAND": "Tecno", + "MODEL": "Tecno Spark 9 Pro", + "PRODUCT": "AD7", + "DEVICE": "AD7", + "BOARD": "mt6785", + "HARDWARE": "mediatek", + "ID": "SP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "TecnoSpark9Pro_13.0.2", + "SERIAL": "TECNO234987", + "DISPLAY": "TecnoSpark9Pro_13.0.2", + "HOST": "tecno_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Tecno", + "FINGERPRINT": "Tecno/AD7/Tecno Spark 9 Pro:13/SP1A.220905.001/K.5a75c28-88222:user/release-keys" + }, + { + "MANUFACTURER": "Moto Fusion", + "BRAND": "Moto", + "MODEL": "Moto Fusion 5G", + "PRODUCT": "fusion", + "DEVICE": "fusion", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "14", + "BOOTLOADER": "MotoFusion_14.0.3", + "SERIAL": "MOTO654321", + "DISPLAY": "MotoFusion_14.0.3", + "HOST": "motorola_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_Moto", + "FINGERPRINT": "Motorola/Moto Fusion 5G/fusion:14/SP1A.210812.016/K.3a71c12-19318:user/release-keys" + }, + { + "MANUFACTURER": "Xiaomi", + "BRAND": "Xiaomi", + "MODEL": "Xiaomi 11T Pro", + "PRODUCT": "cody", + "DEVICE": "cody", + "BOARD": "sm8550", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "13", + "BOOTLOADER": "Xiaomi11TPro_13.0.2", + "SERIAL": "MI5674321", + "DISPLAY": "Xiaomi11TPro_13.0.2", + "HOST": "xiaomi_build_server", + "RADIO": "Snapdragon_X60", + "RADIO_VERSION": "QCOM_X60_Xiaomi", + "FINGERPRINT": "Xiaomi/cody/Xiaomi 11T Pro:13/TP1A.220905.001/K.7a76b15-58239:user/release-keys" + }, + { + "MANUFACTURER": "iQOO", + "BRAND": "iQOO", + "MODEL": "iQOO Neo 6", + "PRODUCT": "I2205", + "DEVICE": "I2205", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "iQOONeo6_14.0.2", + "SERIAL": "IQO5678123", + "DISPLAY": "iQOONeo6_14.0.2", + "HOST": "iqoo_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_iQOO", + "FINGERPRINT": "iQOO/I2205/iQOO Neo 6:14/SP1A.220905.001/K.6a75b19-49321:user/release-keys" + }, + { + "MANUFACTURER": "Samsung", + "BRAND": "Samsung", + "MODEL": "Galaxy Z Fold 4", + "PRODUCT": "SM-F936U", + "DEVICE": "SM-F936U", + "BOARD": "exynos2200", + "HARDWARE": "samsung", + "ID": "TP1A.220905.001", + "IMEI": "351561165602935", + "Android_Version": "15", + "BOOTLOADER": "GalaxyZF4_15.0.3", + "SERIAL": "SAMSUNG432109", + "DISPLAY": "GalaxyZF4_15.0.3", + "HOST": "samsung_build_server", + "RADIO": "Exynos_LTE", + "RADIO_VERSION": "Exynos2200_Samsung", + "FINGERPRINT": "Samsung/Galaxy Z Fold 4/SM-F936U:15/TP1A.220905.001/K.3a76b12-90321:user/release-keys" + }, + { + "MANUFACTURER": "OnePlus", + "BRAND": "OnePlus", + "MODEL": "OnePlus 10 Pro", + "PRODUCT": "LE2123", + "DEVICE": "LE2123", + "BOARD": "sm8350", + "HARDWARE": "qcom", + "ID": "SP1A.210812.016", + "Android_Version": "14", + "BOOTLOADER": "OnePlus10Pro_14.0.2", + "SERIAL": "OP9876543", + "DISPLAY": "OnePlus10Pro_14.0.2", + "HOST": "oneplus_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_OnePlus", + "FINGERPRINT": "OnePlus/LE2123/OnePlus 10 Pro:14/SP1A.210812.016/K.5a72d15-47312:user/release-keys" + }, + { + "MANUFACTURER": "Realme", + "BRAND": "Realme", + "MODEL": "Realme GT 2 Pro", + "PRODUCT": "RMX3300", + "DEVICE": "RMX3300", + "BOARD": "sm8450", + "HARDWARE": "qcom", + "ID": "SP1A.220812.016", + "Android_Version": "15", + "BOOTLOADER": "RealmeGT2Pro_15.0.1", + "SERIAL": "RMX567123", + "DISPLAY": "RealmeGT2Pro_15.0.1", + "HOST": "realme_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_Realme", + "FINGERPRINT": "Realme/RMX3300/Realme GT 2 Pro:15/SP1A.220812.016/K.2a75b19-19315:user/release-keys" + }, + { + "MANUFACTURER": "Vivo", + "BRAND": "Vivo", + "MODEL": "Vivo V23 Pro", + "PRODUCT": "V2132", + "DEVICE": "V2132", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "VivoV23Pro_14.0.2", + "SERIAL": "VIVO234567", + "DISPLAY": "VivoV23Pro_14.0.2", + "HOST": "vivo_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Vivo", + "FINGERPRINT": "Vivo/V2132/Vivo V23 Pro:14/TP1A.220905.001/K.3b75c19-45231:user/release-keys" + }, + { + "MANUFACTURER": "Oppo", + "BRAND": "Oppo", + "MODEL": "Oppo Reno 8 Pro", + "PRODUCT": "CPH2343", + "DEVICE": "CPH2343", + "BOARD": "sm7325", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "15", + "BOOTLOADER": "OppoReno8Pro_15.0.2", + "SERIAL": "OPPO987654", + "DISPLAY": "OppoReno8Pro_15.0.2", + "HOST": "oppo_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_Oppo", + "FINGERPRINT": "Oppo/CPH2343/Oppo Reno 8 Pro:15/TP1A.220905.001/K.4a75b19-54321:user/release-keys" + }, + { + "MANUFACTURER": "Infinix", + "BRAND": "Infinix", + "MODEL": "Infinix Zero 5G", + "PRODUCT": "X6810", + "DEVICE": "X6810", + "BOARD": "mt6893", + "HARDWARE": "mediatek", + "ID": "SP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "InfinixZero5G_14.0.3", + "SERIAL": "INFINIX891011", + "DISPLAY": "InfinixZero5G_14.0.3", + "HOST": "infinix_build_server", + "RADIO": "MTK_LTE", + "RADIO_VERSION": "MTK_LTE_Infinix", + "FINGERPRINT": "Infinix/X6810/Infinix Zero 5G:14/SP1A.220905.001/K.2a75b19-19315:user/release-keys" + }, + { + "MANUFACTURER": "POCO", + "BRAND": "POCO", + "MODEL": "POCO X4 Pro 5G", + "PRODUCT": "mondrian", + "DEVICE": "mondrian", + "BOARD": "sm8550", + "HARDWARE": "qcom", + "ID": "TP1A.220905.001", + "Android_Version": "14", + "BOOTLOADER": "POCOX4Pro_14.0.2", + "SERIAL": "POCO123456", + "DISPLAY": "POCOX4Pro_14.0.2", + "HOST": "poco_build_server", + "RADIO": "Snapdragon_X70", + "RADIO_VERSION": "QCOM_X70_POCO", + "FINGERPRINT": "POCO/mondrian/POCO X4 Pro 5G:14/TP1A.220905.001/K.5a75b19-40234:user/release-keys" + } + + ] + self.selected_device = {} + + + # ---------------- Get Random Device Info ---------------- + def get_random_device_info(self): + + self.selected_device = M.random.choice(self.device_info_list) + + print(f'{C.X}{C.C} Fake Device Info Generate\n\n') + + for key, value in self.selected_device.items(): + setattr(self, f"is_{key.lower()}", value) + print(f'{C.G}︻デ═一 {C.C}{key} {C.OG}➸❥ {C.Y}{value}') + + print(f"\n{C.CC}{'_' * 61}\n\n") diff --git a/ApkPatcher/Patch/Smali_Patch.py b/ApkPatcher/Patch/Smali_Patch.py new file mode 100644 index 0000000..cbac18f --- /dev/null +++ b/ApkPatcher/Patch/Smali_Patch.py @@ -0,0 +1,400 @@ +from.Package import P + +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +C_Line = f"{C.CC}{'_' * 61}" + + +# ---------------- Scan Target Regex ---------------- +def Regex_Scan(Smali_Path, Target_Regex, Count, Lock, isPKG, isCoreX): + + if isPKG: + Target_Regex = [P.Match_Regex[1:-1]] if Smali_Path.endswith('.xml') else Target_Regex + [P.Match_Regex] if Smali_Path.endswith('.smali') else [] + + if isCoreX: + Target_Regex = Target_Regex + [ r'\.class public Lcom/pairip/VMRunner;\n'] + + Smali = open(Smali_Path, 'r', encoding='utf-8', errors='ignore').read() + + Regexs = [M.re.compile(r) for r in Target_Regex] + + # ---------------- For Regex Scan ---------------- + for Regex in Regexs: + if Regex.search(Smali): + + if Lock: + try: + with Lock: + Count.value += 1 + + print(f"\r{C.S} Find Target Smali {C.E} {C.OG}➸❥ {C.PN}{Count.value}", end='', flush=True) + + except Exception: + return None + + else: + Count[0] += 1 + + print(f"\r{C.S} Find Target Smali {C.E} {C.OG}➸❥ {C.PN}{Count[0]}", end='', flush=True) + + return Smali_Path + + # ---------------- For String Scan ( Without Regex ) ---------------- + #for String in Target_String: + #if String in Smali: + #with Lock: + #Count.value += 1 + #print(f"\r[ Find Target Smali ] ➸❥ {Count.value}", end='', flush=True) + #return Smali_Path + + +# ---------------- Apply Smali_Patch ---------------- +def Smali_Patch(decompile_dir, smali_folders, isAPKEditor, CA_Cert, isID, isPairip, isPairip_lib, isPKG, isPurchased, isScreenShot, Skip_Patch, isUSB, isCoreX): + + Smali_Paths, Match_Smali = [], [] + + patterns = [ + # ---------------- VPN Bypass ---------------- + ( + r'(const/4 [pv]\d+, 0x4[^>]*?invoke-\w+ \{[^\}]*\}, Landroid/net/NetworkCapabilities;->hasTransport\(I\)Z[^>]*?)move-result ([pv]\d+)', + r'\1const/4 \2, 0x0', + "Bypassed Vpn/Proxy Detection NetworkCapabilities hasTransport" + ), + ( + r'(Ljava/net/NetworkInterface;->(?:isUp|isVirtual|isLoopback)\(\)Z[^>]*?)move-result ([pv]\d+)', + r'\1const/4 \2, 0x0', + "Bypassed Vpn/Proxy Detection NetworkInterface isUp" + ), + ( + r'(const-string [pv]\d+, "(tun|tunl0|tun0|utun0|utun1|utun2|utun3|utun4|pptp|ppp|pp0|ppp0|p2p0|ccmni0|ipsec)"[^>]*?invoke-\w+ \{[^\}]*\}, L[^\(]+;->\S+\(Ljava/lang/CharSequence;\)Z[^>]*?)move-result ([pv]\d+)', + r'\1const/4 \3, 0x0', + "Bypassed Vpn/Proxy Detection NetworkInterface" + ), + + # ---------------- Mock Location & Update & Pkg Install Fixed ---------------- + ( + r'(invoke-virtual \{[^\}]*\}, Landroid/location/Location;->(?:isFromMockProvider|isMock)\(\)Z[^>]*?)move-result ([pv]\d+)', + r'\1const/4 \2, 0x0', + "Bypassed Mock Detection" + ), + ( + r'(invoke-virtual \{[^\}]*\}, Landroid/content/pm/PackageManager;->getInstallerPackageName\(Ljava/lang/String;\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + r'\1const-string \2, "com.android.vending"', + "Fixed Installer" + ), + + # ---------------- SSL BYPASS ( MITM ) ---------------- + ( + r'(\.method [^(]*verify\([^\)]*(?:Ljavax/net/ssl/SSLSession;|Ljava/security/cert/X509Certificate;)[^\)]*\)Z\s+.locals \d+)[\s\S]*?(\n.end method)', + r'\1\n' + r' const v0, 0x1\n' + r' return v0\2', + "Verify SSLSession & X509Certificate" + ), + ( + r'(\.method [^(]*checkServerTrusted\([^\)]*Ljava/security/cert/X509Certificate;[^\)]*\)Ljava/util/List;\s+.locals \d+)[\s\S]*?(\n.end method)', + r'\1\n' + r' new-instance v0, Ljava/util/ArrayList;\n' + r' invoke-direct {v0}, Ljava/util/ArrayList;->()V\n' + r' return-object v0\2', + "checkServerTrusted" + ), + ( + r'(\.method [^(]*check(?:Client|Server)Trusted\([^\)]*Ljava/security/cert/X509Certificate;[^\)]*\)V\s+.locals \d+)[\s\S]*?(\n.end method)', + r'\1\n\treturn-void\2', + "check(Client|Server)Trusted" + ), + ( + r'(\.method [^(]*check\(Ljava/lang/String;(?:Ljava/util/List;|\[Ljava/security/cert/Certificate;)\)V\s+.locals \d+)[\s\S]*?(\n.end method)', + r'\1\n\treturn-void\2', + "CertificatePinner & HostnameVerifier" + ), + ( + r'(\.method [^(]*check\$okhttp\(Ljava/lang/String;[^\)]*\)V\s+.locals \d+)[\s\S]*?(\n.end method)', + r'\1\n\treturn-void\2', + "check$okhttp" + ), + ( + r'(\.method [^(]*getAcceptedIssuers\(\)\[Ljava/security/cert/X509Certificate;\s+.locals \d+)[\s\S]*?(\n.end method)', + r'\1\n' + r' const/4 v0, 0x0\n' + r' new-array v0, v0, [Ljava/security/cert/X509Certificate;\n' + r' return-object v0\2', + "getAcceptedIssuers" + ), + ( + r'(\.method [^(]*\S+\(Ljava/lang/String;[^\)]*\)V\s+.locals \d+)(?:(?!\.end method)[\s\S])*?(?:check-cast [pv]\d+, Ljava/security/cert/X509Certificate;|Ljavax/net/ssl/SSLPeerUnverifiedException;)(?:(?!\.end method)[\s\S])*?(\n.end method)', + r'\1\n\treturn-void\2', + "" + ), + + # ---------------- Fix Play ---------------- + ( + r'(invoke-interface \{[^\}]*\}, Lcom/google/android/vending/licensing/Policy;->allowAccess\(\)Z[^>]*?\s+)move-result ([pv]\d+)', + r'\1const/4 \2, 0x1', + "Bypass Client-Side LVL (allowAccess)" + ), + ( + r'(\.method [^(]*connectToLicensingService\(\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "connectToLicensingService" + ), + ( + r'(\.method [^(]*initializeLicenseCheck\(\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "initializeLicenseCheck" + ), + ( + r'(\.method [^(]*processResponse\(ILandroid/os/Bundle;\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "processResponse" + ) + ] + + # if CA_Cert: + # sha1, sha256 = P().Hash(CA_Cert[0]) + # ---------------- SHA-256 & SHA-1 ---------------- + # patterns.extend([ + # (r'(\.method [^(]*\S+\((?:Ljava/security/cert/X509Certificate;|[^)]*)\)Ljava/lang/String;\s+.locals \d+)(?:(?!\.end\smethod)[\s\S])*?"sha256/[^"]*"(?:(?!\.end\smethod)[\s\S])*?(([pv]\d+)\n.end method)', fr'\1\n\tconst-string \3, "sha256/{sha256}"\n\treturn-object \2', f"SHA-256 ➸❥ {C.OG}{sha256}"), + # (r'(\.method public [^(]*\S+\((?:Ljava/security/cert/X509Certificate;|[^)]*)\)Ljava/lang/String;\s+.*\s+)(?:(?!\.end\smethod)[\s\S])*?"sha1/[^"]*"(?:(?!\.end\smethod)[\s\S])*?(([pv]\d+)\n.end method)', fr'\1\n\tconst-string \3, "sha1/{sha1}"\n\treturn-object \2', f"SHA-1 ➸❥ {C.OG}{sha1}") + # ]) + + + # ---------------- Custom Device ID ---------------- + if isID: + patterns.append( + ( + r'(const-string [pv]\d+, "android_id"[^>]*?invoke-static \{[^\}]*\}, Landroid/provider/Settings\$Secure;->getString\(Landroid/content/ContentResolver;Ljava/lang/String;\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + rf'\1const-string \2, "{isID}"', + f"Custom Android ID ➸❥ {C.OG}{isID}" + ) + ) + + + # ---------------- isPairip ---------------- + if isPairip and isPairip_lib: + patterns.extend( + [ + ( + r'invoke-static \{[^\}]*\}, Lcom/pairip/SignatureCheck;->verifyIntegrity\(Landroid/content/Context;\)V', + r'#', + "VerifyIntegrity" + ), + ( + r'(\.method [^(]*verifyIntegrity\(Landroid/content/Context;\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "VerifyIntegrity" + ), + ( + r'(\.method [^(]*verifySignatureMatches\(Ljava/lang/String;\)Z\s+.locals \d+\s+)[\s\S]*?(\s+return ([pv]\d+)\n.end method)', + r'\1const/4 \3, 0x1\2', + "verifySignatureMatches" + ) + ] + ) + + + # ---------------- Bypass Package Detection ---------------- + if isPKG: + patterns.extend( + [ + # ---------------- Kill Process & Exit ---------------- + ( + r'invoke-static \{[^\}]*\}, (?:Ljava/lang/System;->exit|Landroid/os/Process;->killProcess)\(I\)V', + 'nop', + "Blocked System.exit & Process.killProcess" + ), + + # ---------------- Xposed Bypass & Frida Bypass ---------------- + ( + r'(const-string [pv]\d+, )"de.robv.android.xposed', + r'\1"com.Fuck.U', + "Bypassed Xposed Detection" + ), + ( + r'const-string [pv]\d+, "(generic|goldfish)"[^>]*?invoke-static \{[^\}]*\}, Landroid/os/Build;->get(Device|Hardware)\(\)Ljava/lang/String;[^>]*?move-result-object [pv]\d+[^>]*?invoke-virtual \{[^\}]*\}, Ljava/lang/String;->contains\(Ljava/lang/CharSequence;\)Z[^>]*move-result ([pv]\d+)', + r'const/4 \3, 0x0', + "Bypassed Device detection" + ), + ( + r'const-string [pv]\d+, "/data/local/tmp/(?:frida|frida-server)"[^>]*?invoke-static \{[^\}]*\}, Ljava/io/File;->exists\(\)Z[^>]*?move-result ([pv]\d+)', + r'const/4 \1, 0x0', + "Bypassed Frida Detection" + ) + ] + ) + + + # ---------------- Purchased Status ---------------- + if isPurchased: + patterns.extend( + [ + ( + r'(\.method [^(]*(?:getPrice|getMrp|getPro_mrp|getTotal(?:_)?Price|getOffer(?:_)?price|getSub_pack_price|getSub_actual_price|getActual_price|getDiscount(?:_)?price|getRegistration_price|getProduct_amount|getIs_locked)\(\)Ljava/lang/String;(?:(?!const-string [pv]\d+, "0")[\s\S])*?)(return-object ([pv]\d+)\n.end method)', + r'\1const-string \3, "0"\n\t\2', + "Patch 1" + ), + ( + r'(\.method [^(]*(?:is(?:_)?Paid|getIs(?:_)?Paid|is(?:_)?purchase(?:d)?|get(?:_)?Purchase(?:d)?|getIs(?:_)?purchase(?:d)?|getPurchaseStatus|getIs_pass|getIs_pro|getIs_pro_purchased|getIs_pro_content|isOwn|isLifetime|is(?:_)?Trial)\(.*\)(?:Ljava/lang/String;|Ljava/lang/Integer;)(?:(?!const-string [pv]\d+, "1")[\s\S])*?)(return-object ([pv]\d+)\n.end method)', + r'\1const-string \3, "1"\n\t\2', + "Patch 2" + ), + ( + r'(\.method [^(]*(?:is(?:_)?Paid|getInsIspaid|is(?:_)?purchase(?:d)?|getUser_purchase_status|getPurchaseId|is(?:_)?Trial)\(\)(?:I|Z)(?:(?!const [pv]\d+, 0x1)[\s\S])*?)(return ([pv]\d+)\n.end method)', + r'\1const \3, 0x1\n\t\2', + "Patch 3" + ) + ] + ) + + + # ---------------- Bypass SS ---------------- + if isScreenShot: + patterns.extend( + [ + ( + r'(const/16 [pv]\d+, 0x)200(0\s+(.line \d+\s+)*?invoke-virtual \{[^\}]*\}, Landroid/view/Window;->(?:add|set)Flags\(II\)V)', + r'\1\2', + "Bypassed Anti-Screen Detection <(add|set)Flags>" + ), + ( + r'(invoke-static \{[^\}]*\}, L[^\(]+;->isSecuredNow\(Landroid/view/Window;\)Z\s+(.line \d+\s+)*?move-result [pv]\d+\s+(.line \d+\s+)*?const/16 ([pv]\d+),) 0x2000', + r'\1 0x0', + "Bypassed Anti-Screen Detection " + ), + ( + r'(iget [pv]\d+, [pv]\d+, Landroid/view/WindowManager\$LayoutParams;->flags:I\s+(.line \d+\s+)*?or-int/lit16 [pv]\d+, [pv]\d+,) 0x2000', + r'\1 0x0', + "Bypassed Anti-Screen Detection " + ), + ( + r'(invoke-virtual \{([pv]\d+), ([pv]\d+)\}, Landroid/view/SurfaceView;->setSecure\(Z\)V)', + r'const/4 \3, 0x0\n\n\t\1', + "Bypassed Anti-Screen Detection " + ) + ] + ) + + + # ---------------- Remove USB Debugging ---------------- + if isUSB: + patterns.extend( + [ + ( + r'(const-string [pv]\d+, "development_settings_enabled"[^>]*invoke-static \{[^\}]*\}, L[^\(]+;->getInt\([^\)]*Ljava\/lang\/String;I\)I[^>]*)move-result ([pv]\d+)', + r'\1const/4 \2, 0x0', + 'Remove USB Debugging ' + ), + ( + r'(const-string [pv]\d+, "adb_enabled"[^>]*invoke-static \{[^\}]*\}, L[^\(]+;->getInt\([^\(]*Ljava\/lang\/String;I\)I[^>]*)move-result ([pv]\d+)', + r'\1const/4 \2, 0x0', + 'Remove USB Debugging ' + ) + ] + ) + + + Target_Regex = [p[0] for p in patterns] + + + # ---------------- Spoof Package Detection ---------------- + if isPKG: + counter = [1] + patterns.extend( + [ + ( + rf'{P.Match_Regex}', lambda m: + f'"com.Fuck.Me{(lambda x: counter.__setitem__(0, x+1) or x)(counter[0])}"', + 'Spoof Package Detection in Dex' + ), + ( + rf'{P.Match_Regex[1:-1]}', lambda m: + f'"com.Fuck.Me{(lambda x: counter.__setitem__(0, x+1) or x)(counter[0])}"', + 'Spoof Package Detection in Res' + ) + ] + ) + + + # ---------------- loadLibrary ➢ '_Pairip_CoreX' ---------------- + if isCoreX: + patterns.append( + ( + r'(\.method [^<]*\(\)V\s+.locals \d+\n)', + r'\1' + r' const-string v0, "_Pairip_CoreX"\n' + r' invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V\n', + f'CoreX_Hook ➸❥ {C.OG}"lib_Pairip_CoreX.so"' + ) + ) + + if isPKG: + smali_folders = [M.os.path.join(decompile_dir, 'resources' if isAPKEditor else 'res')] + smali_folders + + for smali_folder in smali_folders: + for root, _, files in M.os.walk(smali_folder): + for file in files: + if file.endswith(('.xml', '.smali') if isPKG else ('.smali')): + Smali_Paths.append(M.os.path.join(root, file)) + + try: + # ---------------- Multi Threading ---------------- + with M.Manager() as MT: + Count = MT.Value('i', 0); Lock = MT.Lock() + with M.Pool(M.cpu_count()) as PL: + Match_Smali = [path for path in PL.starmap(Regex_Scan, [(Smali_Path, Target_Regex, Count, Lock, isPKG, isCoreX) for Smali_Path in Smali_Paths]) if path] + + except Exception: + # ---------------- Single Threading ---------------- + Count = [0] + for Smali_Path in Smali_Paths: + result = Regex_Scan(Smali_Path, Target_Regex, Count, None, isPKG, isCoreX) + + if result: + Match_Smali.append(result) + + print(f" {C.G} ✔", flush=True) + + print(f'\n{C_Line}\n') + + if Match_Smali: + for pattern, replacement, description in patterns: + + Count_Applied = 0 + + Applied_Files = set() + + if description in Skip_Patch: + print(f"\n{C.S} Skip Patch {C.E} {C.OG}➸❥ {C.G}{description}\n") + + continue + + for file_path in Match_Smali: + if description.startswith("CoreX_Hook") and not file_path.endswith("VMRunner.smali"): + continue + + content = open(file_path, 'r', encoding='utf-8', errors='ignore').read() + + new_content = M.re.sub(pattern, replacement, content) + + if new_content != content: + if file_path not in Applied_Files: + Applied_Files.add(file_path) + + Count_Applied += 1 + + open(file_path, 'w', encoding='utf-8', errors='ignore').write(new_content) + + if Count_Applied > 0: + print(f"\n{C.S} Tag {C.E} {C.G}{description}") + + print(f"\n{C.S} Pattern {C.E} {C.OG}➸❥ {C.P}{pattern}") + + for file_path in Applied_Files: + print(f"{C.G} |\n └──── {C.CC}~{C.G}$ {C.Y}{M.os.path.basename(file_path)} {C.G} ✔") + + print( + f"\n{C.S} Pattern Applied {C.E} {C.OG}➸❥ {C.PN}{Count_Applied} {C.C}Time/Smali {C.G} ✔\n" + f"\n{C_Line}\n" + ) \ No newline at end of file diff --git a/ApkPatcher/Patch/Spoof_Patch.py b/ApkPatcher/Patch/Spoof_Patch.py new file mode 100644 index 0000000..19b09e6 --- /dev/null +++ b/ApkPatcher/Patch/Spoof_Patch.py @@ -0,0 +1,328 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +from.Random_INFO import R_I; RI = R_I() + +C_Line = f"{C.CC}{'_' * 61}" + + +# ---------------- Generate IMEI ---------------- +def generate_imei(): + imei = ''.join(str(M.random.randint(0, 9)) for _ in range(14)) + check_digit = (sum(int(d) if i % 2 == 0 else sum(divmod(int(d) * 2, 10)) for i, d in enumerate(imei)) * 9) % 10 + return imei + str(check_digit) + + +isIMEI = generate_imei() + + +# ---------------- Generate lat lon hex ---------------- +def generate_lat_lon_hex(): + scale_factor = 10**12 + lat, lon = round(M.random.uniform(-90.0, 90.0), 6), round(M.random.uniform(-180.0, 180.0), 6) + lat_hex = hex(int(abs(lat) * scale_factor)) + "L" + lon_hex = hex(int(abs(lon) * scale_factor)) + "L" + return lat_hex, lon_hex + + +lat_hex, lon_hex = generate_lat_lon_hex() + + +# ---------------- Generate Mac Add ---------------- +def generate_mac_add(): + return ':'.join([''.join(M.random.choices('0123456789ABCDEF', k=2)) for _ in range(6)]) + + +isMac1, isMac2, isMac3, isMac4 = [generate_mac_add() for _ in range(4)] + + +# ---------------- Generate Device ID ---------------- +def generateDeviceId(): + volatile_seed = "12345" + seed = ''.join(M.random.choice(M.string.ascii_letters + M.string.digits) for _ in range(16)) + m = M.hashlib.md5() + m.update(seed.encode('utf-8') + volatile_seed.encode('utf-8')) + return m.hexdigest()[:16], seed + + +device_id, random_seed = generateDeviceId() + + +# ---------------- Regex Scan ---------------- +def Regex_Scan(Smali_Path, Target_Regex, Count, Lock): + + Smali = open(Smali_Path, 'r', encoding='utf-8', errors='ignore').read() + + Regexs = [M.re.compile(r) for r in Target_Regex] + + for Regex in Regexs: + if Regex.search(Smali): + + if Lock: + try: + with Lock: + Count.value += 1 + + print(f"\r{C.S} Find Target Smali {C.E} {C.OG}➸❥ {C.PN}{Count.value}", end='', flush=True) + + except Exception: + return None + + else: + Count[0] += 1 + + print(f"\r{C.S} Find Target Smali {C.E} {C.OG}➸❥ {C.PN}{Count[0]}", end='', flush=True) + + return Smali_Path + + +# ---------------- Patch Random Info ---------------- +def Patch_Random_Info(smali_folders, isID): + + RI.get_random_device_info() + + Smali_Paths, Match_Smali = [], [] + + patterns = [ + # ---------------- Build Info ---------------- + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;', + rf'const-string \1, "{RI.is_manufacturer}"', + f"MANUFACTURER ➸❥ {C.OG}{RI.is_manufacturer}" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->BRAND:Ljava/lang/String;', + rf'const-string \1, "{RI.is_brand}"', + f"BRAND ➸❥ {C.OG}{RI.is_brand}" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->MODEL:Ljava/lang/String;', + rf'const-string \1, "{RI.is_model}"', + f"MODEL ➸❥ {C.OG}{RI.is_model}" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->PRODUCT:Ljava/lang/String;', + rf'const-string \1, "{RI.is_product}"', + f"PRODUCT ➸❥ {C.OG}{RI.is_product}" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->DEVICE:Ljava/lang/String;', + rf'const-string \1, "{RI.is_device}"', + f"DEVICE ➸❥ {C.OG}{RI.is_device}" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->BOARD:Ljava/lang/String;', + rf'const-string \1, "{RI.is_board}"', + f"BOARD ➸❥ {C.OG}{RI.is_board}" + ), + ( + r'invoke-static \{\}, Landroid/os/Build;->getRadioVersion\(\)Ljava/lang/String;[^>]*?move-result-object ([pv]\d+)', + rf'const-string \1, "Unknown"', + f"getRadioVersion ➸❥ {C.OG}Unknown" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->RADIO:Ljava/lang/String;', + rf'const-string \1, "Unknown"', + f"RADIO ➸❥ {C.OG}Unknown" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->HARDWARE:Ljava/lang/String;', + rf'const-string \1, "{RI.is_hardware}"', + f"HARDWARE ➸❥ {C.OG}{RI.is_hardware}" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->BOOTLOADER:Ljava/lang/String;', + rf'const-string \1, "Unknown"', + f"BOOTLOADER ➸❥ {C.OG}Unknown" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->FINGERPRINT:Ljava/lang/String;', + rf'const-string \1, "{RI.is_fingerprint}"', + f"FINGERPRINT ➸❥ {C.OG}{RI.is_fingerprint}" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->ID:Ljava/lang/String;', + rf'const-string \1, "{RI.is_id}"', + f"ID ➸❥ {C.OG}{RI.is_id}" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->SERIAL:Ljava/lang/String;', + rf'const-string \1, "Unknown"', + f"SERIAL ➸❥ {C.OG}Unknown" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->DISPLAY:Ljava/lang/String;', + rf'const-string \1, "{RI.is_display}"', + f"DISPLAY ➸❥ {C.OG}{RI.is_display}" + ), + ( + r'sget-object ([pv]\d+), Landroid/os/Build;->HOST:Ljava/lang/String;', + rf'const-string \1, "localhost"', + f"HOST ➸❥ {C.OG}localhost" + ), + ( + r'const-string [pv]\d+, "(?:generic|goldfish)"[^>]*?invoke-static \{[^\}]*\}, Landroid/os/Build;->get(?:Device|Hardware)\(\)Ljava/lang/String;[^>]*?move-result-object [pv]\d+[^>]*?invoke-virtual \{[^\}]*\}, Ljava/lang/String;->contains\(Ljava/lang/CharSequence;\)Z[^>]*?move-result ([pv]\d+)', + rf'const/4 \1, 0x0', + "Bypassed Device detection" + ), + + # ---------------- Mock Location & Update & PKG Install Fixed ---------------- + ( + r'(invoke-virtual \{[^\}]*\}, Landroid/location/Location;->getLongitude\(\)D[^>]*?)move-result-wide ([pv]\d+)', + rf'\1const-wide \2, {lon_hex}', + f"Longitude ➸❥ {C.OG}{lon_hex}" + ), + ( + r'(invoke-virtual \{[^\}]*\}, Landroid/location/Location;->getLatitude\(\)D[^>]*?)move-result-wide ([pv]\d+)', + rf'\1const-wide \2, {lat_hex}', + f"Latitude ➸❥ {C.OG}{lat_hex}" + ), + ( + r'invoke-virtual \{[^\}]*\}, Landroid/location/Location;->(?:isFromMockProvider|isMock)\(\)Z[^>]*?move-result ([pv]\d+)', + rf'const/4 \1, 0x0', + "Bypassed Mock Detection" + ), + ( + r'iget-object ([pv]\d+), [pv]\d+, L[^;]*;->ip:Ljava/lang/String;', + rf'const-string \1, "127.0.0.1"', + f"IP To LocalHost ➸❥ {C.OG}127.0.0.1" + ), + ( + r'(invoke-virtual \{[^\}]*\}, Landroid/content/pm/PackageManager;->getInstallerPackageName\(Ljava/lang/String;\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + r'\1const-string \2, "com.android.vending"', + "Fixed Installer" + ), + + # ---------------- Settings$Secure ---------------- + ( + r'(const-string [pv]\d+, "bluetooth_address"[^>]*?invoke-static \{[^\}]*\}, Landroid/provider/Settings\$Secure;->getString\(Landroid/content/ContentResolver;Ljava/lang/String;\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + rf'\1const-string \2, "{isMac1}"', + f"Bluetooth Address ➸❥ {C.OG}{isMac1}" + ), + + # ---------------- Network Info ---------------- + ( + r'(invoke-virtual \{[^\}]*\}, Landroid/net/wifi/WifiInfo;->getBSSID\(\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + rf'\1const-string \2, "{isMac2}"', + f"WifiInfo BSSID ➸❥ {C.OG}{isMac2}" + ), + ( + r'(invoke-virtual \{[^\}]*\}, Landroid/net/wifi/WifiInfo;->getMacAddress\(\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + rf'\1const-string \2, "{isMac3}"', + f"WifiInfo MacAddress ➸❥ {C.OG}{isMac3}" + ), + ( + r'(invoke-virtual \{[^\}]*\}, Landroid/bluetooth/BluetoothDevice;->getAddress\(\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + rf'\1const-string \2, "{isMac4}"', + f"BluetoothDevice Address ➸❥ {C.OG}{isMac4}" + ), + + # ---------------- Telephony Manager ---------------- + ( + r'(invoke-virtual \{[^\}]*\}, Landroid/telephony/TelephonyManager;->getDeviceId\(\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + rf'\1const-string \2, "{isIMEI}"', + f"IMEI NO (Device ID) ➸❥ {C.OG}{isIMEI}" + ), + + # ---------------- Fix Play ---------------- + ( + r'(invoke-interface \{[^\}]*\}, Lcom/google/android/vending/licensing/Policy;->allowAccess\(\)Z[^>]*?\s+)move-result ([pv]\d+)', + r'\1const/4 \2, 0x1', + "Bypass Client-Side LVL (allowAccess)" + ), + ( + r'(\.method [^(]*connectToLicensingService\(\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "connectToLicensingService" + ), + ( + r'(\.method [^(]*initializeLicenseCheck\(\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "initializeLicenseCheck" + ), + ( + r'(\.method [^(]*processResponse\(ILandroid/os/Bundle;\)V\s+.locals \d+)[\s\S]*?(\s+return-void\n.end method)', + r'\1\2', + "processResponse" + ) + ] + + if isID: + # ---------------- Custom Device ID ---------------- + patterns.append( + ( + r'(const-string [pv]\d+, "android_id"[^>]*?invoke-static \{[^\}]*\}, Landroid/provider/Settings\$Secure;->getString\(Landroid/content/ContentResolver;Ljava/lang/String;\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + rf'\1const-string \2, "{isID}"', + f"Custom Android ID ➸❥ {C.OG}{isID}" + ) + ) + else: + patterns.append( + ( + r'(const-string [pv]\d+, "android_id"[^>]*?invoke-static \{[^\}]*\}, Landroid/provider/Settings\$Secure;->getString\(Landroid/content/ContentResolver;Ljava/lang/String;\)Ljava/lang/String;[^>]*?)move-result-object ([pv]\d+)', + rf'\1const-string \2, "{device_id}"', + f"Random Android ID ➸❥ {C.OG}{device_id}" + ) + ) + + Target_Regex = [p[0] for p in patterns] + + for smali_folder in smali_folders: + for root, _, files in M.os.walk(smali_folder): + for file in files: + if file.endswith('.smali'): + Smali_Paths.append(M.os.path.join(root, file)) + + try: + # ---------------- Multi Threading ---------------- + with M.Manager() as MT: + Count = MT.Value('i', 0); Lock = MT.Lock() + with M.Pool(M.cpu_count()) as PL: + Match_Smali = [path for path in PL.starmap(Regex_Scan, [(Smali_Path, Target_Regex, Count, Lock) for Smali_Path in Smali_Paths]) if path] + + except Exception: + # ---------------- Single Threading ---------------- + Count = [0] + for Smali_Path in Smali_Paths: + result = Regex_Scan(Smali_Path, Target_Regex, Count, None) + + if result: + Match_Smali.append(result) + + print(f" {C.G} ✔", flush=True) + + print(f'\n{C_Line}\n') + + if Match_Smali: + for pattern, replacement, description in patterns: + + Count_Applied = 0 + + Applied_Files = set() + + for file_path in Match_Smali: + + content = open(file_path, 'r', encoding='utf-8', errors='ignore').read() + + new_content = M.re.sub(pattern, replacement, content) + + if new_content != content: + if file_path not in Applied_Files: + Applied_Files.add(file_path) + + Count_Applied += 1 + + open(file_path, 'w', encoding='utf-8', errors='ignore').write(new_content) + + if Count_Applied > 0: + print(f"\n{C.S} Tag {C.E} {C.G}{description}") + + print(f"\n{C.S} Pattern {C.E} {C.OG}➸❥ {C.P}{pattern}") + + for file_path in Applied_Files: + print(f"{C.G} |\n └──── {C.CC}~{C.G}$ {C.Y}{M.os.path.basename(file_path)} {C.G} ✔") + + print( + f"\n{C.S} Pattern Applied {C.E} {C.OG}➸❥ {C.PN}{Count_Applied} {C.C}Time/Smali {C.G} ✔\n" + f"\n{C_Line}\n" + ) \ No newline at end of file diff --git a/ApkPatcher/Patch/TG_Patch.py b/ApkPatcher/Patch/TG_Patch.py new file mode 100644 index 0000000..f0dfd01 --- /dev/null +++ b/ApkPatcher/Patch/TG_Patch.py @@ -0,0 +1,490 @@ +# TG Patch Inspired By AbhiTheM0dder Script + +# Link - https://github.com/AbhiTheModder/termux-scripts/blob/main/tgpatcher.py + +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() +from ApkPatcher.Utils.Files_Check import FileCheck + +F = FileCheck(); F.Set_Path() + +C_Line = f"{C.CC}{'_' * 61}" + + +# ---------------- Regex Scan ---------------- +def Regex_Scan(Smali_Path, Target_Regex, Count, Lock): + + Smali = open(Smali_Path, 'r', encoding='utf-8', errors='ignore').read() + + Regexs = [M.re.compile(r) for r in Target_Regex] + + matched_idx = [] + + for idx, Regex in enumerate(Regexs): + if Regex.search(Smali): + matched_idx.append(idx) + + if matched_idx: + if Lock: + try: + with Lock: + Count.value += 1 + print(f"\r{C.S} Find Target Smali {C.E} {C.OG}➸❥ {C.PN}{Count.value}", end='', flush=True) + except Exception: + return None + else: + Count[0] += 1 + print(f"\r{C.S} Find Target Smali {C.E} {C.OG}➸❥ {C.PN}{Count[0]}", end='', flush=True) + + return (Smali_Path, matched_idx) + + +# ---------------- TG Smali Patch ---------------- +def TG_Smali_Patch(decompile_dir, smali_folders, isAPKEditor): + + Smali_Paths, Smali_Files, Match_Smali = [], [], [] + + Target_Smali = [ + "TextCell.smali", + "UserConfig.smali", + "StoryViewer.smali", + "PhotoViewer.smali", + "AndroidUtilities.smali", + "TranslateAlert2.smali", + "MessageObject.smali", + "StoriesController.smali", + "MessagesStorage.smali", + "FileLoadOperation.smali", + "FlagSecureReason.smali", + "SecretMediaViewer.smali", + "MessagesController.smali", + "PaymentFormActivity.smali", + "PremiumPreviewFragment.smali", + "ProfileActivity$SearchAdapter.smali", + "PremiumPreviewFragment$Adapter.smali", + "ConnectionsManager$GoogleDnsLoadTask.smali", + "ConnectionsManager$ResolveHostByNameTask.smali" + ] + + + # ---------------- is scan Patterns ---------------- + scanPatterns = [ + # ---------------- Bypass SS ---------------- + ( + r'(iget-boolean ([pv]\d+), [pv]\d+, Lorg/telegram/ui/[^;]+;->allowScreenshots:Z)', + r'\1\nconst \2, 0x1', + "Bypass Anti-Screen ", + [] + ), + ( + r'(sget-boolean ([pv]\d+), Lorg/telegram/messenger/SharedConfig;->allowScreenCapture:Z)', + r'\1\nconst \2, 0x1', + "Bypass Anti-Screen ", + [] + ), + + # ---------------- Access Banned Channels [Related] ---------------- + ( + r'(iget-boolean ([pv]\d+), [pv]\d+, Lorg/telegram/[^;]+;->isRestrictedMessage:Z)', + r'\1\n\tconst \2, 0x0', + "Access Banned Channels [Related]", + [] + ), + + # ---------------- Enabling Saving Media Everywhere ---------------- + ( + r'(iget-boolean ([pv]\d+), [pv]\d+, Lorg/telegram/[^;]+;->noforwards:Z)', + r'\1\n\tconst \2, 0x0', + "enableSavingMedia", + [] + ), + + # ---------------- make premiumLocked bool false ---------------- + ( + r'(iget-boolean ([pv]\d+), [pv]\d+, Lorg/telegram/[^;]+;->premiumLocked:Z)', + r'\1\n\tconst \2, 0x0', + "premiumLocked ➢ False", + [] + ) + ] + + + # ---------------- is smali Patterns ( only For Target_Smali ) ---------------- + smaliPatterns = [ + # ---------------- Bypass SS ---------------- + ( + r'(const/16 [pv]\d+, 0x)200(0\s+(.line \d+\s+)*?invoke-virtual \{[^\}]*\}, Landroid/view/Window;->(?:add|set|clear)Flags\((?:I|II)\)V)', + r'\1\2', + "Bypass Anti-Screen <(add|set|clear)Flags>", + None + ), + ( + r'(const/16 [pv]\d+, 0x)200(0\n)', + r'\1\2', + "Bypass Anti-Screen <0x2000>", + ["AndroidUtilities.smali", "TranslateAlert2.smali", "StoryViewer.smali", "PaymentFormActivity.smali"] + ), + ( + r'(invoke-static \{[^\}]*\}, L[^\(]+;->isSecuredNow\(Landroid/view/Window;\)Z\s+(.line \d+\s+)*?move-result [pv]\d+\s+(.line \d+\s+)*?const/16 ([pv]\d+),) 0x2000', + r'\1 0x0', + "Bypass Anti-Screen ", + "FlagSecureReason.smali" + ), + ( + r'(\s+or-int/lit16 [pv]\d+, [pv]\d+,) 0x2000', + r'\1 0x0', + "Bypass Anti-Screen ", + ["PhotoViewer.smali", "SecretMediaViewer.smali"] + ), + ( + r'(invoke-virtual \{([pv]\d+), ([pv]\d+)\}, Landroid/view/SurfaceView;->setSecure\(Z\)V)', + r'const/4 \3, 0x0\n\n\t\1', + "Bypass Anti-Screen ", + "StoryViewer.smali" + ), + + # ---------------- Disable Signature Verification ---------------- + ( + r'(\.method public static getCertificateSHA256Fingerprint\(\)Ljava/lang/String;\n)[\S\s+]*?(\n.end method)', + r'\1\t.locals 1\n' + r' const-string v0, "49C1522548EBACD46CE322B6FD47F6092BB745D0F88082145CAF35E14DCC38E1"\n' + r' return-object v0\2', + "Disable Signature Verification", + "AndroidUtilities.smali" + ), + + # ---------------- markStoryAsRead ---------------- + ( + r'(\.method public markStoryAsRead\((JLorg/telegram/tgnet/tl/TL_stories\$StoryItem;|Lorg/telegram/tgnet/tl/TL_stories\$PeerStories;Lorg/telegram/tgnet/tl/TL_stories\$StoryItem;Z)\)Z\n)[\S\s+]*?(\s+return ([pv]\d+)\n.end method)', + r'\1\t.locals 4\n\tconst/4 \4, 0x0\3', + "markStoryAsRead", + "StoriesController.smali" + ), + + # ---------------- Premium ---------------- + ( + r'(\.method (?:private|public final) isPremium\(J\)Z\n)[\S\s+]*?(\n.end method)', + r'\1\t.locals 3\n\tconst/4 p1, 0x1\n\treturn p1\2', + "isPremium ➢ StoriesController", + "StoriesController.smali" + ), + ( + r'(\.method public isPremium\(\)Z\n)[\S\s]*?(\n.end method)', + r'\1\t.locals 1\n\tconst/4 v0, 0x1\n\treturn v0\2', + "isPremium ➢ UserConfig", + "UserConfig.smali" + ), + ( + r'(\.method (?:private|public final) isPremiumFeatureAvailable\(I\)Z\n(?:(?!\.end method)[\s\S])*?const/4 v1,) 0x0([\S\s+]*?\n.end method)', + r'\1 0x1\2', + "isPremiumFeatureAvailable", + "ProfileActivity$SearchAdapter.smali" + ), + ( + r'(\.method static synthetic access\$3000\(Lorg/telegram/ui/PremiumPreviewFragment;\)Z\n)(?:(?!\.end method)[\s\S])*?iget-boolean [pv]\d+, [pv]\d+, Lorg/telegram/ui/PremiumPreviewFragment;->forcePremium:Z[\S\s+]*?(\s+return ([pv]\d+)\n.end method)', + r'\1\t.locals 1\n\tconst/4 \3, 0x1\2', + "forcePremium", + "PremiumPreviewFragment.smali" + ), + + # ---------------- Secret Media Enable ---------------- + ( + r'(\.method public getSecretTimeLeft\(\)I\n(?:(?!\.end method)[\s\S])*?const/4 v1,) 0x0([\S\s+]*?\n.end method)', + r'\1 0x1\2', + "Secret Media Enable", + "MessageObject.smali" + ), + ( + r'(\.method public isSecretMedia\(\)Z\n(?:(?!\.end method)[\s\S])*?iget-object [pv]\d+, [pv]\d+, Lorg/telegram/messenger/MessageObject;->messageOwner:Lorg/telegram/tgnet/TLRPC\$Message;\s+instance-of [pv]\d+, [pv]\d+, Lorg/telegram/tgnet/TLRPC\$TL_message_secret;\s+)[\S\s+]*?(\n.end method)', + r'\1const/4 v3, 0x0\n\treturn v3\2', + "Secret Media Enable", + "MessageObject.smali" + ), + ( + r'(\.method public static isSecretPhotoOrVideo\(Lorg/telegram/tgnet/TLRPC\$Message;\)Z\n(?:(?!\.end method)[\s\S])*?instance-of [pv]\d+, [pv]\d+, Lorg/telegram/tgnet/TLRPC\$TL_message_secret;\s+)[\S\s+]*?(\n.end method)', + r'\1const/4 v2, 0x0\n\treturn v2\2', + "Secret Media Enable", + "MessageObject.smali" + ), + ( + r'(\.method public static isSecretMedia\(Lorg/telegram/tgnet/TLRPC\$Message;\)Z\n(?:(?!\.end method)[\s\S])*?instance-of [pv]\d+, [pv]\d+, Lorg/telegram/tgnet/TLRPC\$TL_message_secret;\s+)[\S\s+]*?(\n.end method)', + r'\1const/4 v2, 0x0\n\treturn v2\2', + "Secret Media Enable", + "MessageObject.smali" + ), + + # ---------------- isSponsored Check ---------------- + ( + r'(\.method public isSponsored\(\)Z\n)[\S\s]*?(\n.end method)', + r'\1\t.locals 3\n\tconst/4 v0, 0x0\n\treturn v0\2', + "isSponsored ➢ False", + "MessageObject.smali" + ), + ( + r'(\.method public isSponsoredDisabled\(\)Z\n)[\S\s]*?(\n.end method)', + r'\1\t.locals 3\n\tconst/4 v0, 0x1\n\treturn v0\2', + "isSponsoredDisabled ➢ True", + "MessagesController.smali" + ), + ( + r'(\.method private checkPromoInfoInternal\(Z\)V\n)[\S\s]*?(\n.end method)', + r'\1\t.locals 2\n\treturn-void\2', + "Remove Proxy Sponsored Channels", + "MessagesController.smali" + ), + + # ---------------- isChatNoForwards ---------------- + ( + r'(\.method public isChatNoForwards\((?:J|Lorg/telegram/tgnet/TLRPC\$Chat;)\)Z\n)[\S\s+]*?(\n.end method)', + r'\1\t.locals 3\n\tconst/4 p1, 0x0\n\treturn p1\2', + "isChatNoForwards ➢ forceForward", + "MessagesController.smali" + ), + + # ---------------- Access Banned Channels [Main] ---------------- + ( + r'(\.method public checkCanOpenChat\(Landroid/os/Bundle;Lorg/telegram/ui/ActionBar/BaseFragment;.*\)Z\n)[\S\s]*?(\n.end method)', + r'\1\t.locals 3\n\tconst/4 p1, 0x1\n\treturn p1\2', + "Access Banned Channels [Main]", + "MessagesController.smali" + ), + + # ---------------- dnsBooster ( ResolveHostByNameTask ) ---------------- + ( + r'"dns.google.com"', + r'"one.one.one.one"', + "+ CloudFlare DNS", + "ConnectionsManager$ResolveHostByNameTask.smali" + ), + ( + r'"https://www.google.com/resolve\?name="', + r'"https://cloudflare-dns.com/dns-query?name="', + "+ CloudFlare DNS Resolver", + "ConnectionsManager$ResolveHostByNameTask.smali" + ), + ( + r'(invoke-virtual \{[pv]\d+, ([pv]\d+), ([pv]\d+)\}, Ljava/net/URLConnection;->addRequestProperty\(Ljava/lang/String;Ljava/lang/String;\)V)(\s+(.line \d+\s+)*?const/16 [pv]\d+, 0x3e8)', + r'\1\n' + r' const-string \2, "accept"\n' + r' const-string \3, "application/dns-json"\n' + r' \1' + r' \4', + "+ CloudFlare Header", + "ConnectionsManager$ResolveHostByNameTask.smali" + ), + + # ---------------- dnsBooster ( GoogleDnsLoadTask ) ---------------- + ( + r'"https://dns.google.com/resolve\?name="', + r'"https://cloudflare-dns.com/dns-query?name="', + "+ CloudFlare DNS Resolver", + "ConnectionsManager$GoogleDnsLoadTask.smali" + ), + ( + r'("&type=)ANY(&random_padding=")', + r'\1TXT\2', + "DNS Type ANY To TXT", + "ConnectionsManager$GoogleDnsLoadTask.smali" + ), + ( + r'(invoke-virtual \{[pv]\d+, ([pv]\d+), ([pv]\d+)\}, Ljava/net/URLConnection;->addRequestProperty\(Ljava/lang/String;Ljava/lang/String;\)V)', + r'\1\n' + r' const-string \2, "accept"\n' + r' const-string \3, "application/dns-json"\n' + r' \1', + "+ CloudFlare Header", + "ConnectionsManager$GoogleDnsLoadTask.smali" + ), + + # ---------------- updateParams ---------------- + ( + r'(\.method private updateParams\(\)V\n(?:(?!\.end method)[\s\S])*?const/high16 v0,) 0x20000((?:(?!\.end method)[\s\S])*?)const/4 v0, 0x4([\S\s+]*?\n.end method)', + r'\1 0x80000\2const/16 v0, 0x8\3', + "updateParams ➢ SpeedBoost", + "FileLoadOperation.smali" + ), + + # ---------------- markMessagesAsDeleted ---------------- + ( + r'(\.method public markMessagesAsDeleted\(JIZZ\)Ljava/util/ArrayList;\s+\.locals \d+(\s+\.annotation[\s\S]*?.end annotation)?)', + r'\1\n' + r' sget-boolean v0, Lorg/telegram/abhi/Hook;->candelMessages:Z\n' + r' if-eqz v0, :cond_7\n' + r' const/4 p1, 0x0\n' + r' return-object p1\n' + r' :cond_7', + "markMessagesAsDeleted", + "MessagesStorage.smali" + ), + ( + r'(\.method public markMessagesAsDeleted\(JLjava/util/ArrayList;ZZII\)Ljava/util/ArrayList;\s+\.locals \d+(\s+\.annotation[\s\S]*?.end annotation)?)', + r'\1\n' + r' sget-boolean v0, Lorg/telegram/abhi/Hook;->candelMessages:Z\n' + r' if-eqz v0, :cond_7\n' + r' const/4 v1, 0x0\n' + r' return-object v1\n' + r' :cond_7', + "markMessagesAsDeleted", + "MessagesStorage.smali" + ), + + # ---------------- add setTextAndCheck_2 Method ---------------- + ( + r'((\.method public setTextAndCheck)(\(Ljava/lang/CharSequence;ZZ\)V[\S\s]*?)(\s+return-void\n.end method\n))', + r'\1\n\2_2\3\n' + r' invoke-virtual {p0}, Landroid/view/View;->getContext()Landroid/content/Context;\n' + r' move-result-object v1\n' + r' const-string v0, "Turned off"\n' + r' if-eqz p2, :cond_48\n' + r' const-string v0, "Turned on"\n' + r' :cond_48\n' + r' invoke-static {v1, v0, v2}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;\n' + r' move-result-object v0\n' + r' invoke-virtual {v0}, Landroid/widget/Toast;->show()V\n' + r' if-eqz p2, :cond_55\n' + r' invoke-static {}, Lorg/telegram/abhi/Hook;->hook()V\n' + r' goto :goto_58\n' + r' :cond_55\n' + r' invoke-static {}, Lorg/telegram/abhi/Hook;->unhook()V\n' + r' :goto_58\n\4', + "add setTextAndCheck_2 Method", + "TextCell.smali" + ), + + # ---------------- Anti-Delete Messages ---------------- + ( + r'(invoke-virtual \{.*\}, Lorg/telegram/ui/Cells/TextCell;->setTextAndCheck)(\(Ljava/lang/CharSequence;ZZ\)V)', + r'\1_2\2', + "Rename setTextAndCheck_2", + "PremiumPreviewFragment$Adapter.smali" + ), + ( + r'sget ([pv]\d+), Lorg/telegram/messenger/R\$string;->ShowAds:I\s+(invoke-static \{.*\}, Lorg/telegram/messenger/LocaleController;->getString\(I\)Ljava/lang/String;\s+move-result-object [pv]\d+)', + r'const-string \1, "Do Not Delete Messages"', + "Do Not Delete Messages", + "PremiumPreviewFragment$Adapter.smali" + ), + ( + r'sget ([pv]\d+), Lorg/telegram/messenger/R\$string;->ShowAdsInfo:I\s+(invoke-static \{.*\}, Lorg/telegram/messenger/LocaleController;->getString\(I\)Ljava/lang/String;\s+move-result-object [pv]\d+)', + r'const-string \1, "After enabling or disabling the feature, ensure you revisit this page for the changes to take effect.\\nMod by Abhi"', + "Mod by Abhi", + "PremiumPreviewFragment$Adapter.smali" + ), + ( + r'sget ([pv]\d+), Lorg/telegram/messenger/R\$string;->ShowAdsTitle:I\s+(invoke-static \{.*\}, Lorg/telegram/messenger/LocaleController;->getString\(I\)Ljava/lang/String;\s+move-result-object [pv]\d+)', + r'const-string \1, "Anti-Delete Messages"\n' + r' invoke-virtual {v1, \1}, Lorg/telegram/ui/Cells/HeaderCell;->setText(Ljava/lang/CharSequence;)V\n' + r' return-void', + "Anti-Delete Messages", + "PremiumPreviewFragment$Adapter.smali" + ) + ] + + Target_Regex = [p[0] for p in scanPatterns] + + for smali_folder in smali_folders: + for root, _, files in M.os.walk(smali_folder): + for file in files: + full_path = M.os.path.join(root, file) + if file.endswith('.smali'): + Smali_Paths.append(full_path) + if file in Target_Smali: + Smali_Files.append(full_path) + + try: + # ---------------- Multiple Threading ---------------- + with M.Manager() as MT: + Count = MT.Value('i', 0); Lock = MT.Lock() + with M.Pool(M.cpu_count()) as PL: + Match_Smali = [path for path in PL.starmap(Regex_Scan, [(Smali_Path, Target_Regex, Count, Lock) for Smali_Path in Smali_Paths]) if path] + + except Exception: + # ---------------- Single Threading ---------------- + Count = [0] + for Smali_Path in Smali_Paths: + result = Regex_Scan(Smali_Path, Target_Regex, Count, None) + + if result: + Match_Smali.append(result) + + print(f" {C.G} ✔\n", flush=True) + + print(f"\n{C.X}{C.C} TG Patch, Script by {C.OG}🇮🇳 AbhiTheM0dder 🇮🇳") + + print(f'\n{C_Line}\n') + + allPatterns = scanPatterns + smaliPatterns + + isMatched = {} + + for is_Path, is_idx in Match_Smali: + if isinstance(is_idx, list): # Multi Match in Single Smali + for index in is_idx: + isMatched.setdefault(index, set()).add(is_Path) + else: + isMatched.setdefault(is_idx, set()).add(is_Path) + + for idx, (pattern, replacement, description, target_files) in enumerate(allPatterns): + + count_applied = 0 + applied_files= set() + + if target_files: + Map_Smali = set() + for Path in Smali_Files: + if isinstance(target_files, list): # Multi Smali + if M.os.path.basename(Path) in target_files: + Map_Smali.add(Path) + else: + if M.os.path.basename(Path) == target_files: + Map_Smali.add(Path) + else: + + if target_files is None: + Map_Smali = {X for X, _ in Match_Smali} + else: + Map_Smali = isMatched.get(idx, set()) + + for File_Path in Map_Smali: + content = open(File_Path, 'r', encoding='utf-8', errors='ignore').read() + + new_content = M.re.sub(pattern, replacement, content) + + if new_content != content: + applied_files.add(File_Path) + + count_applied += 1 + + open(File_Path, 'w', encoding='utf-8', errors='ignore').write(new_content) + + if count_applied > 0: + print(f"\n{C.S} Tag {C.E} {C.G}{description}") + print(f"\n{C.S} Pattern {C.E} {C.OG}➸❥ {C.P}{pattern}") + + for File_Path in applied_files: + print(f"{C.G} |\n └──── {C.CC}~{C.G}$ {C.Y}{M.os.path.basename(File_Path)} {C.G} ✔") + + print( + f"\n{C.S} Pattern Applied {C.E} {C.OG}➸❥ {C.PN}{count_applied} {C.C}Time/Smali {C.G} ✔\n" + f"\n{C_Line}\n" + ) + + Hook_Smali(decompile_dir, isAPKEditor) + + +# ---------------- Hook Smali ---------------- +def Hook_Smali(decompile_dir, isAPKEditor): + + targetSmali_Dir = M.os.path.join(decompile_dir, + *( + ['smali', 'classes'] if isAPKEditor else ['smali'] + ) + ) + + Target_Dest = M.os.path.join(targetSmali_Dir, "org", "telegram", "abhi", 'Hook.smali') + + M.os.makedirs(M.os.path.dirname(Target_Dest), exist_ok=True) + + M.shutil.copy(F.Hook_Smali, Target_Dest) + + print(f"\n{C.S} Generate {C.E} {C.G}Hook.smali {C.OG}➸❥ {C.Y}{M.os.path.relpath(Target_Dest, decompile_dir)} {C.G} ✔\n") \ No newline at end of file diff --git a/ApkPatcher/Patch/__init__.py b/ApkPatcher/Patch/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ApkPatcher/Utils/Anti_Splits.py b/ApkPatcher/Utils/Anti_Splits.py new file mode 100644 index 0000000..f9708d9 --- /dev/null +++ b/ApkPatcher/Utils/Anti_Splits.py @@ -0,0 +1,62 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +from .Files_Check import FileCheck + +F = FileCheck(); F.Set_Path() + +C_Line = f"{C.CC}{'_' * 61}" + +Merge_Ext = ['.apks', '.apkm', '.xapk'] + + +# ---------------- Anti Split ---------------- +def Anti_Split(apk_path, isMerge, isCoreX): + + base_name, Ext = M.os.path.splitext(apk_path) + + if apk_path and isCoreX and M.os.path.splitext(apk_path)[-1].lower() not in Merge_Ext: + exit(f"\n{C.X}{C.C} Only Supported Extensions {C.G}{Merge_Ext} with {C.OG}CoreX\n") + + if Ext in Merge_Ext: + output_path = f"{base_name.replace(' ', '_')}.apk" + + print( + f"{C_Line}\n\n" + f"\n{C.X}{C.C} Anti-Split Start..." + ) + + print( + f"{C.G} |\n └──── {C.CC}Decompiling ~{C.G}$ java -jar {M.os.path.basename(F.APKEditor_Path)} m -i {apk_path} -f -o {output_path}" + + (" -extractNativeLibs true" if isCoreX else "") + + f"\n\n{C_Line}{C.G}\n" + ) + + cmd = ["java", "-jar", F.APKEditor_Path, "m", "-i", apk_path, "-f", "-o", output_path] + + if isCoreX: + cmd += ["-extractNativeLibs", "true"] + + try: + result = M.subprocess.run(cmd, check=True) + + print( + f"\n{C.X}{C.C} Anti-Split Successful {C.G} ✔\n" + f"\n{C_Line}\n" + ) + + if isMerge: + exit(0) + + return output_path + + except M.subprocess.CalledProcessError as e: + exit(f"\n{C.ERROR} Anti-Split Failed ! ✘\n") + + if isMerge and Ext not in Merge_Ext: + exit( + f"\n{C.ERROR} Split ✘\n\n" + f"\n{C.INFO} {C.C} Only Supported Extensions {C.G}{Merge_Ext}\n" + ) + + return apk_path \ No newline at end of file diff --git a/ApkPatcher/Utils/CRC.py b/ApkPatcher/Utils/CRC.py new file mode 100644 index 0000000..a26d8a7 --- /dev/null +++ b/ApkPatcher/Utils/CRC.py @@ -0,0 +1,54 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + + +# ---------------- Format Time ---------------- +def Format_Time(timestamp): + return M.datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S") + + +# ---------------- CRC Fix ---------------- +def CRC_Fix(apk_path, build_dir, file_types): + + Logs = [] + + origin_entries, mod_entries = [ + { + entry.filename: (entry.CRC, entry.date_time) + for entry in M.zipfile.ZipFile(file_path, 'r').infolist() + if any(file_type in entry.filename for file_type in file_types) + } for file_path in (apk_path, build_dir) + ] + + binary_content = open(build_dir, 'rb').read() + + for filename, (origin_crc, origin_time) in origin_entries.items(): + if filename in mod_entries and origin_crc != mod_entries[filename][0]: + origin_crc_bytes = origin_crc.to_bytes(4, 'little') + + mod_crc_bytes = mod_entries[filename][0].to_bytes(4, 'little') + + binary_content = binary_content.replace(mod_crc_bytes, origin_crc_bytes) + + Logs.append( + ( + filename, + f"{origin_crc:08x}", + f"{mod_entries[filename][0]:08x}", + Format_Time(M.datetime(*origin_time).timestamp()), + Format_Time(M.datetime(*mod_entries[filename][1]).timestamp()) + ) + ) + + open(build_dir, 'wb').write(binary_content) + + print(f"\n{'':20}✨ {C.G}CRCFix by {C.OG}Kirlif{C.G}' ✨\n") + + print(f"{C.C}{'File Name':<22}{'CRC':<12}{'FIX':<12}{'Modified'}") + + for e in Logs: + print(f"\n{C.G}{e[0]:<22}{e[1]}{'':<4}{e[2]}{'':<4}{e[4]}\n") + + print(f"{C.CC}{'_' * 61}\n\n") + + return build_dir \ No newline at end of file diff --git a/ApkPatcher/Utils/Credits.py b/ApkPatcher/Utils/Credits.py new file mode 100644 index 0000000..712dc83 --- /dev/null +++ b/ApkPatcher/Utils/Credits.py @@ -0,0 +1,28 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() + + +# ---------------- Credits ---------------- +def Credits(): + exit(f""" + 💢 Credit 💢 + +{C.S} Flutter SSL & TG Patch {C.E}{C.G} 🇮🇳 AbhiTheM0dder 🇮🇳 {C.S}{C.P} @AbhiTheM0dder {C.E} + +{C.S} Pine Hook {C.E}{C.G} 🇮🇳 AbhiTheM0dder 🇮🇳 | 残页 {C.S}{C.P} @AbhiTheM0dder | @canyie {C.E} + +{C.S} MITM {C.E}{C.G} Niklas Higi {C.S}{C.P} https://github.com/shroudedcode/apk-mitm {C.E} + +{C.S} APKTool {C.E}{C.G} Connor Tumbleson {C.S}{C.P} @iBotPeaches {C.E} + +{C.S} APKEditor {C.E}{C.G} REAndroid {C.S}{C.P} @kikfox {C.E} + +{C.S} Uber-Apk-Signer {C.E}{C.G} Patrick Favre {C.S}{C.P} @patrickfav {C.E} + +{C.S} My Channel {C.E}{C.CC} 🇮🇳 ࿗ {C.OG}T̴͢͢e̴͢͢c̴͢͢h̴͢͢n̴͢͢o̴͢͢ {C.B}☣{C.G} I̴͢͢n̴͢͢d̴͢͢i̴͢͢a̴͢͢ {C.CC}࿗ 🇮🇳 {C.S}{C.P} @rktechnoindians {C.E} + +{C.S} CREATOR {C.E}{C.G} 𓄂 Ꭱꫝℑ 𓆐 ︻デ═一 ࿗ Я͓̽K͓̽ ࿗ {C.S}{C.P} @RK_TECHNO_INDIA {C.E} + + +{C.S} NOTE {C.E} {C.Y} Please Maintain Our Credits. 🙏🙏 + + """) \ No newline at end of file diff --git a/ApkPatcher/Utils/Decompile_Compile.py b/ApkPatcher/Utils/Decompile_Compile.py new file mode 100644 index 0000000..c13c7d5 --- /dev/null +++ b/ApkPatcher/Utils/Decompile_Compile.py @@ -0,0 +1,170 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +from .Files_Check import FileCheck; + +F = FileCheck(); F.Set_Path(); F.isEmulator() + +C_Line = f"{C.CC}{'_' * 61}" + +SUGGEST = ( + f"{C_Line}\n\n" + f"\n{C.SUGGEST} Try With APKEditor, Flag {C.OG}-a" + f"\n |\n └──── {C.CC}~ Ex. {C.G}$ {C.OG}ApkPatcher {C.Y}{' '.join(M.sys.argv[1:])} {C.OG}-a\n" +) + + +# ---------------- Decompile APK ---------------- +def Decompile_Apk(apk_path, decompile_dir, isEmulator, isAPKEditor, isAES, isPine_Hook, Package_Name): + + A_P = F.APKTool_Path_E if isEmulator else F.APKTool_Path + + AA = f"{'APKEditor' if isAPKEditor else 'APKTool'}" + + print( + f"\n{C_Line}\n\n" + f"\n{C.X}{C.C} Decompile APK with {AA}..." + ) + + if isAPKEditor: + cmd = ["java", "-jar", F.APKEditor_Path, "d", "-i", apk_path, "-o", decompile_dir, "-f", "-no-dex-debug", "-dex-lib", "jf"] + + if isPine_Hook: + cmd += ["-dex"] + + print( + f"{C.G} |\n └──── {C.CC}Decompiling ~{C.G}$ java -jar {M.os.path.basename(F.APKEditor_Path)} d -i {apk_path} -o {M.os.path.basename(decompile_dir)} -f -no-dex-debug -dex-lib jf\n" + f"\n{C_Line}{C.G}\n" + ) + + else: + cmd = ["java", "-jar", A_P, "d", "-f", "--only-main-classes"] + (["--no-debug-info"] if isAES else []) + [apk_path, "-o", decompile_dir, "-p", decompile_dir] + + if isPine_Hook: + cmd += ["-s"] + + print( + f"{C.G} |\n └──── {C.CC}Decompiling ~{C.G}$ java -jar {M.os.path.basename(A_P)} d -f {apk_path} -o {M.os.path.basename(decompile_dir)}\n" + f"\n{C_Line}{C.G}\n" + ) + + try: + M.subprocess.run(cmd, check=True) + + print( + f"\n{C.X}{C.C} Decompile Successful {C.G} ✔\n" + f"\n{C_Line}\n\n" + ) + + except M.subprocess.CalledProcessError: + M.shutil.rmtree(decompile_dir) + + print(f"\n{C.ERROR} Decompile {Package_Name}.apk Failed with {AA} ✘\n") + + if not isAPKEditor: + print(SUGGEST) + + exit(1) + + +# ---------------- Recompile APK ---------------- +def Recompile_Apk(decompile_dir, apk_path, build_dir, isEmulator, isAPKEditor, Package_Name): + + A_P = F.APKTool_Path_E if isEmulator else F.APKTool_Path + + AA = f"{'APKEditor' if isAPKEditor else 'APKTool'}" + + print( + f"{C_Line}\n\n" + f"\n{C.X}{C.C} Recompile APK with {AA}..." + ) + + if isAPKEditor: + cmd = ["java", "-jar", F.APKEditor_Path, "b", "-i", decompile_dir, "-o", build_dir, "-f", "-dex-lib", "jf"] + + print( + f"{C.G} |\n └──── {C.CC}Recompiling ~{C.G}$ java -jar {M.os.path.basename(F.APKEditor_Path)} b -i {M.os.path.basename(decompile_dir)} -o {M.os.path.basename(build_dir)} -f -dex-lib jf\n" + f"\n{C_Line}{C.G}\n" + ) + + else: + cmd = ["java", "-jar", A_P, "b", "-f", decompile_dir, "-o", build_dir, "-p", decompile_dir] + + print( + f"{C.G} |\n └──── {C.CC}Recompiling ~{C.G}$ java -jar {M.os.path.basename(A_P)} b -f {M.os.path.basename(decompile_dir)} -o {M.os.path.basename(build_dir)}\n" + f"\n{C_Line}{C.G}\n" + ) + + try: + M.subprocess.run(cmd, check=True) + + print( + f"\n{C.X}{C.C} Recompile Successful {C.G} ✔\n" + f"\n{C_Line}\n" + ) + + except M.subprocess.CalledProcessError: + M.shutil.rmtree(decompile_dir) + + print(f"\n{C.ERROR} Recompile {Package_Name}.apk Failed with {AA}... ✘\n") + + if not isAPKEditor: + print(SUGGEST) + + exit(1) + + if M.os.path.exists(build_dir): + print( + f"\n{C.S} APK Created {C.E} {C.OG}➸❥ {C.Y}{build_dir} {C.G} ✔\n" + f"\n{C_Line}\n" + ) + + M.shutil.rmtree(decompile_dir) + + +# ---------------- FixSigBlock ---------------- +def FixSigBlock(decompile_dir, apk_path, build_dir, rebuild_dir): + + M.os.rename(build_dir, rebuild_dir) + + sig_dir = decompile_dir.replace('_decompiled', '_SigBlock') + + for operation in ["d", "b"]: + cmd = ["java", "-jar", F.APKEditor_Path, operation, "-t", "sig", "-i", (apk_path if operation == "d" else rebuild_dir), "-f", "-sig", sig_dir] + + if operation == "b": + cmd.extend(["-o", build_dir]) + + M.subprocess.run(cmd, check=True, text=True, capture_output=True) + + M.shutil.rmtree(sig_dir) + + M.os.remove(rebuild_dir) + + +# ---------------- Sign APK ---------------- +def Sign_APK(build_dir): + + cmd = ["java", "-jar", F.Sign_Jar, "-a", build_dir, "--overwrite"] + + print(f"\n{C.X}{C.C} Signing APK...") + + print( + f"{C.G} |\n └──── {C.CC}Signing ~{C.G}$ java -jar {M.os.path.basename(F.Sign_Jar)} --overwrite -a {build_dir}\n" + f"\n{C_Line}{C.G}\n" + ) + + try: + M.subprocess.run(cmd, check=True) + + print(f"\n{C.X}{C.C} Sign Successful {C.G} ✔\n") + + idsig_file = build_dir + ".idsig" + + if M.os.path.exists(idsig_file): + M.os.remove(idsig_file) + + print(f'{C_Line}\n\n') + + except M.subprocess.CalledProcessError: + exit(f"\n{C.ERROR} Sign Failed ! ✘\n") \ No newline at end of file diff --git a/ApkPatcher/Utils/Files/AES.smali b/ApkPatcher/Utils/Files/AES.smali new file mode 100644 index 0000000..f95835e --- /dev/null +++ b/ApkPatcher/Utils/Files/AES.smali @@ -0,0 +1,436 @@ +.class public LRK_TECHNO_INDIA/AES; +.super Ljava/lang/Thread; +# static fields +.field private static final PARAMETER_BUFFER:Ljava/lang/ThreadLocal; +.field private static final QUEUE:Ljava/util/concurrent/LinkedBlockingQueue; +.field private static final TIME_FORMAT1:Ljava/text/SimpleDateFormat; +.field private static final TIME_FORMAT2:Ljava/text/SimpleDateFormat; +# direct methods +.method static constructor ()V + .registers 2 + new-instance v0, Ljava/text/SimpleDateFormat; + const-string v1, "HH:mm:ss.SSS" + invoke-direct {v0, v1}, Ljava/text/SimpleDateFormat;->(Ljava/lang/String;)V + sput-object v0, LRK_TECHNO_INDIA/AES;->TIME_FORMAT1:Ljava/text/SimpleDateFormat; + new-instance v0, Ljava/text/SimpleDateFormat; + const-string v1, "yyyyMMddHHmmssSSS" + invoke-direct {v0, v1}, Ljava/text/SimpleDateFormat;->(Ljava/lang/String;)V + sput-object v0, LRK_TECHNO_INDIA/AES;->TIME_FORMAT2:Ljava/text/SimpleDateFormat; + new-instance v0, Ljava/util/concurrent/LinkedBlockingQueue; + invoke-direct {v0}, Ljava/util/concurrent/LinkedBlockingQueue;->()V + sput-object v0, LRK_TECHNO_INDIA/AES;->QUEUE:Ljava/util/concurrent/LinkedBlockingQueue; + new-instance v0, Ljava/lang/ThreadLocal; + invoke-direct {v0}, Ljava/lang/ThreadLocal;->()V + sput-object v0, LRK_TECHNO_INDIA/AES;->PARAMETER_BUFFER:Ljava/lang/ThreadLocal; + new-instance v0, LRK_TECHNO_INDIA/AES; + invoke-direct {v0}, LRK_TECHNO_INDIA/AES;->()V + const/4 v1, 0x1 + invoke-virtual {v0, v1}, LRK_TECHNO_INDIA/AES;->setDaemon(Z)V + invoke-virtual {v0}, LRK_TECHNO_INDIA/AES;->start()V + return-void +.end method +.method public constructor ()V + .registers 1 + invoke-direct {p0}, Ljava/lang/Thread;->()V + return-void +.end method +.method public static a(Ljava/lang/Object;)V + .registers 2 + invoke-static {p0}, LRK_TECHNO_INDIA/AES;->y(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v0 + invoke-static {v0}, LRK_TECHNO_INDIA/AES;->z(Ljava/lang/String;)V + return-void +.end method +.method public static b()V + .registers 2 + sget-object v0, LRK_TECHNO_INDIA/AES;->PARAMETER_BUFFER:Ljava/lang/ThreadLocal; + invoke-virtual {v0}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object; + move-result-object v1 + check-cast v1, Ljava/lang/StringBuilder; + invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v1 + invoke-static {v1}, LRK_TECHNO_INDIA/AES;->z(Ljava/lang/String;)V + invoke-virtual {v0}, Ljava/lang/ThreadLocal;->remove()V + return-void +.end method +.method public static b1(Ljava/lang/Object;)V + .registers 3 + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + const-string v1, "𝐃𝐚𝐭𝐚 ︻デ═一 " + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-static {p0}, LRK_TECHNO_INDIA/AES;->y(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v1 + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 + invoke-static {v0}, LRK_TECHNO_INDIA/AES;->x(Ljava/lang/String;)V + return-void +.end method +.method public static b2(Ljava/lang/Object;)V + .registers 3 + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + const-string v1, "𝐃𝐚𝐭𝐚/𝐊𝐞𝐲 ︻デ═一 " + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-static {p0}, LRK_TECHNO_INDIA/AES;->y(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v1 + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 + invoke-static {v0}, LRK_TECHNO_INDIA/AES;->x(Ljava/lang/String;)V + return-void +.end method +.method public static b3(Ljava/lang/Object;)V + .registers 3 + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + const-string v1, "𝐈𝐕/𝐊𝐞𝐲 ︻デ═一 " + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-static {p0}, LRK_TECHNO_INDIA/AES;->y(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v1 + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 + invoke-static {v0}, LRK_TECHNO_INDIA/AES;->x(Ljava/lang/String;)V + return-void +.end method +.method public static b4(Ljava/lang/Object;)V + .registers 3 + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + const-string v1, "𝐏𝐚𝐫𝐚𝐦𝐞𝐭𝐞𝐫 4 ︻デ═一 " + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-static {p0}, LRK_TECHNO_INDIA/AES;->y(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v1 + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 + invoke-static {v0}, LRK_TECHNO_INDIA/AES;->x(Ljava/lang/String;)V + return-void +.end method +.method public static b5(Ljava/lang/Object;)V + .registers 3 + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + const-string v1, "𝐏𝐚𝐫𝐚𝐦𝐞𝐭𝐞𝐫 5 ︻デ═一 " + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-static {p0}, LRK_TECHNO_INDIA/AES;->y(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v1 + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 + invoke-static {v0}, LRK_TECHNO_INDIA/AES;->x(Ljava/lang/String;)V + return-void +.end method +.method public static b6(Ljava/lang/Object;)V + .registers 3 + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + const-string v1, "𝐏𝐚𝐫𝐚𝐦𝐞𝐭𝐞𝐫 6 ︻デ═一 " + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-static {p0}, LRK_TECHNO_INDIA/AES;->y(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v1 + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 + invoke-static {v0}, LRK_TECHNO_INDIA/AES;->x(Ljava/lang/String;)V + return-void +.end method +.method public static getInstance(Ljava/lang/Object;)V + .registers 3 + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;->()V + const-string v1, "\ud835\ude3e\ud835\ude5e\ud835\ude65\ud835\ude5d\ud835\ude5a\ud835\ude67 \ud835\ude3c\ud835\ude61\ud835\ude5c\ud835\ude64\ud835\ude67\ud835\ude5e\ud835\ude69\ud835\ude5d\ud835\ude62 ︻デ═一 " + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-static {p0}, LRK_TECHNO_INDIA/AES;->y(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v1 + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v0 + invoke-static {v0}, LRK_TECHNO_INDIA/AES;->x(Ljava/lang/String;)V + return-void +.end method +.method private static x(Ljava/lang/String;)V + .registers 4 + sget-object v0, LRK_TECHNO_INDIA/AES;->PARAMETER_BUFFER:Ljava/lang/ThreadLocal; + invoke-virtual {v0}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object; + move-result-object v1 + check-cast v1, Ljava/lang/StringBuilder; + if-nez v1, :cond_13 + new-instance v2, Ljava/lang/StringBuilder; + invoke-direct {v2}, Ljava/lang/StringBuilder;->()V + move-object v1, v2 + invoke-virtual {v0, v1}, Ljava/lang/ThreadLocal;->set(Ljava/lang/Object;)V + :cond_13 + invoke-virtual {v1}, Ljava/lang/StringBuilder;->length()I + move-result v0 + if-lez v0, :cond_1e + const/16 v0, 0xa + invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; + :cond_1e + invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + return-void +.end method + +.method private static y(Ljava/lang/Object;)Ljava/lang/String; + .registers 3 + if-nez p0, :cond_5 + const-string v0, "null" + return-object v0 + :cond_5 + invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; + move-result-object v0 + invoke-virtual {v0}, Ljava/lang/Class;->isArray()Z + move-result v1 + if-eqz v1, :cond_77 + const-class v1, [B + if-ne v0, v1, :cond_1b + move-object v1, p0 + check-cast v1, [B + invoke-static {v1}, Ljava/util/Arrays;->toString([B)Ljava/lang/String; + move-result-object v1 + return-object v1 + :cond_1b + const-class v1, [S + if-ne v0, v1, :cond_27 + move-object v1, p0 + check-cast v1, [S + invoke-static {v1}, Ljava/util/Arrays;->toString([S)Ljava/lang/String; + move-result-object v1 + return-object v1 + :cond_27 + const-class v1, [I + if-ne v0, v1, :cond_33 + move-object v1, p0 + check-cast v1, [I + invoke-static {v1}, Ljava/util/Arrays;->toString([I)Ljava/lang/String; + move-result-object v1 + return-object v1 + :cond_33 + const-class v1, [J + if-ne v0, v1, :cond_3f + move-object v1, p0 + check-cast v1, [J + invoke-static {v1}, Ljava/util/Arrays;->toString([J)Ljava/lang/String; + move-result-object v1 + return-object v1 + :cond_3f + const-class v1, [C + if-ne v0, v1, :cond_4b + move-object v1, p0 + check-cast v1, [C + invoke-static {v1}, Ljava/util/Arrays;->toString([C)Ljava/lang/String; + move-result-object v1 + return-object v1 + :cond_4b + const-class v1, [F + if-ne v0, v1, :cond_57 + move-object v1, p0 + check-cast v1, [F + invoke-static {v1}, Ljava/util/Arrays;->toString([F)Ljava/lang/String; + move-result-object v1 + return-object v1 + :cond_57 + const-class v1, [D + if-ne v0, v1, :cond_63 + move-object v1, p0 + check-cast v1, [D + invoke-static {v1}, Ljava/util/Arrays;->toString([D)Ljava/lang/String; + move-result-object v1 + return-object v1 + :cond_63 + const-class v1, [Z + if-ne v0, v1, :cond_6f + move-object v1, p0 + check-cast v1, [Z + invoke-static {v1}, Ljava/util/Arrays;->toString([Z)Ljava/lang/String; + move-result-object v1 + return-object v1 + :cond_6f + move-object v1, p0 + check-cast v1, [Ljava/lang/Object; + invoke-static {v1}, Ljava/util/Arrays;->deepToString([Ljava/lang/Object;)Ljava/lang/String; + move-result-object v1 + return-object v1 + :cond_77 + invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String; + move-result-object v1 + return-object v1 +.end method +.method private static z(Ljava/lang/String;)V + .registers 8 + const-string v0, "================== \ud83c\uddee\ud83c\uddf3 \ud835\ude3f\ud835\ude5a\ud835\ude58\ud835\ude67\ud835\ude6e\ud835\ude65\ud835\ude69\ud835\ude5a\ud835\ude59 \ud835\ude3d\ud835\ude6e \ud835\ude4f\ud835\ude5a\ud835\ude58\ud835\ude5d\ud835\ude63\ud835\ude64 \ud835\ude44\ud835\ude63\ud835\ude59\ud835\ude5e\ud835\ude56 \ud83c\uddee\ud83c\uddf3 ==================\n\n[RESULT]\n\n" + const-string v1, "[TIME]" + invoke-virtual {v0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z + move-result v2 + if-eqz v2, :cond_1c + sget-object v2, LRK_TECHNO_INDIA/AES;->TIME_FORMAT1:Ljava/text/SimpleDateFormat; + invoke-static {}, Ljava/lang/System;->currentTimeMillis()J + move-result-wide v3 + invoke-static {v3, v4}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; + move-result-object v3 + invoke-virtual {v2, v3}, Ljava/text/SimpleDateFormat;->format(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v2 + invoke-virtual {v0, v1, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + move-result-object v0 + :cond_1c + new-instance v1, Ljava/lang/Throwable; + invoke-direct {v1}, Ljava/lang/Throwable;->()V + invoke-virtual {v1}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; + move-result-object v1 + const/4 v2, 0x2 + aget-object v1, v1, v2 + invoke-virtual {v1}, Ljava/lang/StackTraceElement;->getFileName()Ljava/lang/String; + move-result-object v2 + if-nez v2, :cond_30 + const-string v2, "Unknown Source" + :cond_30 + invoke-virtual {v1}, Ljava/lang/StackTraceElement;->getLineNumber()I + move-result v3 + if-ltz v3, :cond_4a + new-instance v4, Ljava/lang/StringBuilder; + invoke-direct {v4}, Ljava/lang/StringBuilder;->()V + invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + const-string v5, ":" + invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v2 + :cond_4a + const-string v4, "[RESULT]" + invoke-virtual {v0, v4, p0}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + move-result-object v4 + invoke-virtual {v1}, Ljava/lang/StackTraceElement;->getClassName()Ljava/lang/String; + move-result-object v5 + const-string v6, "[CLASS]" + invoke-virtual {v4, v6, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + move-result-object v4 + invoke-virtual {v1}, Ljava/lang/StackTraceElement;->getMethodName()Ljava/lang/String; + move-result-object v5 + const-string v6, "[METHOD]" + invoke-virtual {v4, v6, v5}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + move-result-object v4 + const-string v5, "[LOCATION]" + invoke-virtual {v4, v5, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + move-result-object v0 + sget-object v4, LRK_TECHNO_INDIA/AES;->QUEUE:Ljava/util/concurrent/LinkedBlockingQueue; + invoke-virtual {v4, v0}, Ljava/util/concurrent/LinkedBlockingQueue;->offer(Ljava/lang/Object;)Z + return-void +.end method +# virtual methods +.method public run()V + .registers 10 + const/4 v0, 0x0 + const-string v1, "[SDCARD]/MT2/logs/[PACKAGE]-[TIME].json" + invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File; + move-result-object v2 + invoke-virtual {v2}, Ljava/io/File;->getPath()Ljava/lang/String; + move-result-object v2 + const-string v3, "[SDCARD]" + invoke-virtual {v1, v3, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + move-result-object v1 + const-string v2, "[PACKAGE]" + const-string v3, "PACKAGENAME" + invoke-virtual {v1, v2, v3}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + move-result-object v1 + sget-object v2, LRK_TECHNO_INDIA/AES;->TIME_FORMAT2:Ljava/text/SimpleDateFormat; + invoke-static {}, Ljava/lang/System;->currentTimeMillis()J + move-result-wide v3 + invoke-static {v3, v4}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; + move-result-object v3 + invoke-virtual {v2, v3}, Ljava/text/SimpleDateFormat;->format(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v2 + const-string v3, "[TIME]" + invoke-virtual {v1, v3, v2}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + move-result-object v1 + const/16 v2, 0x5c + const/16 v3, 0x2f + invoke-virtual {v1, v2, v3}, Ljava/lang/String;->replace(CC)Ljava/lang/String; + move-result-object v2 + const-string v3, "//" + const-string v4, "/" + invoke-virtual {v2, v3, v4}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; + move-result-object v1 + const/4 v2, 0x0 + :try_start_3e + new-instance v3, Ljava/io/File; + invoke-direct {v3, v1}, Ljava/io/File;->(Ljava/lang/String;)V + invoke-virtual {v3}, Ljava/io/File;->getParentFile()Ljava/io/File; + move-result-object v4 + if-eqz v4, :cond_4c + invoke-virtual {v4}, Ljava/io/File;->mkdirs()Z + :cond_4c + new-instance v5, Ljava/io/FileOutputStream; + const/4 v6, 0x1 + invoke-direct {v5, v3, v6}, Ljava/io/FileOutputStream;->(Ljava/io/File;Z)V + :try_end_52 + .catch Ljava/io/IOException; {:try_start_3e .. :try_end_52} :catch_54 + move-object v0, v5 + goto :goto_59 + :catch_54 + move-exception v3 + invoke-virtual {v3}, Ljava/io/IOException;->printStackTrace()V + move-object v2, v3 + :goto_59 + if-nez v0, :cond_9a + :try_start_5b + new-instance v3, Ljava/io/File; + const-string v4, "/data/data/PACKAGENAME/logs" + invoke-direct {v3, v4}, Ljava/io/File;->(Ljava/lang/String;)V + new-instance v4, Ljava/io/File; + new-instance v5, Ljava/lang/StringBuilder; + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V + sget-object v6, LRK_TECHNO_INDIA/AES;->TIME_FORMAT2:Ljava/text/SimpleDateFormat; + invoke-static {}, Ljava/lang/System;->currentTimeMillis()J + move-result-wide v7 + invoke-static {v7, v8}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; + move-result-object v7 + invoke-virtual {v6, v7}, Ljava/text/SimpleDateFormat;->format(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v6 + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + const-string v6, ".log" + invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v5 + invoke-direct {v4, v3, v5}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V + invoke-virtual {v3}, Ljava/io/File;->mkdirs()Z + new-instance v5, Ljava/io/FileOutputStream; + invoke-direct {v5, v4}, Ljava/io/FileOutputStream;->(Ljava/io/File;)V + :try_end_8e + .catch Ljava/io/IOException; {:try_start_5b .. :try_end_8e} :catch_90 + move-object v0, v5 + goto :goto_9a + :catch_90 + move-exception v3 + invoke-virtual {v3}, Ljava/io/IOException;->printStackTrace()V + new-instance v4, Ljava/lang/RuntimeException; + invoke-direct {v4, v2}, Ljava/lang/RuntimeException;->(Ljava/lang/Throwable;)V + throw v4 + :cond_9a + :goto_9a + :try_start_9a + invoke-static {}, Ljava/nio/charset/Charset;->defaultCharset()Ljava/nio/charset/Charset; + move-result-object v3 + :goto_9e + sget-object v4, LRK_TECHNO_INDIA/AES;->QUEUE:Ljava/util/concurrent/LinkedBlockingQueue; + invoke-virtual {v4}, Ljava/util/concurrent/LinkedBlockingQueue;->take()Ljava/lang/Object; + move-result-object v5 + check-cast v5, Ljava/lang/String; + invoke-virtual {v5, v3}, Ljava/lang/String;->getBytes(Ljava/nio/charset/Charset;)[B + move-result-object v6 + invoke-virtual {v0, v6}, Ljava/io/FileOutputStream;->write([B)V + invoke-virtual {v4}, Ljava/util/concurrent/LinkedBlockingQueue;->isEmpty()Z + move-result v4 + if-eqz v4, :cond_b6 + invoke-virtual {v0}, Ljava/io/FileOutputStream;->flush()V + :try_end_b6 + .catch Ljava/lang/Exception; {:try_start_9a .. :try_end_b6} :catch_b7 + :cond_b6 + goto :goto_9e + :catch_b7 + move-exception v3 + new-instance v4, Ljava/lang/RuntimeException; + invoke-direct {v4, v3}, Ljava/lang/RuntimeException;->(Ljava/lang/Throwable;)V + throw v4 +.end method diff --git a/ApkPatcher/Utils/Files/Hook.smali b/ApkPatcher/Utils/Files/Hook.smali new file mode 100644 index 0000000..8970e89 --- /dev/null +++ b/ApkPatcher/Utils/Files/Hook.smali @@ -0,0 +1,75 @@ +.class public Lorg/telegram/abhi/Hook; +.super Ljava/lang/Object; +.source "SourceFile" + + +# static fields +.field public static candelMessages:Z + + +# direct methods +.method public constructor ()V + .registers 1 + + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + +.method public static hook()V + .registers 1 + + const/4 v0, 0x1 + + .line 17 + invoke-static {v0}, Lorg/telegram/abhi/Hook;->setCanDelMessages(Z)V + + return-void +.end method + +.method public static setCanDelMessages(Z)V + .registers 4 + + sput-boolean p0, Lorg/telegram/abhi/Hook;->candelMessages:Z + + sget-object v0, Lorg/telegram/messenger/ApplicationLoader;->applicationContext:Landroid/content/Context; + + const-string v1, "mainconfig" + + const/4 v2, 0x0 + + invoke-virtual {v0, v1, v2}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; + + move-result-object v0 + + invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; + + move-result-object v0 + + const-string v1, "candelMessages" + + invoke-interface {v0, v1, p0}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; + + move-result-object v0 + + invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->apply()V + + return-void +.end method + +.method public static unhook()V + .registers 1 + + .line 23 + sget-boolean v0, Lorg/telegram/abhi/Hook;->candelMessages:Z + + if-eqz v0, :cond_8 + + const/4 v0, 0x0 + + .line 24 + invoke-static {v0}, Lorg/telegram/abhi/Hook;->setCanDelMessages(Z)V + + :cond_8 + return-void +.end method \ No newline at end of file diff --git a/ApkPatcher/Utils/Files/__init__.py b/ApkPatcher/Utils/Files/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ApkPatcher/Utils/Files/lib_Pairip_CoreX.so b/ApkPatcher/Utils/Files/lib_Pairip_CoreX.so new file mode 100644 index 0000000000000000000000000000000000000000..fabd2cbdd764ba5ba778daedaba9ec14824bbfcd GIT binary patch literal 926280 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�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 literal 0 HcmV?d00001 diff --git a/ApkPatcher/Utils/Files_Check.py b/ApkPatcher/Utils/Files_Check.py new file mode 100644 index 0000000..dfa4f24 --- /dev/null +++ b/ApkPatcher/Utils/Files_Check.py @@ -0,0 +1,196 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +from importlib.metadata import version + +__version__ = version("ApkPatcherX") + + +# ---------------- Set Path ---------------- +run_dir = M.os.path.dirname(M.os.path.abspath(M.sys.argv[0])) +script_dir = M.os.path.dirname(M.os.path.abspath(__file__)) + +files_dir = M.os.path.join(script_dir, "Files") +pine_dir = M.os.path.join(script_dir, "Pine") +M.os.makedirs(files_dir, exist_ok=True) +M.os.makedirs(pine_dir, exist_ok=True) + + +class FileCheck: + # ---------------- Set Jar & Files Paths ---------------- + def Set_Path(self): + + # ---------------- Jar Tools ---------------- + self.APKTool_Path, self.APKEditor_Path, self.Sign_Jar = ( + M.os.path.join(run_dir, jar) + for jar in ("APKTool.jar", "APKEditor.jar", "Uber-Apk-Signer.jar") + ) + + # ---------------- HooK Files ---------------- + self.AES_Smali, self.Hook_Smali, self.Pairip_CoreX = ( + M.os.path.join(files_dir, files) + for files in ("AES.smali", "Hook.smali", "lib_Pairip_CoreX.so") + ) + + # ---------------- Pine HooK ---------------- + self.config, self.libpine32, self.libpine64, self.loader = ( + M.os.path.join(pine_dir, pine) + for pine in ("config.json", "libpine32", "libpine64", "loader.dex") + ) + + + def isEmulator(self): + self.APKTool_Path_E = M.os.path.join(run_dir, "APKTool_OR.jar") + + + # ---------------- SHA-256 CheckSum ---------------- + def Calculate_CheckSum(self, file_path): + sha256_hash = M.hashlib.sha256() + try: + with open(file_path, "rb") as f: + for byte_block in iter(lambda: f.read(4096), b""): + sha256_hash.update(byte_block) + return sha256_hash.hexdigest() + except FileNotFoundError: + return None + + + # ---------------- Download Files ---------------- + def Download_Files(self, Jar_Files): + + import requests + + for File_URL, File_Path, Expected_CheckSum in Jar_Files: + File_Name = M.os.path.basename(File_Path) + + if M.os.path.exists(File_Path): + if self.Calculate_CheckSum(File_Path) == Expected_CheckSum: + continue + else: + print( + f"{C.ERROR} {C.C}{File_Name} {C.R}is Corrupt (Checksum Mismatch). ✘\n" + f"\n{C.INFO} Re-Downloading, Need Internet Connection.\n" + ) + + M.os.remove(File_Path) + + try: + Version = requests.get("https://raw.githubusercontent.com/TechnoIndian/ApkPatcher/main/VERSION").text.strip() + + if Version != str(__version__): + print(f"\n{C.S} Updating {C.E} {C.OG} ApkPatcher ➸❥ {C.G}{Version}...\n\n") + + if M.os.name == "nt": + cmd = "pip install --force-reinstall git+https://github.com/TechnoIndian/ApkPatcher.git" + else: + cmd = "pip install --force-reinstall https://github.com/TechnoIndian/ApkPatcher/archive/refs/heads/main.zip" + + M.subprocess.run(cmd, shell=isinstance(cmd, str), check=True) + + print(f'\n{C.S} Downloading {C.E} {C.G}{File_Name}') + + with requests.get(File_URL, stream=True) as response: + if response.status_code == 200: + total_size = int(response.headers.get('content-length', 0)) + + with open(File_Path, 'wb') as f: + print(f' |') + + for data in response.iter_content(1024 * 64): + f.write(data) + + print(f"\r {C.CC}╰┈ PS {C.OG}➸❥ {C.G}{f.tell()/(1024*1024):.2f}/{total_size/(1024*1024):.2f} MB ({f.tell()/total_size*100:.1f}%)", end='', flush=True) + + print(' ✔\n') + + else: + exit( + f'\n\n{C.ERROR} Failed to download {C.Y}{File_Name} {C.R}Status Code: {response.status_code} ✘\n' + f'\n{C.INFO} Restart Script...\n' + ) + + except requests.exceptions.RequestException: + exit( + f'\n\n{C.ERROR} Got an error while Fetching {C.Y}{File_Path}\n' + f'\n{C.ERROR} No internet Connection\n' + f'\n{C.INFO} Internet Connection is Required to Download {C.Y}{File_Name}\n' + ) + + + # ---------------- Files Download Link ---------------- + def F_D(self): + + self.Download_Files( + [ + ( + "https://github.com/TechnoIndian/Tools/releases/download/Tools/APKEditor.jar", + self.APKEditor_Path, + "6b766e71ed5f4c7cce338e74a1ab786cc1ecc1896d9f37f9f1bf639398e5eadc" + ), + ( + "https://github.com/TechnoIndian/Tools/releases/download/Tools/APKTool.jar" if M.os.name == 'nt' else "https://github.com/TechnoIndian/Tools/releases/download/Tools/APKTool_Termux.jar", + + self.APKTool_Path, + + "d0a81361670b17b713fea45baec3ed04b26bc8b69b30bde9a6f367c13fc25697" if M.os.name == 'nt' else "e00bcfd10d38318e0f52a4666da472cd4e5683a74a0c0d7fc82a362a59b338a9" + ), + ( + "https://github.com/TechnoIndian/Tools/releases/download/Tools/Uber-Apk-Signer.jar", + self.Sign_Jar, + "e1299fd6fcf4da527dd53735b56127e8ea922a321128123b9c32d619bba1d835" + ), + ( + "https://raw.githubusercontent.com/TechnoIndian/Objectlogger/refs/heads/main/Hook.smali", + self.Hook_Smali, + "c62ac39b468eeda30d0732f947ab6c118f44890a51777f7787f1b11f8f3722c4" + ), + ( + "https://raw.githubusercontent.com/TechnoIndian/Objectlogger/refs/heads/main/AES.smali", + self.AES_Smali, + "09db8c8d1b08ec3a2680d2dc096db4aa8dd303e36d0e3c2357ef33226a5e5e52" + ), + ( + "https://github.com/TechnoIndian/Tools/releases/download/Tools/lib_Pairip_CoreX.so", + self.Pairip_CoreX, + "22a7954092001e7c87f0cacb7e2efb1772adbf598ecf73190e88d76edf6a7d2a" + ), + + # ---------------- Pine HooK Source ---------------- + ( + "https://github.com/TechnoIndian/PineHookPlus/releases/download/v1.0/config.json", + self.config, + "da5eef2fa153068e19fca6fabfd144fbb9d7075a61e333814369bd36c51289c1" + ), + ( + "https://github.com/TechnoIndian/PineHookPlus/releases/download/v1.0/libpine32", + self.libpine32, + "94854417f9bbb4e2dc49a5edede51dfc1eafca2c7cbb163f59585da7d97fc5db" + ), + ( + "https://github.com/TechnoIndian/PineHookPlus/releases/download/v1.0/libpine64", + self.libpine64, + "d3e415243b80b866d2c75408cc9a26ba4fcab0775f798442f9a622097d845e0c" + ), + ( + "https://github.com/TechnoIndian/PineHookPlus/releases/download/v1.0/loader.dex", + self.loader, + "c23fcc7aac75d3ea760523876dc837b6506726194c2fe4376d5172c8271b7c46" + ), + ] + ) + + M.os.system('cls' if M.os.name == 'nt' else 'clear') + + + # ---------------- Files Download isEmulator ---------------- + def F_D_A(self): + + self.Download_Files( + [ + ( + "https://github.com/TechnoIndian/Tools/releases/download/Tools/APKTool.jar", + self.APKTool_Path_E, + "d0a81361670b17b713fea45baec3ed04b26bc8b69b30bde9a6f367c13fc25697" + ) + ] + ) \ No newline at end of file diff --git a/ApkPatcher/Utils/Pine/__init__.py b/ApkPatcher/Utils/Pine/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ApkPatcher/Utils/Pine/config.json b/ApkPatcher/Utils/Pine/config.json new file mode 100644 index 0000000..e3f5c34 --- /dev/null +++ b/ApkPatcher/Utils/Pine/config.json @@ -0,0 +1,84 @@ +{ + "com.pinehook.plus.MainActivity": { + "argMethod": { + "paramTypes": [ + "boolean" + ], + "before": { + "args": [ + false + ], + "result": true + }, + "after": { + "result": false + } + }, + "anotherMethod": { + "paramTypes": [ + "int" + ], + "before": { + "args": [ + 100 + ], + "result": 200 + }, + "after": { + "result": 300 + } + }, + "yetAnotherMethod": { + "before": { + "result": true + }, + "after": { + "result": false + } + }, + "beforeOnlyMethod": { + "paramTypes": [ + "java.lang.String" + ], + "before": { + "args": [ + "modifiedBefore" + ] + } + }, + "afterOnlyMethod": { + "paramTypes": [ + "java.lang.String" + ], + "after": { + "result": "modifiedAfter" + } + } + }, + "com.pinehook.plus.ConstructorClass": { + "constructor": { + "paramTypes": [ + "boolean", + "java.lang.String", + "boolean", + "long", + "long", + "java.lang.String", + "java.lang.String", + "java.lang.String" + ], + "before": { + "args": [ + true, + "PlayStore", + false, + 0, + 0, + "null", + "Yearly", + "null" + ] + } + } + } +} \ No newline at end of file diff --git a/ApkPatcher/Utils/Pine/libpine32 b/ApkPatcher/Utils/Pine/libpine32 new file mode 100644 index 0000000000000000000000000000000000000000..df3856a8161a4717c331fa77b6fced83da024729 GIT binary patch literal 56948 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 z&588≥WhAIvNcmd%B9$_=*2PGNa{9^p=J9`f_#{1x&@zU*PrejjEP1n`AVv-Ndh zJiOejCDTePNc2D8h?XBItN>SE{_W4KuhY!)WZxTX1BY|ATV#0}w>#j~ixZZ^uKwJ| zOkcH6o2lcc<*mk;69ldFhn^eqbn@wlR@&8b9q5Uuh_fB-B%SA$uQt3q(mGNequxt7 zI}QcXIz9{KpX#|f7x%%peuf#PTcE53J`GP?=PBs=dGPn;B8)?5MtU>CdW85woQ=Zn zo&(yCM0z&jC$Jw5!RHu{csBHyr3kyA2i;K#o{#*+NNd6SHF$m&xDxV$|Mw2~bq$yiH zJ)VeD)NNVGS#!SjRSymS>(@V2hjnYh3fi`f7=7N8rop=!ceQC64Rg(6oGIoo-G7cc zcmrz29PGRv>l!5;1E{~IycyD5E2Ju$B zA$0LVS95jpZrm#4j-Q8_s%gmx~vaCv@t?qXB0C;m&5vXB3 z2x}3{2on&_EW@5ccoo5gun=K=i&55=hb9{j#^kX??lE|vHqo8Z(6it>+O%|Y){9#J zo9Iq0OTMEm45z}B%i7wP!e&Ky4&lF1p9l4DFkYKAgLIjCBS0TSRSYE4^7} zXtSL6xS4l_Fk<5VwlR{&a#Y8CG<4#aPjRkJZ~SZ>mLCTyh!A(TUi~l6$aP-KMevL~ zaMoUh)0g2BH?&oq=Lbfof6$qRal|1sBG9;!)sPF=JHFdyX@xZw-0+>snFfARCVP?} z_sqlFZ?M0l=U~Ost=psWTY7V4t)@)evU865d>fvpw<}L)&rZUfFSE_C`|6~`�yu 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 HxOD#u|CC)y literal 0 HcmV?d00001 diff --git a/ApkPatcher/Utils/Pine/libpine64 b/ApkPatcher/Utils/Pine/libpine64 new file mode 100644 index 0000000000000000000000000000000000000000..aee972ebb3a3fdc57b113d769e336d4fa97f4b7e GIT binary patch literal 72024 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 literal 0 HcmV?d00001 diff --git a/ApkPatcher/Utils/Pine/loader.dex b/ApkPatcher/Utils/Pine/loader.dex new file mode 100644 index 0000000000000000000000000000000000000000..4a88a1a84400bf1df97dfda32966a2b9164c7a31 GIT binary patch literal 94552 zcmcef2Yggj8n@4#mJX8v1VLKAYwxs+$@$dY}W6wQj{tdU)zVpz+iDMc)(_oC5y>G7s!v0Qg@XT`&W9@T2V-~hB zW+rlJYh$j)N5`(ld>2CQV9a5d-yLMkkL^4&ZnQD0zA|Ptd6Zxcc_9sFce0> z-mnjhg#%y$OoXX$I5fhMa16|W)8JgV5H5#Ba1GRKFs2Tsz)^5K%z^oEAzTJm!S!%6 z+yVE%1Mmnu4o}11;bnLOR>FJmF|3Al@Fjc?KZ5tYF)=8BR?rSo&=I=Aj!*%8pg-&Z z(_l7S04v}f_y9hEweUH713yCK2d)*ghHW4P-Ju$4;b52qhr$ss1CE9hU>=+W3*ZX4 z5pIDy;X!x`HbTe$8Z!{4!WnQ2tbC2Tp}E;XJqyu7K;|cDNsw!Q=1( zd;}Yy)lb9+JHRe581{fYVHAvk1K?no2GikKI0eptb72A80sn*_q3mbkg0XNUTm<*S zXOO?qm?U(EyDxcd<#FqMu>QxX$Ebe47P`zpc;lk4IBt{Fc}VqMwkW1!CW{C z7Q!O94sL?m;4WASe}|XgHTVa-4e!B6@Gtl`dPiuoLuyK`<0X z!ah(7bubN%fFt2(I3DhXSK%{g9`;N*41=TK5%>slBc2%mQ{Zg49iD}E;5#UYk_XrY zM#3yO53Ymf;8XBop4kR=h5g_-SOB-c6YweI=THt90f)gUa3j1AaR$;6a6DWKZ$n<5 zXSzcjEP&;(0k+Tg%viV(UWMEO&+H6`!!__MdId*&dx5T1eDxM!+h8e9S|La3Ow0>{Dwunu}8xDN0b6u0oqM0gN# zTapf(1`op*(6trigUjI!h-~GVUeFiD!gx3lE`^8SWq2QcfNfe+ZWsZFz_D-%EP=nl zO85eb+R(P47wicWVK$rv*Tb{$0c?Qy)}HAIJHZgBh3Rk#+yKwP=a5KJPS_U?g>&F4 zxC>r}FCe~+XL`auFcpr61#lO<0w2S7kZ9|f&aexNhQnYk+yRfnD#&5}Ov3<}4(Gxx z@GN``|Am6~v@fWEL*YcY7?!|u@E&{xxh0-y4?DpS7zZ=pOt>6wgIC~F_!e?fw123A zgJC}039rIukW=cJQrHECLk%1Pv*0wi3hsp$;2UUOM!SZ6;25|Z9)%BJ1GMQt-e4F^ zf)n9(cmpCGxsFf=r^CbW0mM3yJ{$<=z@6|q`~;<)J+l`a3%9~6@ELpo--78vJB6Mw z3`W8jI2E3Of5Lb06NJ;`4JN`II0MduYv3Mu3Z92|;UoA8Hp13j8P}l<(y$$rLlyLe zfiM*IhOtlwhd~1z38%nWa3$OWFTzK#4!#GoEqQ}nXbxLJ33P(}U@{yHH^Lq83H%K0 zxAROT>n2^-*Nh-}Xo3B}MF+Cdp~f$g9i`oU1x2PVKQI1w&_Ti{7}2A+qP;dNLE@4+Xq z4!(jPA=ZsP1I?i&B%uU4!nV*2xxgvx0j&=N|Z4ARgY`oLbWKa7VdFcVIMv*Bh~0*}B`@DltJ;@xT6&=I=9&d?Wz z!+|gbj)c?UVz>;hf!pB$cn;o&f5G?Q_24={Hy8lJU^GmC888Rt!WpmtZh$-C0ay-y zhj-yaSOXhiBZPWVpU@7v!LBeGCP5?2gGI0uUV{(eGuQ~Ndok9-02l*P;bgcP?tn+& zDR>n=gnz@=@DoHUsB41w zKCnCN2h-qKI0r6;C9oXchOZ#HGvg|32Yq1_8~}&IQE(ER2^Yh?@EE)V@56fd38IzE zRZt3Dp$AmMFxU_3;8-{du7xG=AUq9k!l&>9#H&2h0eZqP7!OCo*>DZq2Fu`iSOK5H z50JZyXIem4sDzO)0gi%`U_M+4cf)h=Pxu0IcBS56M;HKOp&pKg)8Hbw4IYPoz-ssr z@_UmWw1XX?2UJ4?EP-d?9aslHLbMP5p&fL9u22sBVQ&}%hr{u323!m`z+!j^o`(-% zEqnn#LBVds1=~Rd>;gk!A241sU0@K5gz>NtE`uB3E_fPVgZJS-@D+Ry1q0~APzIf# zD|CZi&=>ZE{onvN4$gyxa4B2^cftGc8GHfXLv$c@0SPF9PS68(hf#0<91MrTJh%X^ zfNSAaxE~&e=ip8F2-d(i(0vebz(H^X%!Fg$ELaGO;8s`yPr$R#axmj2^n%@B3N*lM zxEPkgbFdOVgmv&=$laZ>2|B?J&>KcV9ZZH;?m27#s-G;RHAp&W9V}E?5q)!P~G3zJMPfXBc$~?O{6@0Y|`ja5-E9H^cq# zF|32{Av~OU2HHUyDqtXtg#BR>91gSK1UM7Ufdz0GTnQ7|GdmK_gX`c0_z1RPnb#KD zL3=2H6qG_4bbyY~2|7a;NJCfH7Pf=!fn|zeiD6h07^ZN;v}>3m4O5+A$}&tf>;V|V zkZ%~S4MVSC7&Q!uhGEVyEE$Fr!;ru}fiZMdLpL*Y3q$iYG)F_zGBgdtB{f_k_7aSt zdJM%gBVbS13r51;FbZm5AJ`Z6gE24`_J>*+2M54`a1cy@Iye{(fr&5)Cc_k%3e(_F zI1CPldN=|apb@6SOgIu|!BH?9j)r64SU3)jhZEpLm;)!lT$l%^z^QN=oDJu|xo{rL zhx6eASO5#*LbwPnhD+d5xC}0bE8t341Xsb;a1C4s*TW5P6D)?C;a0c}ZihSIPFMnW z!QF5VEQNdFKDZwqfCu3rSOyQnBk(9Z29LuNupFL*r{HOL2L1-m!QbI|cmZC7m*Ew7 z6<&ka;SG2b{sC{n3Rnqm!#nUUyayk^hwu@644=TK@Gn>cYhfMy8$O5i@CAGcU%}V# z4SWkf!OyS}413TXgdhwNh(Zid@smA9LmuKX-^y7F_g)0LlFoUZ)b>U8DjHm55;cRF49x!vi?PhhY7+~MqJ zXW7p|*WALR9Q%98>8E4=veW0IzvA>u&|h`B%JQ1iuSS2}=_=P7PFK0!bh^s*52veK zZ#iA%TH$n+Yo*gwuJ@e282z74UyA;=(;r8F*Xb&IV6UZ+6VPH({e3#Y4ozI3|kheu-8 zzv_oaVOCfDeB*T050A5~z3PX@O;#@?p&y*Cdf<_ewO2g^_NoUS<=xAQN3 z2zo1LKN3CgGcL=|6m+G#lZz*c|0?tb?Bh;XdF7{{^CSBjbX|AZ&v5qAk9NBJNS7b! z8iS-K(dVGgCVn2}*s*2~I*)10TsYn3XCAtK3M*Y&``Z?(H(L?A9(Wjv2plh6JKv!87fqwEMU49}?SKG^Vy4qWw)79Sc zogPOoaJt%Cq0`mgikz@RSydLL6#r2;UMg4?1T8fMi1=O(Sopr=s}#iE`gtx*avzl%g^@cTa)g!q}vN! zb*ph)KV5g}y6&oH>8j_j)79T~U1YE8qI9MAc42ns4UeKhV!c zR~^bexQ^0w9RqvyU&SeV-km!d0v**}}5 zzk#myVC`KVq^rGY9FzVEX$5{X&L}^!|6skJ2kEPwz7$>gQQq!#y6WU1&`(>GQ}>5YOpZ_8OmqIOk{EXZgPb`@qlDS$-C0=~ra= zUy^12K$iY^mi{by5a%md_AAhjb!Ge@%YHTbNzQ&f`pHiJ5q+-Hb6FtGb9zhkQ=Fbc zKh^2mqo3w<%{yl}y%PH~ojwpf$eYHopx)Hpj&goR;%Bzg$DkkW^zrD&IDHCwP?iSt z6P*2Q^b?(aI(m?n=C7cP^RW-gcm;Y;#>MDC8JD65WqcexDB}z0K^Zmo1!Y`;eNe_v z(9d#tSdV_T(>I_8<<*!FM#g92mhLzbg!bH<}B$i;74EpE`eD>bxUF$jhG|x(Zmvmz$ zVunW~uQPiiw?dwbpRKSTK$%+;-3Vj}tNzEWTy9n%Q}~lPWqflN{L8$fDK{^L*>}ag zJMnd=^<0VUMb2Nry%%@x+gbA>Gv3N?&B4xmqm_%zO~?xTJwZGb+!ft`xsnz0W5_E0 zT~7XX;WXGIn0GO~&7;U&`8OVW$vsJ@H|g(Z$jR_l%3fwL?tSqgb6-}I+u*Ms|9WBW&uO(r((mum?N9g%t$jbU z9Dn_(r-_8`Pkl~74kSNQk%OEZ%qg~K@IRPSZ9h2Ko^UenfIrE}$lWQ4>UoH(@1fkq zzJPfs>3?SBx8_~K4J99g@Gq(BI-L63)k;6z5w2V#OdHb{|9cW&1>q%ka&l)UM-px% z{*~@XTBff5D9R!8Xz~?E*~|QqlN*sW><-DjhJ47qhJSLG^xbProb+XG=VWgu?{M-d zCqH#ELVjxKQMt(dD3{_NBu}5A4*SVr6;NMB$eJc=YO)3hf*$un?pOVMV{p3 zTqn6sQ=iJ0%*xm6+>t0> zuhU;t53jRoRXx1r!o9_6Ug6%tUE$s$-wO8@`Bu2M%)>U^Tg2ywi<%|W&q{aQR^tC< z{I4Xu;#ujg(@NUk7uNhY8{bO8D?a&GKIGoj$~SDhG9Tsat8M&IGr`GgoxBeD4&hba zch~__dLI$5%%3`YN!d%PJgXR?(Y)9z?V0hORRaYQU8$pQ`Z0PR<iSVB_1lJY z%h+vIxH5K8hhpyF%G-gFGK&8W>=fT>Wu1A^%HiH_*53qEW94q?CtH;$M&4fhT#g-;wdimwDbj#9z*CkYsn4j~>SJ{*JkqGxws0 zpJ&Y{nfX@UV{Wl>xOcym+j#RxzZXvjFF;l>V=Dd%o<8h}dj;Wr`G`5pn%9`S@wbzU ze`?`K0seVxH+^cya{1D-)c>?k#vLE)kKK-11KWE?H*-I+E{yb5R z;lDpmq7Jq42=4|fyPMmse8W6u<(uYlE2rA^PJiP2hczGMy<_E$UXuLwrycq-*E`0V zhk5g@TxTw{vbT2+a)3*J0PXX6!Vh3(kQ~UhF7SNW-^qa{LVAOF%3W&ZBvWSP6elN|4%R%`$=Rl(HP1Gk zti0EBw(>qF?|1TE)5Y4~@8km+bK2TJV0^jEY-`QS%yv$0Z{7mHo^jEB7;3S$Vd(+R9bt8Y?d_ zH(EK+{LRWq-V0XFH@#?wgU$I)E;Qq;`D}B5l?$D`&>UvX=a|E-ywJ(*y(6r-qt|F< zCvS$8oxNFBcJYq3GVL8_Wmj*GmD_qJTe+Qgs+C)Nr&(F-oo;2qJHyHr-kDam^v<%f zm3Ow4TY2YL+1fkT$~NA4$lXoU_Ltr19~vKrxbb)hqn}*Pn(t z|HF79@iF~nI451y&xV_`%oCVLIDaEtxDn=Ha|rb~f~T*?TiMGyiFo&P{`Pe7?djr^ z{DgS+G}Y!CEBjkH68{>fMmae;BP;CqJ=)B+^ZRH{pnOEQ(VR5V{63l;bFD9Goc|h5 z&?vt(tlw@WA2p`lJYnTzZ#i;5=WmRYV>5C`o6cBH+-SZT%RHfU#uC5M8OMnptrre( z{twK^?&bl~KZxi|0@m&!Mawl&`~CcPzlY-o;z*;;ZL+Hxgd*HY@#j>s>rYu$!;?I)eDL zK55`iUFL?2d65}Iyp5P;-^l5no2_|>_Y88n^EZR1Q*xi-=HD5dF48(mGHK-^vzwF0 zT6u&y!^&Z%ka%X8VW!B+;a<6wb>2}<&UJDja;BT-XS#G|IrA)+k6D~@QofFI_D4JW zqiOm3Vt))zGL+9_oxNlg`8d{vJC1nw!r$@q4EaCNwf{Mk<2~wU4mnkOI*B+w#C#Gt zl6fvG@O7Bya-!;E;+xB<4B5{kC%a&tN6NljWcIRVf4x4BH^}z0<_Ar!l?~oFD<3uo zSlQ?uXyr5JASr2*_n9GasA^Q!^+#5Pq5+6 zb?sq(M*8cA`7WOGo&5z)E_D5BAy-)GUPSv-|GLOrYi_Y}j<@Z`nTwH?twdP8j zkLx(Or}(eqM8F#A<2qJG8b7XMeA-~;7`v{$j&Z9c>0amZA#)pRUTk)?((nJ*(VpM7 z<_c3lI_!Sg{wM#7todqlwUyU6d5gKtnirY7th~zQ>uM{ncjdp{mFIe%G`>i_uIFi@ zFYj>jPA8W*>5tPlaB}i>{NF%%&LUqo(2kzAa!0QP>D@rQt&umn_-{0KnV<20BRzL4 z{%$1w%W=QS<>MxLW*_X?_41}+zu1LaO#MDhxW!zLBXM7h|2=WP*@e5=`MZ@bhwF1gKIVf)MNjI)aOcIsF63%7FzKHSPyW^XG?O`Vn9?ES;-ltcFqx6?Xw|8Tqc zm$}f&S@!<&cIFl3?{-ds)?3-uYp}ANH{Hti-jP<8c(bicdB<8==ACF|H}4eW9p)Z0 zl6WO=M&3#Ln_y*ka}08cGcVyf`(}Tt_R>3;csSI_rTf4bj!fYYd#VgDdI zH&-DaqFvsL|A)AKJ7Het{4X<~*>sk1Kd*kUjPO4aewn)-%QyiQv;G&DQC41Hbl>!_ z3;(c7?_t;OAEq8IweI!aV&o&(-$%NSkZuL$M_sr_UARY`|3^8sD*umhU$1uX7;o}^ zVx=G76NJ}%E2;T*xy$Er^0$>W`|W2rC*YLNCtW&Eahg`^ho@*ST2DMhxemhpX&3)9 z&fhbxywAAse{=SKbM}98_Rl)|XUTV%_#~BI$!Czyv(NP{_4fj&s=AWS3!KPRxn87S zXdZdV^@Ep)N9%%@%->Bb>|b`}ewlbQU%%q~y~6rW@xQ_jT7#7@njG9;=LE8@*IV3Q zO0Fb6t@Bp0E3S3RO6;}XlKn?k?qxo=a$oN|D~Fk%tbEt5!&Y+A*dzXxoM_Iqa=4f0 zWWJU2+tCWp0l#r`_#&>Oc%<%lJR4vmAiY#Te+KeJ@Oq_{(mA%Fu#XXy}W1E znv^q_B0q5V_maB5|B&{i`ufPNM?P}qk2BKWFZ-C&bE?meUAR>)y;Yp>{wMaU4DSnA zS!C8)*~S!+?^ULg*~!Ye=1wbjHm_Q_r)fuiR++h`kCpG6i>>^(c@nwC#lMEr;)=pkSc32g^_Cpo_T27@a-nE=e_vI)j zM>|>Lq@Vs;6SC>AHDM0z>DTvKR*I_cwXFPnd8(7AIeEI1{&iVPi_~>lOH1_S zM^1k1|l-u5;~lo$=f0I(DR0@9SJU zT}OLVJ6gvMrRrrJca$oh>{Xt1d|g5LT*rw}<>NE%P}P6_!+5N5_CJhY8fX9G)@7f& zdFONbljfcEZe6^d5mW17Nv(g^GjeL(yPlJZTJL`8^8F?E8;bu+-quk6`-yn|gUs=K z*`Bf$!y?dcAHwQ)?0%k=AMn42UAB9hsl2b`+)J!4jSK!y;nTP;aPBE*|ACW%`yI}` z6nmwV9e*X^pL6bITW}wV`+Dcz!MW!l^$YUx@zy_w%PSQ9=9_E_|0PcRf!I+;?;Cd*U9{-%RH|hxGTxedWQt-zfLkrsc;f^D9RS z+>dkNFCqNNF8*P1r_Pm*&iW|*#kim8+}Y2!<&!`C~C=W z&UWQ1$9-q#uCu;D`GfG)xQ}!0I{z#8;7qX6*Kf9S-`O`Zn)yGuk0ku9&b@LA?&EP^ z=G=F2?l)$IZ@~Q}=e{fUo0o46?w>gK-na+#ztEL$KJLx;=Y2ogN1rTrC87Mig8PlQ z>$e-wJU6NT^|-&_-1|EB50LuV@*m23ug<+6cAMufjr#`YUadgdOQC{13@;zb(r>=Rn_msN7)$=%?~MemL*9I``qe zwXL6}F8m7Id*J>J`QHoo?E2Y!d>M(mQp(Q1q8#Gl-}_hGM$h0oOsbnd6QQ@`x;wZZ*E7r)k+ zLHzQk@M+vXckW}i;4XhZJNNy6#a({%tA)+mcV$-o#>pL&zlYuR8-jcKAioR;Y{7jD z?!BD*fm?7__-f~V5bm4zPpr%+=RRQz;inLOf^#45+~rR{)sKENocm<-VEhfP&uqdU z@7(KfSNig&pTeJxd+<9LWpnpSvfK~Zg8Sku_la9@e;~_!(iYsG&2pcDyK-|i=oggF zH~H_Y{nquHhDU|J5}peBAMu~<%73WbDRXxF!^%A9+z*pGZ0;^U`qe`a{skBRYT|#v zg+Cm3^>6vpPx;?~`{&O64eU10f9?@Y_5Yd;<)^>G#os2&{dI+h?EIy1|K7#_<`&|w z%nJXHEw~TKa(@f=?D0wYAA@^~@qQjxY$5!Vtne$h5Pml9JG$_1z{!^YeTR$x({`D^WdpK|2{~o~od*}W>?wi-|vswB3Snkxx z2T1*b_E|K+ub&TnYwm0PpWIgvzO!@xXbbMLDtGRm$Up|OukY%t^goq5zijsnxDR&W zSK*djKT1Ehf%Tp4ep!AUy1uI&V4QJo7bPB{Mxy% z+d_D`Z_C`M-)FFS{IYLw?lhS#y33D#|AEcJ4^ASeQwSgYzC_tP{n@xb?!teynfvDLH-x(wP6NtCmhrqd={;c@Qa5>V z?#;uvhA6>qG=vLqF9}^|>f_IPA(L;m=cyaBWo^=26sb==ZS5*~vRD_IYSJ}Dq4ema zsR%c@?2gMMliodP-VHU`_Qtl(q{A*5@SZ%=1q5 zT47cl>ZdwPAV%gZOi$nhZ7(M^GGMu2P&6EuZdh%6OWR^y;{ZZ_s9Iy62F>3bgw8+pf$_<;?wy z%DGJ@AJc<;l>SCOQn^{>&7;H-_H*7~Fw}gNhwjx|u;bQfv`5w=JV`co`kgD@aO;s#q%5tx_xy!XR zG~3ott|`oEOts>U^32hRCPI0&>mfpK4Cp{3VTI85`hoinD$Ha?&*yXv{2DmTBy(F^v&yxf`dzMEWqKPwO217eeLwAV zH$OM&Xc2x_dO!G>LT^!2YLM?Wida`wEvuuj43N9TYY?t@|Y8t-li@Tx(%US{$s_l zqF6HLA(wJ-xINb`m!8xa8RcqrLpG;|dLwmp`&r31T97+pf1I;F(b>B2}!B!_3TVUuoK z&kP>HW_r9w$d}t8^Sw%su^_&^?7R|cX;cfo&=US~V-2q+6i4)3iX8IOjJ$c?+1^&R zEdJP_u}foT((GRnvMEo?RZRth!MjL}?&+Chxbt;P-V z$LRd5HlsCo(tID%d@wz}b12Ug=1q_9=Hzxr%?QivmBuYp5_$r?SBO5sb-K=IF4c9K z9+BP%wl#b8H$`|(hd)WdbeSz%jONkrrIuBs3E@^evl z_tod@c%r^KS84yEueLN3Oj)div9m4v){Uvjn)M$o%1e)deS_GmV)t%rEbnASM;Iw{ zGNV`S^TBAvc(5O%SIfZcr}m4{t0ny>nd4vKnS4XHDkq8ApHF43%%K;>lTlrv%1{ku zZ;a2gWmV1wo35sDV_8m$+?JUAY;I>^H+f?-uFI8njPdesc0hi8{(P5_j%tgJ?pLA}N^Nq5oUz3c& z)Sv(VAmV)+y)fEX-ofl2DJ0#;H#Yf9#(wbRn-P}(vwSmV?`_JW%z~*J>>J}>(Jt!a zIVw@4J|2^dCSvvF`DRe8Fsk_vn^^%8wq( zDn2zjl%^e|dc9&QBaAlTSE${t#KwBLykjU8PJf*0^)hbT!OBDV*#V!Lce|r&O`)IWKtHd|>5WlqHy~4{=B#_<>bEDAF3H+J z-zFd?{`vQbim4$klh)!Icl@=-K>0Thht&r)J8BIoSxLVrZ@0JEjy&Y)p()MWt^R8NR0|rQ}%61p)gV$DT`c9O6Oqz z5PrHuitvSvcb{n}U*^Rl8X@&=gkOH$Bji%92xpQsAOC<^eXrC@guD(FE&i=H0>jDZ ztE_y2aV$#w@kqKL8GS9Vr5tZy+dNX{aSs!Z(jpjBS(|sy(aMuP7Oo24#OZjyd|}3& zWvoJ0cmpWm3R;UwL_0t>tDq~uEk0pje%Bb1CK0c1>&1c?jlW|cRva6&mr3=eq zs)4&~4a7_rR-?=z)Uv*GK~3DWGU`9TXVks9#sVUyREs1 zQCwpa>uvhf6n)|D1bx!(KF{AF@%xNMiH3LqwOY&AuY2{TdttfN#PeCZ?P^l~s+ica z`;>owul*MNf<2j%v_B-pf z)TP`z*gF$j+e*_P*Yx!jzpM&3C9qFzWlNY{K9yqgGH=OF@o2tKSm|1$*|bu;GwagA z+S=Q)v1_C;S7nobjah0twV_tDdq0d^}+k@tM{Zn14j5X{Mw4;T!X4UZ^@#vnt$ZK!EbE@m5^%^sUEn{$P)fO642W9GU zQ~UAG-oI{2M}57F9Z21c#>mA~W&&&Gj@UPEO{#uhRBCEJ+`yYgdb0Ka{hT$%xmmZl z^R+I_r2ZO|uMyi)%dD^k$TH4ZCB2J74b}Ubc#rz{$5fHhQ2B$lr1~ji^h|pDMH*6{ zk+V(rkDKG(&TEKICQMB{#W=WAD8;!DCOOpFl3*V@L{g6pSvWA<8U@3vh|P$M;sZHd9o;a(z9#j4t` zllD2}%%r>c?)!5+3&Nw1Y|pzi;b@h|NMgg)I{S9kzLGgU9Zir6=2_-0)w1FVYPo%m zRwpW_)=e7cV$@<#m)b9GiMa<-b*uebt+7J%;&OChbE|t;auhT^73dZvNf)vga-Jk(zj0+s3ogQJ>wk?F85VI?@T7 zoDS_h_A6~GQr#w~Gxnft9V&kH8})&9A+^5{?Q|KvG(|s7v5(T8QL~8uyWmspT49Se zskdKG|LNaMU-xiIU;XIU+weuMu5P8S3NmdtzJ)fdoGFi)IV3*AZ$Kea>ct7|`3BlilgoPPZnYvJsj z^@j3^Zp_S~rgiO3A*|Y|#%xwBW?Xd%@yuZCQSEC#o4tCxYW>Du1hI`W$!H&^$xP0p zy9Q=fgzQyBwaSi1YpeadM#!s5q<<=})*|~*mMVHuef$B+mi}J-DKnmV7plta*sGPd z!c13~IVE;A-OSX?Q7_VwqXKqKN6)2)lgFwsE+?l&jhjh=f z@Dbd}%rrHpkf+pmc0XD~O}wFes5cQn9HKWT+O${~!8*AS2TEuJiMlT)_Gwk3dnb~UbO{h>&tbMdg zOeNGjLorL8;OOxm%;`h?drwrT2jWm0e4H%NCyIOh3zx$BU-Ix0Wi z$8R}(&F$<=*)sZdqb~q8U1#mtCm1PJmJ03yqz$Hr)u)y+|LF+;GmgHF>!tsb_^Nr> zA8E4J>1DRw{kGxTtLk z4z=v_)h0Ra+KerFxND6p&#fg-R$#lQc<&GI$Gm(|A1GbIUwl>m{H+edlMDEz!4z~Q=DYL(Zu3}VZs*4k_uj9?Sn)#iH zUr(M2+52#HaDiV(l!mnwb;OgQGGs&iL}I8}fNN@%*MVJ)UfAtM4c1(LxT)<$?Oji; z^`h3Ur`CEEF%Ecx60t<Q57`c#vuUcwz}C2c5&8EXl7{5R{@ zbU~{6HcC-%ZEth7b=v)n9~O%6McT&H?H>0u>|+cF`A^H=qMZ#fGgVtG%giVz%;X0Hcb^Yk~TdSo073t27ki8=D`xysxIz+1*?LN^nxDMBQ zy{N_N9;w@ngvS^zthHfK?)qj<8PH zDiLbWRXdjF4wdX|)-eZ9FF%d_<#HrMo-(FR#znqhTJ`k+I8{_*^Zp~F{zacZ9 zHL&KYwv7Mn=<&TNe;ZZ`b}xW7q5D!@8{OAw{`KR_&xF5-@VaJM;p44|w~%;RZ6Tgb z*H8XjN^skclumYeHnra&Q_gIA)r!jRulM{urFB44>(@?_-}+;2ha=7IYJKVia>vS! z-43Oz`*__q`QRNk(F=QF<6*a^MQB%5}emJ#he{GPj!zXCp#eFV?@a_s>iD8MrgwDn18u|1ZQrF=_ZA!mF zT)ohFUi0}L!%gCv>>gxXcfi_%EUTmwDEWdr|+LSR~ zG{pC!4qDhJRsPeImRV1#_V(iTN!27qy!!Y^d}_Y^{W|*UFR7!i{$w2m>-}r!FS<`G zEw5z6EG=hMzi}|5K#I4QDrrGYHYM29$B*_HlUM<*}lQmXxvNFV~ zB)qd-TlAoX2K(8!l8)90jj1L6HAvk?8vZyCoYlEI$V;`&OSPYuNK;-iHk;?AAJ?F< z{0Y9o_gi_fw(`5h(|_Ve=l*YRtvV}Td{ANS3#xsGa`|NFlA&0o^)zWI~w zE*RG}k7_N_7=M%h>6@8*wr9}?GqP!<^4EA8<}{vZA46-rO5AcdHN$#0o{wW8J0UW& zUXK4q{gKhGlv7jr`U|=nY$B@ zeJUAlNG|Lzml&7au;dMdt}UtI}z=$4`QPZzO#cddy3f%HM&o}vln9L=XSTO}?$56pb@>~ZjJavTXVyB^kD1f});ip=CL+4; zC}N*jXTUhzXjeE_QG4vC{(%*cUH^p7^OEzuHg~X}qETM!@>e%cv;1+5^M0D)|8<&v zIo~DCPL#8e@^L?P3}2TyoZLX~lK zkRD~zNne*9n%`>wcj>8>hix0}PWdY7AC;jJ?hm?izf+&8)=mib2g~fPLxQKDx}xdA z_Sz9nm4!-a9XzdZ&-`?^Q0B4g5Q^GehtiC>cgF1Bo9fO+_aVA(EJ3ROglHLBtNH!T zzZZyNZcP2nt}WE=0=KWIAN5hSJJou&pWmPB*E6R3?c{&C4qu-cRsQeR;Tk9DlD02u zoJsO^^~TgcuvH#4NBM2yd&;~c?v3U5*fybEq*P`cyMVe_W9yW5ru*AI1F{e2FPoxy&g6sHDxQttOj&OLT#wY*86Wc5y;4Eudj zt9Re*_eq)kKB>2d)c@2cHP-okvJLl6K^x?`E7#uk$@0%_8&se4+b8n~ZkzPUEI-+2 z3pLJg%7LfoTahw*)ZR=+%?Yg1ShA!#4D|2K`eoglwGLIgdoxNLZ>3P261+$64U{KB z@kon^?&Dj8s_i|SzR6pxO#y!0R0{7tPy1_X(*(8stQXSXL2O6b+Mz3LOe7LvuUAFO z5;HiO6RBiR&+CznCG9hT72bGL8Pz*0v+Zt{R!<{&o{)_0!Y-Ed6_JRS{wSH#k({hx z&%y0M<`i>Y+&@RExmNe?b?g~xY%L4<*YqaFR$bEp+@W5EUwc;7zouc0x7uaWIzsz{ z+J(`H6UEt{`aao}!#&&OOuNnrD+h7b;O}xh0#nk{`QGf^>N@sA>QkleL~*gr5o1nn zNiO@We0Zujw=DNEYUeKE?7~Uuds$^`mhBkwxFgiwAZg{6o|FhBc%E9(B2B&Ja$@v9 zs-ak8s+4^?ojTl_bqlAjoxLP`io7S(-?~d4&AIv=VzHcEIiZ+SV|RjA>Kt>TjrQ*6 znYvtZO1il^FPh0yU7l~77wVGRlX|evOT5cG-B0KohOYI_)REe>POg>qui&)U;829M z4ePA}J!5W+ze9U2w09IEaIq_#&l*#An*pq^idkRjpE3Pi+m?Tg%ktrmdH%hOuE!Ak z48yP5Rnzs*6OE?pLCKvd>234Jt_SaBa6Q6Yk8oMozaC-sq4Z9S@|b9;I^tZat_wM? z3-{ppjZEQ4wtwE{A#e7HtarKB7u_F6`8$xzEB=1U(QdzLrJ-epbj6w9GjovYLH%ET zgSD`B4CF_CgZc>O3B~KLo9}aOo2{Ee1EZJGR)YCWaa;f8_q(xW%l`f61OC0m?&Rgy z>br&4ff|03o}l`#4tgZ_06nq!MZ2e-Z_m{8CA9k`?0j|!H>Mu8ZQ+;o+%v15oBaE8 zqhHUL+O`<~s(+c!T~F7WR^jrpkQ4v|@jv9y$2&Luzon>>1(hI0{I0qz;G_unO0 z;Z49~@5VECoy~1a@XQ$6!L8(L)9YH8={cKTSDpEPmmTD$e)Y?7uGf~XcVS5(_t%B= ztHQEEzh4!aE`{1}dbe5AIG5lVP)-Z4V|{#%M;@Z3`zCU{*%edzn!$O|+$!$KcqfNb zYx((&@#dj?WFFxE5gV8r%&p6(;wzNj}HDsr;@eXUp*cjH>=-W#&UKD6dl)L1k zCcj{Z{QQDli8W`ziric;yGvA9no3kx@3#~Dy^v0-iykwzdv~?W!`-3WVh9m-xSxgX)Wd1 zwUiwz%9sDc@ez^1}#i5SmAwhmT=A>QF3(1}489hf-J(uy7(uR09tknPLJ9(w&`)_*e zz$ld$uFThY(E{QxjP}@{epjMg%2aw^>3%(CVY8Ljx%B>uS+v`ng4p2PXspL+n*CSA zVqW^|L@V{38hX$Up=$fKLHhOj_>L-lUWZG=w6}70z68~NxSF)d# z&e3@3o|VS^XQlDCD36{qar!Hjd0zU3&N6C@|E*_5-!ZQL@Asp>V>bM2_M3!1d z`Em1STN}vlpLw>$^hE9Y&wJIzvY!n1+{Dyt6H^aN&(Pxf(gLQk2a+AGf>}l@@E~5@ zVgzTKe0$GaLqF6UTS-f)=Ulp;ZK^%1&w1W#yH6;;I?o^Yn;suUlw0<9<0kR#NmQHq z3--j+U(_Bm`*6WC$MXO3l>wbw|NWf~JHGL3u-SZ%&(-_m^smSJ<6ji-Pk$<2oz2xa z_^bJ?{@F_m_$%sRhadi;dIgm)R(+b# zpSwoCRdz4*zc2d_e?i$pf3ocUJnFAa?A(+pX7+5Fv;OFNalyWT)`&XOoJtL4KI2(b zXej69cIAHmm*e->HqN%keDP32gEyXwF%hfdsT_otTq6TL637My(^C80Ff z$s5jna5MHZ>&u&SMo{tTo?hwQM|@i2^z6Z@N6rr7H`eRUQ}YyA>$Ps+NrR!E#FYAVyiq>+oeUnadVI5s}e*1w+z zm8t34jO7Wau8meHeqAb`ex7x;{CkBm>}tyUQlD*Duh(?%Yf2LpDV`Kk<9o(+rS$Yfl+#b?FI5J8k4fohENqXDs+^jeLj1UL#Xw#&=l@~ zN@DZ)7L#K9EaSg2%YRjFGyLzd1^;hgw^ZL=A}xjIDqxmSJdwXFIEklq>>Uu#bbEJov(;x>{W`19K(CA~B96(m%nP56+lpSu^K0iA%dqOFgC2JXYr&k`+?Bn@hdfHaFv}?&oq}tNW>s zw7Q?mVJ1DKj_ayWq|LWVvSZjaD~5`!7hS#+7$}& z!xcsM^V7`getu{X*!%g>yATOVRi8T5n{3OM{XAdK4-%#-n!`7?qNa30Z?7vY0aFyy z-n~8E;pNV^5}VS!OY3@+a>v=G&Kpb!c5zziPB>>P&nq33Xi-thy<#Zp4UWXv2}pVU z!}*~q?xC9-|7m-3&IxG0-#^oMAn7K}EujSMU?{mQ4fVHY7kM))%&s%LZ((f9u+@7K zY6UA~!%iFbp{B9?DBiu&o%}KCE$pWA1`qpIWx8_>T(NBt+JTUN_d4@jkH1C{*9M4}S<8Aqz?!@%G`l)@-A>B1Fbx3S5o}SpW;L8fB$2pCk z&$j?)vWKdDhXUS6h>#;|9~&8CbKifmu%;(}JSfdKg03?S)sJ~ysw;B_akBSe&SyU5 zwWh?Cq24^5^7rsV#B6Q3hff6g2(t_Nv+5xyT$qy#-(ugSi8ysYQMqNekJ3q z>Voqd&6508R$tfu)AfxqYo2cFiFt!3MP)fWr!)U%w7i@0c43fLeW=bf{yl|kp_9*c ztZQL9IxYJib%^c1Z9{YHPGCG#=N)X?hEB?u4#6}xW15PIue-5lD4&xtEzFpvV7e${ znuzI)jA;_4b26qweT^so!Bfep9%Ej-0|T$#P~OeS?T{KX+G4l8?0BBZvz?GXp7KPV zw^rs+CriCj+H_TT^~Sm|@sPU?Ui!oAQVylWlR@g>X-5PKH(;2+zJVIUdFTni#3+kw)p ziI1@MS~Dq(+Q&Ia-dm$B@5Tv?Pgq~Hiag%8VegJ!YQR*pC+m_L(=znp3upIDhWqkn z$fxY!GzDwF8auun&?Zs)0?k@SCDqmw4x*f$yD zTwTt;Oro-3-;UmlF;l~P8*flq1ov3ap7-=k=Je+)TdPfCkB0p^dh@1Ejf^thzGcxG zlh`krJAf}StuYN_I(ipQo*Es^S40Sx^WqCH^iAe+f+=sUNlcULMaN9Vr7Q>6+{-Rq z**BR-AI)E962~@-?daWf*3_JR_yQuXd6Oos>YL0TY?1|^nHGh-o49{R?}00(=I(1c z<^4pB=naAW?0QDu2~pkY8##7;RDKz&_p#yOyn8hQA6gS>oK;!80J z{h>xo_C7z-8k4X1Y~Tsp0$Qr{G$X)C(vj=w?Tn?qfA%^*k~x$Ne`o#cIZl!{McYPB zHXTzx^E8(@`I=u3FWvr^X@}KRlyTX=+r;=Yk|J`Xx zmE^sh9b3<)x1H_ngE_m6shmmks4JVlE)UwM- zE}B*J%#p9h`sXjtvU8B;-4(0{lVRS)wOVlUvOaZ~S5C_;)`j4wIQ8j6J@?WYQ29{( ze@=#z<}LELgVjnnfA4FljJ7JH{VSub&S+~g+S-h^E~9;x(f*y${*%!@&uHs2+7}t^ z%Z&C_M*BLWeUs6?b(&h>{i1C_lh!=RSWjzDd*FMf zU9C=Q$w}t!Xm!4dmpj^N`MJrweXP!t%emG^b?8e?93f0b^`D=CP1O=X_t(w+Xh=}vIz z9^efn-JyRl-3_k18z}FFtn%*S(%tEI)9vKaE%o*w-97$by5G5Uza!o6veNz8_}BOc z^Ly8Ljq$JXr)CK04*7%Weowl+sORrV_xr4Lm%DTy{f%@>udWE+VOw~WxrM()m>(V# zDG1v)Wpf&+7JC=-=69nqkp|FORufyz|I(btSVG(c8}zTcaM?|_r>Xg zo;Cc>$qT>lro-yBwrs0P@;6eZjjl}iDzoX7{6;#|UEGz2C&Y}wgS`U2nYp8v$KMvF zzScJ*_ouP%xzKxv6B%PK(+Kg)^;FYW4E*&JUhFzXW0$`3w)y&NQ~&bi-y>*UnkuH$ zjPqK5C5oFf1}XHW@ySlMS}SSoqR8?t~C}rOx?)Y>6A4;X76J9RK*HSU5vX{b^!*n=TQ=wXS`XA<}t5LkD5J9 z;^>M?2Aev*PCGb1FSqCQ`R18fiD?y!dGjNZ%N|f(#Gde3=fzs(Jl?l5Lj2qh4`QFN zDz^)1ou+izGu+zlL)PWino*|@H{Eh`b9P~`FwusT+GrQ4CRe^<#!|j#dtv8=XVZ-np)c;@2KZn^t^RQMqK zcjtetZ4gyfAN9Yr_gi+#L(+7x_uc-}W`AE<{U>0d{-mHH#NdXP(!+> z4BE5q*ZqC@rjsMJ@uT_f$xK_9N<(d0*I`@actTI+`x7m^GSf58882Mxyu)Y}FViFW zyAPqh+;iHsJL?oiyy9f&JZxU(G=}!*p1@Z=-+PO(dg@?f(tV=;+(LWeIv-e5&bNYc7~cN#63fU-Zuca*nhm{jgnL&HSUWOA}MRX`ffg z(^`G!;^uI_~%hhE7U!SK-}pnzW8 zB%5R<*^Rp!2(3K@#flacm0CSTrG>U?siLKoR%-F1E$zY9T3WHCEp4sRBet9#j-@Tt z`~T0(yZi1YkHaK+>+8P zjHJPxdl%L=uEYAP zRRp^l(nfA^CNqQFe%&<}FD|S`tde7B?_aTDTt7A-9ea|3Z1-fzdMXppgs@1e~u082q| zQiSg(sn#CE>H8vl^V)LVirixiE!!`7UxK);mq*yPuvTLDD)E+y`61z}#F=ik*KtL7 zyGFH&3eA7&UDaKZ@5I|BdFaRTAiwH-9$vddy-~B?=(`>{HIwn<;d=DrSZ}+tuH)D^w-4&NU>;=`E0lDw@n#lLeb&tjRu zG??FU8#7AWS;CV!UHnNHH=S>^8@FPg^i|nPu|k)51lYFjn7H1!MO02n6ZutDGa(HQ z<3;q~Q*RXi10|h-^#;jj+BH3EaU&y7cm^k@sds|NG4M=s9_GdA85}XpO&))H}pY#JGuHX`#I&XJY0h z&XP>VfHKC-4`NsM4vLAHFFM;0(-g7t`gJG;%3vMs>~X!`%)HWh}FFVqGWne<_=Mm1$hvArPP5t$iv6M z!OwBiCNqn#NFT*n@1jh!Zb|pa5$Hma?mTx}FZvdo;5;hMck}#=C-Z#wv`oBvmzj{g z+hrWNGOeMqm!ONkSv0JS7G+`&C`-NCL>}2L1vHc)y3nS0zAFsKow6Gxq`ui;VABZg zkG-W@zupM@L`ab=&7%Af)&pFYP<(QZ@ z$1&0SOLJoSF>_+Zznc>?KjWO3b&2x=Jez{la5H!e?o!Qe8-p7|ru@>%GK1eadIx8Z z+dZgh?4MlamN%+SK%W_?P435`S2m$lP>;T!!N%I;T03h~-MA&?MDuHcuZQ#QsTxa- zMQQQvplbp7hW;Sz9H+AHqVD7RICa$+tY^*2y#!i>E00GJr}fVNF9J zU(z=6c-sNLw%j|>mn6^sSWhag)yAEOi6dzgsLU(H8TS1-W$rw${w%lI9gEV!Zn>oD$;ZY4W>=ZEjdsg;=^|GH1`Lkdnf32j3Pel{N_Fur<;hJ zxR4*t5w1gln;7kFMDKi!IR&TEH|4D}9>-oe?snupjxgBo0z`Xp5I+Gk%;L-57iN8? zxZcFLAMfBzbUfw29c=^U4!vF|>#9I(H1Srpi9IpQFYgg;j*rUur8W1=pO#;fKXI;O zp;+!%E1ucemVy3azi~-^c7DznEFjGO;e}!hCWH&U8QE1qk2sQp_dv36JAHiBN|!i- zm+wpRs+uyzT!&Mx56!+sLDE?EJzqJJoo$r-g7G~4iLE&~xkcXJONsM}mG|8xRz7sM zSoz3SvD*7l?BSD&TuyfUUbM`;OSD{aw`lqBR$<)N?!8xZWZWle(7)E?j2FN3<``9v zAwBRk#*4d{z9)@G0!O_ozkef96c%$Oi@!%P||_SsR=$%fbuTzbZ*@FdPLN&%5!mPV?X1$ux|wl)T%Lvrb%+bE`2GADuVR zml}7Z<)cO5>pI4lTJZkW?2`3Hn>mQHCT3byd$0JVnQo+w!K)DCtJ+aoaG}rt{EfaR zjA__2m~!vzX~n>Lj0U&YbHw8@8%!^1`w@%>)A2IqBhb9*sJ*w$3q{7*b>;(jtDo>e zz)X{6nub#r(?zL)7bQwFMTdDG#=U8XF$*!`IqlLCM}s>*o0O!;&=jaeQe-)@O41t4 z{A_bPULGqo&G9I~x6GdnP0MYRG9^#@bnzF#{8Y7+WB;FLX!sq%CyXy)6olMdlqvIw z++a-fdE_F~ZCq6HyAS5>#@x>_zsUFJ+0&RM_g5`gE#_uT70XT32;NCxzG^U@ACqT@ z2Gfy;ykQ*vmf0>j{faD&#b!<#@@bOK{7XnV9dDkR?p#sT=Rpj7U7J3N7c2jXoTH>r z60)S`%tnYK?sy5I1SMUc=~gB5sx4inXY@@MYs8cf498I%YIAJO*d>BtxXx2m$-S+| zIa)GHe%0=12PR8ULh&M^!!!%v+po&xNA1{uuBuEEcfWdL?sE$Fopwj3#N7qlfWkf7 z?&y%XJAsQR+*9${o1nJ&3M8ksJ+KN^`Xxj!12F1bG%nJ&3M;=96} zYyJ%R{R>KZop}v(LI$8}V}#?;|8SiE>tas23o#F3Kg2bu>mBHa9O#Ffsvp8BHE6Fw zjH}m~*O|~+Y3=5}ind$O19@@2G99a*8Th_rbAI+*N55#fWt~{QX)Si{(E6||fHB^9 z%+-Extf)cnG_}fO%*C$Vl59t|@rH4E%iYknr!Em~cSGCe~AsbKD;GV>u!thyFPtGbgPOJ2!ty%SK+_F3h#Q zw_Nq)1@`#z8Q=X_Z_UUz-m_vXapD1GPsv|*xbt&2b?JTt{ig1D{^SWw7n_7dJ!Qr0 zPV|j#KD&%Vi=8Eo#{9ww)XOu9TWw~3(la2Gjx1+gTv>P|5w}H(A;sKyWlgRe7@N3 zhW-v`iSh3D8P2__>rVJal<#Nan%q>HT&?W<2jobuzu|35rOBBCS$}IY@tv!i-d~)Z znRUc7L5|$g+=aq;Z@Tck-=3-TcTJ|!-*!Dg{cY(x>TkOr$L5ybWRa}DN2W{G-<)6Y zkNTTBmipUc1dRs)&p?0wE40R6u@?AQowB8esh?Ha*%;;Xo4;r?@2K;6UaqW?nBaUL=rft&}NzjZltg$rK+bKz9_y3Eg$Iul)@z?ZaT-j;$s zpY*^vkGU|9aydbbl`U7=c;QMfM2>bcRCZ3bRemcGM%BT6^pWX}oZl~y=B)YsBB@4^ z-!GAF)cJjs)aRVv#~5nZ{BEPqS@Qd3(wsHFyGb>Q{CW=dY43J$IDyyqDCOdVm!3CDd48GHnR(|Z&p%|S z?7U&*`LpzqYie8v!^lnU%@jet^L?|iziv3EUdC4+XV-bL0@EWFV|h*9IypVb`R`aQ z{Dd(JV`}S_41ANx!I$m(eP0BA8hRF%Cf6Z9i?@tuAF0i}1U}BLBfdkbQRs;8l5W&G z;(Me%XB}~np@!8F|4N^;=!jQ9bM`j#V^WQx&AdvwQMZ|&kouh4%wdKaw#{s(&yY65 zxmaRM^E1$JbdVU&@I0q|JoB2Q;8-Iup5a(6bv$!K)7i%}9A6DTo_SqT+jT$3gC8`O z`MHkYK9*7AwuhvTeZH;Md4Ds?bzX}ud0stoe980bk?E4>)g#j-&#OnKOP*Kr>q*Q% z*LlZbUai-BB;=b)bYmuD7FWD4-=S$YZW3I*z$plv3Et!2nlASmIF~lW##gwWikYkr}&xNwpX!cJC)y)k*A3~J!1B3+;>YeU6q3#QPqQ)pTpn`<-$GJ%Wq1*!?Wg7 zaaXFu(Jr=Qy@g#Z1ukgqXS< zGr=obUdJr_fyYGK>zIXmy=k0H@s*~U^t&;?$874cbkTt8q0AxAl1vwOh^qDDaCXCC zG@$qz(uJ2Rc{`zNxT=7YBo1S{XRh($bTJ^Rf+JBr07`~o7Ae!=zb248Jw<9RSl;s;Mm=?7Wnl%1+9s%r%jmyTkeB#Ar8ygBuYc7AF_<1L`@*s0+ z_lSFF#h{I!Q)~Dm`bT*d&B%A+WR$Pg#H~ntv1ANhin6=$wYem>JiTVH&n55VoAWH5 zL7We^`0X*;cpKmu>`5i;d<9MIaWM?fzo?T9*UI(LT!iBaDNkd51a-)BnF&nG5X|@F zT}Lq$}=H32C4Ssu7p`~oF`gY z)`@t?XB*z0ZkhS8;2Z6ea5EeS5{x{YfSDw7S%Xta^j(O}>qzc-h?yf3VmRVh30U&m zBJm>DuI9my@v%l=m3w`Zudwe9uG+}=2>E^rM>MS4BKU=TpE7X&3b!=*#?&MSC3`(e zpQnKCGp0g=<(Ui*8rZUMrtL27S0UVehEL+A$up1~&#<2OW**NsrQt-21NT$&@hiY@ z3UEXD+7joBTv4#sj~N#B)%Opxv>o_#Jk(8JapE4tHc9+BQBwF?IQ3kSc@pb> z{g>5%JI)#W)SQTW)sx(~Gv)bD6DJ1D2yV`D-EpFa=U~QR-H(OiI4;u?#x%yi&8P-40`hTTNI zh^tN`EKAOdi~+Y^zyV|BKF?8nS+XCegg%N==)vg*et!nHs4(w@cs2?keHyuEgDIoEE_S>;ByN!Xs9% zhmK3TW-wEDdM4vV)`;&CF$lT}&^_?}WH-L4<#`0RGRu+6xuORtehlvkl-yC|Q9OEZ zTG1i-z-dKrQ;ik*d~Kr}tJE+(l1H3j!W(+y#Z0Ub-tc~ww`4NEz!`$X;_I3-?YFb} z)lr7KSBAq_L`&2}FHR64hI>TG?^QUQ7S*RnMhbyFFBu|RR71+K^C%ht@ew=`04#>A ze;N?`4Dx&O*FsZdLhdKSJrj`M+?)+q0NGzG-IGKbbVeh70b{WL6N68hSkJ*Rk-^`a z;wz>x_zLzYdAeEMN#%LkBHSQv$4+s-FC98%wONZZ#Pe}KwFYCJYj6{1wQDYV5FE#V zjN#1P`Tza*|4|8Grv2Yl{(q#tg@H!-->vKaNLl~Co(SF`f#UveVflZ(9{;cAU*IMc z|FX}=qOGzF$1lbba$JBhEG#$$N+-V<&Yt7S(o%szJtoG)Us-Bgh}~^N)ULt|N7UXg zX_Vr7aqz`e!Y##GOSi(Plm$kOWaT$|OXq8EY1Qbx3AD0GF7Oou1o=V&qpUcTAbHe) zq{gJ2+wKoudF7S2y$Ivv{NSopc$fraGv*IoIfyed4B$vmu9|;kP_tna%b>Tty4M(= zgTOD|CPR;t{HowGCWMy>DtZ|K#`uyG6x0q3edD5>D_5c!yu@DC0Su6lLV-c`4)`ob#YAh@?w*2f}D){y8*frE_rTPJY!m4CaiQ7bLt z#{w@+sXx}g5Z}j-@CO>+reT$aJU2}LCJnj9N_U-xk7&qmDG<-^P7|)i4@Hl0eGuba zoIiri@;eMSX^v?4O+eD9HyKqp>kSq{W`Y?~cICF)nYV=7g&9b)o8igJCb3hd`>=LD ztlf;8{8)55!42u(!#_gKs_9Q2>E>D#p~dew%w=~X3i^+eHWl9zxET(9l76Qi!|w!! zw1kgpzbC;RY5#&B;b{$3`sD3l9S2{Q7UD_#$S=++8%*0ugS;?q<`qXbWSC8`F^@aN ztrDx!zBTUuq?n`g!|$63@h*OZ{3GO#d@#I%?`r6 zJZ&nzhmj}ZSPvF0?G`QV30f8YNl+5UaIa}Q(tFo~8 zcu%Ik2Y%$^6%985lFv=37c2Z6joT@{BmKCp#rmfV{vH4R20Pnmw}Ha3&z><{-bs&)4qxSlyxf68s1kX}DO!h=x%> zhL7rW)@%2AaKvyQ$Ir?qtZ_U2EIh+oc0$X}JXv;@hh?W6Sa!-Y!zbFkS~q2jQh3## z9|k{+gOESQt^Cz{P?SghF<#m&{%E)Oqn-X1jm01F7Jsx`{L!A^@03pOU70rZg+s@; z6Q%wL;$=EJp-B}amr9T1pd~U*O8c#Gx<@sglHn&&Q>3BPT4_Ehj>&wy06g>aLk)id z$TWTe$t9#bG3;NEBGV)-4f?sXT-*#hY1l>*@hdqT1HMR0tz*%!y_r6rnC!z}y+0HR z$9%nEf2Xg*-`m^n?^xsO==DdVJ~4p=3;n^~K&LMj)-=j%F}>P)f>BM|84g54(_+40 zUw?0)FA$3P{Gs)}=srx4?v{a2kuMnX)rC4E;b5n)H8#*043~*< z!$mVsRL0Ta{y@lwyai&>@&Y=?ZYo`6rK>#JLKr7cV(fT9^yn8G2Yr6Uv` z_@EelVm2({h_5pcL$O9t2!X&nUr#L7Kd-#p-ybYfOqB&gUE%V9C`zZSC)U?1=CiN^ zK2>_)uSpeqAnNl+0=|xLU%#v*ly%sak!ew8rA#c+Rn_NTk2)SeiAG})f2cd)3r3>@ zj3m_Q>l=v1eC+{WS8x#3-M-!y57=EB=tbE@%0z{4xU!%Kb%h5I&CrrGee*<)j{@Q& zSzs_2#cQ4ka*^fhiiG>D!iN{)&=Qytx6ktl>99&Pi$494a7Q2-g`blGie%OWV?7Bu z7RFSOKD9j%jrI9s9X-N5H8AM!h>7ZHwK99H>!Yzi-|`r$f^i{(vGu;S{@#HABI@l$ zzPtPby)nie8tCmU6Gn+JOQs7~$@I3iT38necS&1g?etZ!uNE04q?$ovx-hU%J$(Uw z_4qa5w-CQ3{4iRa-iqG}{19&XYT>x((puq!ftYDFDX>}s?X_AM7Yk#C*khEbc88{i z@(y$bL#(bqkAH0tf+cGb)eI+UIoKKS1-iNd9Wh@?psc&h7wqzdA?Ok0o?;#K^@PJ~ z*t#kFfmlzNQFVnOQ|kggl+*w;0%Zneu~>RTGS?zR$@CdAOeD~a+6+Vx1!Ib;VuKXL zBEjx%;-{C1%rbu$XzCFQ%FbEl?_VRb%2YaWPn~(H@9&=XL#&Kv%R}I4a8U zS(R)icYgY19a;z&mD@RnP$aEQXv-=WIG>Gx!`j=fH^%Ke=js z?T{RR4gh1maLlip2cwZj+dPprzoVDR;ZotAub^?MFi{;2R+JOQ3YtK;X~N~GYr0yv z>RMMWsTY&$I%2`K{umXUmRXdmuOI5w-;FjeGV53ZOv zkkNh_5#&&nzb}mP4Tk)^35AQK!XY32``OG&b;asR6~+SLSU{0mFi$uaG&MEBxo8or zi(tBFLX;&~Bs>Z(5^353iCxf)0L{%JXTj2?ZS~D{t*y;V>lzwcMAiZ&FPhs4mUC!E z+zTSX&hCIP>V>18tkloLuSq!TB|G(G2L{-o33em^I|_mwZ2>#=V5c7Jq}4BNXk1da zxKVg1Ned(XzJQpk`!uZF;xfc3|N8v z?bMZMK&m9EYtGk1XnJTaGE-LLVHL+CVS-=3H+peW?-Y8!Dw@0!JNz;MxG5)~NRnboZd6_O%8& z1|q@O`o_VI00a#(MCCxqrCx|iC7IBV(?otf2LVgMv4vFmjgd$=BBmkDu3$I14|H?! z?f`uo@>kv={mO2LhC^a(eYk)9($G~%Fwh!~!~&hIftWBFaH4|^s)52_HY|dZ0s#X8 zK@$QY0R%!p2!yskAQ~VL4G@U*hNagnS=x3*(~`@@*aoG(+rq6-N1^W4*!tdp7%Tbp zbt1>eAlU;HA4P@oD0o@R6` zq=+wscrTRVy^y(qf!xqUZX`f%6hv;c1-V&>+$?NnB*@Z)#0U)0Q>R!16;Yb->Ohsj zqce#5h4u)dx1})l2HPY4$a+~V;=Cc`N#4Z??|{k+hYzZAw&XY}#wVzxY+4$|7CDPA zxnV@b#6&PP)=Y?tn4IDl=xYyjcA_Aa;*1U<2%%okziIB#7^)I6U~Gpm2J1_X8PTWr zVU(kFV^V%6B?pp{OTjM(wZR%3zX2#|3@{ ze54pasNm~a7zqRxv^EIW70XJOUoAYAw6t6iL=G{6#ZV5T*LJDx1D*3YmMeoqaafDK z7Ci)%d>Le~x9sY^UO7^kN)8tL`{6EW3iS`fAl=X_=#s9Wa89JDO8`X}9q8Z?sS8bi zy~v=S#X=?>&FsEI5Z^Sq7DEXNiC-28uf^yAVoiJt)M2DkoKHJj4car5nd+vj!5VU# zWBFS$k(-PFiGhx%2`$6X)PONj6GXgeAqGb5kJwC{Flc3Cfq}+C6OBazG!_NXShNL= zr3sCtshOeBSe!7L5ejCr$ZdikvhDZRp%6l`s2JCT;Y){X)orpzP|C~M6bTLrJdo*F z1m4mX)vc(zuHw46+BWmLnQ>cX+*TF0&5GM*$8B@sw(7X8MwpAB<`yxZFrem;GY7Nh zl$mtVL|!F8UKK=MwM7y)BNQ^csF^P05ifX-ZJyVBgMY2Rycc8o@}=!JKm%ZK+RPsY zpv@S7HlwhiPfQk5Gt-A5tthMJrX`R}lMyzP7Z@man&3qO@S-4i(UwIby&1{lZxxn* zy~<9j37#CyNXH3-Nx%&&Oc%{&M5!QrR?%k_a@36RFkDs5TJkX!>MxfADD+B;{UMB) zBE^{Wg&=%&{rwP5%5)PZNwwm<4+>N(CM0|J_xA=>{o^|+aWBX-T0yKFeHfu7{Iz28 zNF*ybNr>8`Pl{s@6>!mzu&r`vy9^^+jEqCbLUChf5X!n%G>n3FX(%;(eGeybRuirj zQ_mhtttcKs)ZbT*Lbb|8mFnE#sFtb0t5qROFxZL@0<59Ka9kjPWJ!^7?^Dlm(g>k3STMl`oG3YsJJkDjY3eFc9qREMC#r z(%Q6iNi8mtT9Rk^)rv96IQH_jqR@_P46O}D!Xb_yYtagAQD_OZmo_4%D(Z+)$riWC z`PZ^AN_~B;D6of3P}%un7f{|D?q-zeBg(DBtUjV#5?Fl%b4x0$uLOFaw9ET@2cqTF z#>F!~z^{@S96nsFIDZ(QMHta7^GBiq6!~x|He*?dep81DyF_;4&B1nyXxuPFEwy4e zw10SXI|ZxL-@7)r1_gvpS!(+7#!yFZn2RZL+)8dffM&6r=Q6uPiJC&_Ds?1NhVfs_ zk&7arayV}olGb21MlS;q$Wnpjtwz}84S_)pCMftiY3;GhAM25+S|wH8+!-j3gxlA~ z#XzkamFx92Ry1jKt1G@L0)@(YC_lG=wW4+u0amT=4#xuQYl~Yk&x#H7LnQotwW92t z0?T^&z-*!A)QUMHMS6Apb*k>9m?x~7nbOgPTOMM2sTCKFiu?mgG|o;-VwTCqH)0hG z8=$gQoSku73bkU^h>WLpAJJkZPvoldoI}-$i$@=(R?HibST4h=wSnT{=7#?(Vdsn4 zqe@qgiHk9Z87ULM zGh2bSh7}0viL+-zP2gk-#Y-@4XP0qKp=!ltqX@uZW~f^wlR8fxU6QsKMj0Tn-9n){ zd!{hU3SwxFAyL&RsM|TF4@A`1o}-M@Uq2cCHjftwnx3}DjHcn(2Y0$sgWRe%gzi>dLH&xP$FftQ>E z4_08gj9Wb1+HS2__D{#R82fy|W=xlolBpFf|8$H?!g2+Xv*iD6aklng#heQW!NHU` z7yr|Iw#q&Gl<3Yyj#Gjz7zHN*Yq_AjzBe2SsD;@0_QU8}Zl7A=EnlqQKNV;`rW0px z?kOoXak^hUig2hWwwiJ^E!2I+xdr5w>^TI)+^aWG-qfc#Ugi%%Cyl08Qvv@O`uSM> zv*z$vJ+SRJ*tdbO`WFlh3}Q+wS1N;HXlZOrW2e`)gw555RPPonc2luVPWY^k1?13R z=|C*L`pxAUD=0)N8sOr8t;mie)y#TAk~=BsL;@s@k8~|TC@zR#fBTp2-O(;#!98TyF)`irhH)&L(#QmE`D&=?xPLPsiQ zeo_{7Y1#|JCJpw&SlAo(L${o7OSGxCH_+|xAT8oE?Bho#_W6;fJ=nQf@N*lXe}an;ckZ#S$htFjRpJc)nn&>$Uc5@yOM*4W55=CzphZWc{<>GjP3#BhAe?3@?clMR!nNZ5btu5*s#{8?P3uR7w!yp1u0(k3blN(^fZWZzgBfP z5!X|`AlMymkGijv`z0;dJk*jE)rUhciit+C5!Vpx#(6rfFv)Djy;bX|>+QzjgIG_W zP5iau8{iIx?6|pO6&Ioe8r^{AP2%dqP)=+@`a$hw%(f&Z(?uIh52xGbh^t`bm2^fSuyTP%MJ_7#2NW zpm4Qv~QD*Z-v_SRPRTJuWIl=P#N?J>#RrXb>duMBooz>hNnx&(D&PW6~? ziG%dORwxb>VT)7lsA_9Gii>S*+bB`OeZh|MItk)JsfAER+cgl9;!wU&TjG64vNr-J zD0D-R6gaII7{pd24%9_3lCgWC>EjFqcjy4(LmC1Ng+VBwJ~n|PQs~6ATODuV!HHxH4%t|U2iYoY`tVJ$5; zO`>tIvLC%t`P!M~*d1KP4oYs=*@UF9ITr3O@4$)eU_fpemM_CZn2W={;eG0@vvwSe z4I7qwF!9y#sUy=QHm@g-OvD{iZr6{Pk~*IzQa!9?S*Tym1?AqBwP=08Xs9{=J4>Xt{Uhe}oaie@ z!L%)Y_Ry)^Ku<*0qi5)=s+5h4JXD^YO0ICX;cQm4o{PuBiDGKZADH@_S))naqB@t< zbr=o}M$G%1S&Pvud-~9_!s{d>!-=!X(A70_G{w-?N0k*V$7HY%heg+N7rJCfqKc*^ zzNV+PT81k?Makh@pp8ol!&SE4dgfZFJPvB_o-Z1bwx&jtMq^0Y)E+8!nwH8)ZCi1F z?gO;S5PFWFQcGMDp@BLUH{b~QVtbqLxB$}D5Vc}cM)9|q#KhIVNaDJOd zjM0B24hD`Ne(6v+mMm-#?j?a3&;QL>685p}Dov#?Kk$HNT_mQG^!2NGgRf#xTncJy zVwXB;11}gVhkWaLaD0%*GJAQ_pC=tU^eJTAgF*OVI4vA$Nm4ku(IA{lTgxlO%%wQ~ zXdQQ!7YfizTSH^q_d!YEfPegiG|nuF(oqHB#yXEUiV2cjkL+ z0&^~FTGA+Tm$fu4ZE0#-d0j)}!n)sfY?UYKT6uyF22Rk?#0feHaDq-joS@SdoLp?hQMpzeiOX(XzHHgj zmbS)*>*^LXwITxEAjq{AY65!mPK?E1O&zetC`BDpMQIj}v?wgb470QgM#8=RNH8ig z?T0nM?m%d1tH2{wj<&kXg$uV@aI?YH)fmt-Qi)PTd@D{#Pa1&%zfz_C{63W|dpCeJ(q1;K&QBs?pca7>a1C0F3UHXe7X=|M+M-ZAI*E{s5l1^=;4Z}q9PWgHqqHj!zY7MAk2?XFelyY}OFZ4V z0%3tiK$`W^L_>p}{K_+%Fv$>8K|};}Kq6t{8G;qC!XWc>As0C-{2|N#{4 zo~v*xBD^jtyxM}NrqV4d+Q}Hp4(Y}%1Yc!EMGXR}14?4t)ytN)q8Th`X==E<@j87z zPvl=cX<^K*Ht)(x=OapRV->4C~BH0Y6(!T3ZkgB1x2+A zXKYQJOm(bc5x`)a(mT8AXn*NV9g)mZRhyD$9Hw671SS-MS++GZR)HF| zxHBg_I84V=vck<%b)ingisQ4mRZUGs6O4KNk-j;zO4ru-!EmGx+Y!Oiwbg#&aj2mK zS75*$PrKGd7g+llB41*XZl;32b^c(C(?KjYggd|`B3u_Mi(x%}4Q|dF?ZU0D(uwrM zl{%5H>`D3Zw5v6Ik)|Et)3v)q#K@fK`G89G&SU@-fXtW{?jB>Lg zDslsIA$*}f8dFDx;TP(RUWHXg;o*b`cb$mBBogBz;l>Fd9IHSu37fh@7{J%#Y`Ab> zya#XIKaPqlZ2R)4-xXn=84)fxBYt6YiF7QW_I9fJ%3`+4aGnV3s<jh@X{%@p-Ng>Vo z0$de@=H=L0&<{i*M3{$B%Lq3tSQZyXw{YO{rpSR& z*Nz$1KrFyB*kU3P@jgYpM$i#ZrCFHdr?jB*$xuG*l+ZfpfZog}Oeh-JpJWn;-a{^h z2%BrpERnALF!$F!dfq6!^kG*Ll|)cu+^ChzYrA5Dbh=PHv{KD84O$Y6)@y|=a^Zz5 zrr{8~XIVUH5`(e5VEB5fbB3oyg_i_W;3AuNn<~$<+<|BvvWG5E^2Z}gvZXZyBPu~I zB81SErD!qFY+h)aVqC&*kCVJrqBDV&rQ#bSk&K4n*>%b1m0F*$~A^i{aJjXRi{ud%}*RlO(QU6QeD zluVfdr`?t+lFEXq#H&ln0{SWDK9024Aq6b%!CH-qqzIyFurEszbZ8>7W|UP540EZM zFC<^ATDY-ois3OG7I!jY%TdROIdNlCwvZUVDi;pL2^I`IU|kx)a71m>%EVg&nEQsL z2(l2kWsTZ|R?}=C50pS_9fRAuGPa?UIZCix#*pz!o2n}E-5T=uM|;9C$u|^h$C@@= zv<~P3p_nLbo22d7IyE}3-x9cl&SLHqoxNqU=oQx1npi~&8E+hk7!yq(5o4;%slc|} zv6OW-Sp3S$K@1xmCNhBt^cd8sjMCZ&UxWIp1qb_dFqo>IG@N< zc;;WXO_AN>kFuel?nB*}M&-cG#a+E=3S9!k681I7QZ!KzX>iHIw!(>*Q!qa5;po;y zvs~m#&|!PuAWLG@)*c=(k#rSe46*3AtmbnpcRlohNvPoX+_(5uEx z{8d~QjP|Q|5Tl$c7&nM)9w{i})PshxJk!Q>k!dShj?NcKIrbP?4ozix+}G6v@cAj8%r^p{{5dPf_b7riG9t4jnTj zjZR&auX2D?xFW%#&h#ZC}|i`JJRtSdB2MO! zZbe|M5o6Z`uzNFr$GmLoCBh9XI~FHkR2aP?r`O-t-svw!6UK5)aYZU(rpQ3ogR!B~ z7MXPDVOOVcV?m`GB9{(f=*Ln(Su`xX+Fn%|w_@6o&6R?(#FV+RS3fwRUM?exQL9<< zMK4?yil)42B%Bz~b|O-ksdJJQ8X)67tN9#xh7^T6Gc&J;cFr!bHeKYZ^6s|rw@bXH~inSDx)z@qxct1*lvn#cgTeu=!0yWT{C+%`qH^#SKWLXBVz7&XX!BMwjZdFBnQUY15dfYa7xUlw? zhs2?5(ckgtPc}8RtvNXQS8xm=-@K7COxnI3}Av5B@;dg|> z`!D*EpOhFE?!Q6m7e#7HAv>kP&eA#Uot2e=%8I#FvnngQ=2Xs^)6rF3S=BXnR!!$D ztf<$_?eNzGfUB{8V&)wG-1f@ZbLP&io+X?p;!aUWQ$CH8+CJ0h)66`S zSnt7|?X3#oj^IH-#0uCKUK1VQD8|p zB=@$F5T`H#%ti&2L7$3DqX|0T4ps0_ci_EBM zW@>1aAB~SN;$!q&43#*dQu=v$6SnHGQX{fp)X6;!9!nJy=^SZYDap^C?{xUYS9=n6 zRVW@JySZK>I*O-Y@pTMOEUcyw88O=&2aYQOgIdL>#lqSK^m0C=A-5CoDrkS1Iy6}(2SJ#SVO%U1 zZxt&eQ|J?6;{4&`unu^EY4lb7cqInP)rkV>6Yc@|K!wOuQ0X6W(LiYQs&}BDcWMy> zbW>Rem(@^gY0|}EzE|4h3?NHdxhXw>?o<1yQGxVfnw(`w2QMaklzVdNnBo<4V-{X% zv~$3%uv!VbfE~axvILlmx}^mZ;I%l!ucgbtGy2^66s~m;OPsLyxHxG1%fGbLe5{B= z4b*NHzysY2pALp6X78mq9*FDy1AWn=d0p5W3d|_N(5Dpd z?H0|eoHe7Uzgzc}2>8F+TOvhvy^0IIx(0+EhamQvvYAz7bBaDL%!`c!-bqH`ug&SO zOuW#%$b7-&G`^a4zBz+Fo`UnLj~mr58rpo$DEJ@B#|xkLjDq4+?`sp@zTv!$&3JuV zr@C0tI;)>Es=sJd2aJMMmRGrDS)^E+@YS^HZKhcQrV1+(s5XtNw8&?wC|%&L)hL+F zIIof9#a<_(sL}LGEc)g|To-7+IVuXHV6tYfU zqhLxrKLvNGBo9nbxId<7-Kwy6k`bnxz-k_W|B;b`g;zx!8|N7LdE8_< z7b8C^#BhGE4(})99O4J;Eb>)ZZF!|z1*DRb1TsyFz*SI0CdzEtVN2d=acB1+t&AOp z&bm{fDo{Nt4-A}0<%e-XEvE5!i>niU@h}KjVZ*bu6LDFkq$NUTbe1Z>L{v@$L8T*< zZr(Z$DL=^P48S_{pl+WwTtU|mvVyfkQCo+ib`3?nJQVf2A*kvFnhP7hkPPS% zDd%?HN{6B@7>c@ZC~DeJRLM}(^r5JWhN3Q3DAolua;k7yY!4^UmfwhyX%QsXzJ=9M z+H2qP(qd#)b)xhb6O>~ym6B}evP^aS71SuN#x;tw`qwf)KN^A=N&~U0Qsv;T{-eQy zP+=iwx^Hu7j7nH5A+xZduu+AhxI&M%TV0Qno!4Kq#=lajA1_c#b%&$7K}YrDM)jJw z$|6OXrdVOA+2!%j1;1A6>}t#FDxEkvjvCc_ZCO>AhlXHKe7Xm56}A_46m}K{3cC{O zal1;PJC3QIW+v>VHv30x_7*Mkp6YMOUi}s%Qhl=lm!;ox3t9`#R9`CfBzx8BH;w8Q zX2CzISDG9KY}T$-X7y)vOYtU!un1PFR89*t;+X1Hv4zuc_=uTKv&-$ z*U3JmMO-G8&Z|cCV`g0QdJ9rLzA@E&~4^24wMSkML{D;$ctYhxXI> zmMPqZI}70r#6$B^5FY!1@nK`@58!;1#z7hT-x&Nj+*C9wLwo{+Z~RU+mkaZa{0%JrGru!7 zqH^CrkiBoB{LxKJ_@sf{9emrkjpeJ$*t~_*Ti!M{8OE-+L4D{rzQLR)rc*|Y{b$IHVg4(b*l^1DEQIRde}aoQVBpI>2V*76L6-V`ZR2BFoq3Zf^pz6;7%~? z_M4gDW|Y?*#+hwE?E5l}cM;EVCbIV^>ZG~~<9vG)+Ja8|JePrq|jaOt%JPF%|Jur^Y*z**O%}>KPMq}Ss zVQk$C<2a4|U!(KuFy5fC?->|d_Q5ztWA8U$Z2qQHr*rP{Z8D*>PyWcb)y&)S3WUfo zs_*fAlE_D2F>W*SUIG#yr>ud8`n!W#^(b^R^vR_YFUh})?qg7^xBCu0i!WQ^+uUd& zpEV(JTMkgMipwW#r)$pv(~0k)UBUK)e-BCA55Ua9m&w+5VVpz&@BZ(=*nZGVH=V|k z2R9hTS%1FfJR@%><9p?Ys*`yIoy)=gBW3c)y&)WrfKBueNz&Aodg@+GEpIK5F?DQnRy36fQYVt(6^7?54=T>v~QSs zyN)B|skdMprm=<2muMWJvH1@$PQV6b;Ggik4Ei>B-0=s7cfVxj?L7gClfdO|eh0>O z8mEZc^NvjWMKka4+otdsqA$;?T)@1aIjKWHlV*rm!Y9wDGmO{hcj_H8NBG1|6QBf} zq%vgDH9;v-G3tLuoXE_k{{lyw{siL~ZCm~VDM1n5fghoF*D16pjj*71Kj`W39%sO# z2xHMRjP;WgN8d|?_io^O80q_Ng>j6==1;=dL*odIM{k3%fyOq{o!$y#KW%&Nb?^&t zpH|Tt`08b*cu+-qFQeV{kONKVUKl57Ja8Y312m4qNZ+>&wyiV{Z-=pu#u*x~JOo}Z z5f8h(#~HzvhhglYafHU^M_}xyafHSh8asBtI7s6(joqK4lg0@eTR#tDAC2QQw(q2q z#!(s@cENa*#t|A@zCb69Lo`m(c;JgL4$?S7Lmc~8(L9LHUG4}8Oc)=Fd7H!<`V=0mLTw_SOgo(1mEv!rvq+cv zz0bio2pmN35o5xi$<^*}gVRGawtm;)a8?%QPAfin#HhaCG|#V|ZyIl&X@BeM_cl!Z z55tXNgAhH7sYHah5pWPc;%?S(yN1td_;Wzg{tECdjr*&H<`U&s0GOfe7XhA+ALE>< z;XFWQXBFUL{QUSa&b5Fy;78hzYxqe(($eoU`0dpAuK_a50YLIh`}b`2AKL7{h5e`a zG2TCD_%{v5FI8bn0GT(*C+tkK5pW)U&G<3?9>8nyBTZPt4I17JXoYzg_Qy2-X+VZ$ zT;J99R{^bZejRqk_ZJQGmnru&K*l!3;_QSnXCuw27>4OeIw)bJ(^@7D11 z8h%Z~?`!yL4gaj6t5u~_sNuyLUaH|oH0;!Hord>o__T&U(eMu%I@?sd=V@4_VUvcd zHSE*y6B>R-!`&J_1IYS140ur6-vayveyp!QYMghuA^xFpxv(=#G2jIJNO!S@vou_& z;nf=60LU<(1pJuIey7d;pw0dToBb)+nZ~y?d`&~|3KeG+;53`vYG=gHv*8RJim2J|J;D$ z*vjX}fKLPNUo`Y-e>mk|1Kgxlp@d*P&H`>4;C#RhfHMHE!H<6y-EFY90oRj)-=y(d zfM>ka<@~!CKk~OlO4^eo^g zUo!ytefdd%{BC$L;B3J8fI9(?b{XOefF}UI2>1rzZopZ9PXHc9TKs1Ae!!U{D z{J#n~A8;?=B*3p}{MWVn8Ng!T_i6Vxw42|ce+ltDtKohPzXf;*_~!uM0Q@%KDZm4O zM**ML_!qSMB@Mp|cmnYe+1Y7_*1%(-y?uy0bd7n0{?UE{|mq~2!E9R z!2b$xJK(PYcL5#)+zt2}z`cOK1>6t#JHVF!-vB%W_+in!q!yH~$lH!u~nnIX4opFNOVM7!SB$cftNT#sv<9{S@pRBe;QI Q1bZR#13XNzx!(}~6JJIFNB{r; literal 0 HcmV?d00001 diff --git a/ApkPatcher/Utils/Scan.py b/ApkPatcher/Utils/Scan.py new file mode 100644 index 0000000..ccae387 --- /dev/null +++ b/ApkPatcher/Utils/Scan.py @@ -0,0 +1,118 @@ +from ..ANSI_COLORS import ANSI; C = ANSI() +from ..MODULES import IMPORT; M = IMPORT() + +from .Files_Check import FileCheck + +F = FileCheck(); F.Set_Path(); + +EX = f"{C.P}\n |\n ╰{C.CC}┈{C.OG}➢ {C.G}ApkPatcher {' '.join(M.sys.argv[1:])} {C.OG}" + + +# ---------------- Scan APK ---------------- +def Scan_Apk(apk_path, isFlutter, isPairip): + + print(f"\n{C.CC}{'_' * 61}\n") + + Package_Name = '' + + if M.os.name == 'posix': + # ---------------- Extract Package Name with AAPT ---------------- + Package_Name = M.subprocess.run( + ['aapt', 'dump', 'badging', apk_path], + capture_output=True, text=True + ).stdout.split("package: name='")[1].split("'")[0] + + if Package_Name: + print(f"\n{C.S} Package Name {C.E} {C.OG}➸❥ {C.P}'{C.G}{Package_Name}{C.P}' {C.G} ✔") + + + # ---------------- Extract Package Name with APKEditor ---------------- + if not Package_Name: + Package_Name = M.subprocess.run( + ["java", "-jar", F.APKEditor_Path, "info", "-package", "-i", apk_path], + capture_output=True, text=True + ).stdout.split('"')[1] + + print(f"\n{C.S} Package Name {C.E} {C.OG}➸❥ {C.P}'{C.G}{Package_Name}{C.P}' {C.G} ✔") + + + + # ---------------- Check Flutter / Pairip Protection ---------------- + isPairip_lib = isFlutter_lib = False + + with M.zipfile.ZipFile(apk_path, 'r') as zip_ref: + for item in zip_ref.infolist(): + if item.filename.startswith('lib/'): + if item.filename.endswith('libpairipcore.so'): + isPairip_lib = True + if item.filename.endswith('libflutter.so'): + isFlutter_lib = True + + + # ---------------- Check Flutter Protection ---------------- + if isFlutter_lib: + def check_java_installation(): + try: + M.subprocess.run(['radare2', '-v'], capture_output=True, text=True) + except (M.subprocess.CalledProcessError, FileNotFoundError): + if M.os.name == 'posix': + for pkg in ['radare2']: + try: + + result = M.subprocess.run(['pkg', 'list-installed'], capture_output=True, text=True) + + if pkg not in result.stdout: + print(f"\n{C.S} Installing {C.E} {C.OG}➸❥ {C.G}{pkg}...\n") + M.subprocess.check_call(['pkg', 'install', '-y', pkg]) + + M.os.system('cls' if M.os.name == 'nt' else 'clear') + + except (M.subprocess.CalledProcessError, Exception): + exit( + f"\n\n{C.ERROR} No Internet Connection. ✘\n" + f"\n{C.INFO} Internet Connection is Required to Installation {C.G} pkg install {pkg}\n" + ) + else: + exit( + f"\n\n{C.ERROR} Radare2 is not installed on Your System. ✘\n" + f"\n{C.INFO} Install Radare2 and Run Script Again in New CMD.\n" + f"\n{C.INFO} Verify Radare2 Installation {C.G} radare2 -v" + ) + + check_java_installation() + + FP = f"\n\n{C.S} Flutter Protection {C.E} {C.OG}➸❥ {C.P}'{C.G}libflutter.so{C.P}' {C.G} ✔" + + if not isFlutter: + exit( + f"{FP}\n\n" + f"\n{C.WARN} This is Flutter APK, So For SSL Bypass , Use {C.G} -f {C.B}Flag:\n\n" + f"\n{C.INFO} If APK is Flutter, Then Use Additional Flag: {C.OG}-f" + f"{EX}-f {C.Y}-c certificate.cert\n" + ) + + else: + if isFlutter: + print(FP) + + + # ---------------- Check Pairip Protection ---------------- + if isPairip_lib: + PP = f"\n\n{C.S} Pairip Protection {C.E} {C.OG}➸❥ {C.P}'{C.G}libpairipcore.so{C.P}' {C.G} ✔" + + if not isPairip: + exit( + f"{PP}\n\n" + f"\n{C.WARN} This is Pairip APK, So For SSL Bypass, Use {C.G} -p {C.C} / {C.G} -p -x {C.C}( ) {C.B}Flag:\n\n" + f"\n{C.INFO} If APK is Pairip, Then Use Additional Flag: {C.OG}-p {C.P}( Without Sign APK Use Only in VM / Multi_App )" + f"{EX}-p {C.Y}-c certificate.cert\n\n" + f"\n{C.INFO} If APK is Pairip, Then Hook CoreX & Use Additional Flag: {C.OG}-p -x {C.P}( Install Directly Only For [ arm64 ] )" + f"{EX}-p -x {C.Y}-c certificate.cert\n\n" + f"\n{C.INFO} Note Both Method Not Stable, May be APK Crash {C.P}( So Try Your Luck ) 😂\n" + ) + + else: + if isPairip: + print(PP) + + return Package_Name, isFlutter_lib, isPairip_lib \ No newline at end of file diff --git a/ApkPatcher/Utils/__init__.py b/ApkPatcher/Utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ApkPatcher/__init__.py b/ApkPatcher/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9cc1137 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Techno India + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 3519e66..29b91ae 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,232 @@ +

+ +

+ + + + # ApkPatcher + +

+ +

+ + +Installation Method +------- +**💢 Requirement PKG 💢** + +```bash +termux-setup-storage +pkg update -y +pkg upgrade -y +pkg install python -y +``` + +**👉🏻 To install ApkPatcher, Run only any one cmd from the Installation Method** + +**💢 PYPI ( Just Testing ) 💢** + + pip install ApkPatcherX + +[![PyPI](https://img.shields.io/badge/pypi-3776AB?style=for-the-badge&logo=python&logoColor=FFD43B)](https://pypi.org/project/ApkPatcherX) [![Version](https://img.shields.io/pypi/v/ApkPatcherX?label=&style=for-the-badge&color=FF8C00&labelColor=FF8C00)](https://pypi.org/project/ApkPatcherX) + + +**1st. Method** + +`💢 For Latest Commit ( From Main  Branch )  💢` + + pip install --force-reinstall https://github.com/TechnoIndian/ApkPatcher/archive/refs/heads/main.zip + +`OR` + + pip install --force-reinstall https://github.com/TechnoIndian/ApkPatcher/archive/refs/heads/main.tar.gz + +`OR` + + curl -Ls https://github.com/TechnoIndian/Tools/releases/download/Tools/ApkPatcher.sh | bash + +**2nd. Method** + + pkg install python git && pip install git+https://github.com/TechnoIndian/ApkPatcher.git + + +Uninstall ApkPatcher +----- + + pip uninstall ApkPatcherX + + +# Usage Example + + +ApkPatcher ( Input Mode ) +----- + +**Mode `-i` ➸ Smali Patcher ( Input Your APK Path )** + +`Default Patch is VPN & SSL Bypass` + + ApkPatcher -i YourApkPath.apk + +**Flag: `-a` ➸ Try with APKEditor ( Default APKTool )** + + ApkPatcher -i YourApkPath.apk -a + +**Flag: `-c` ➸ Embed Your Captural APK's Certificate** + +`With Your Certificate ( Input Your .pem / .crt / .cert Path )` + +`If you have already installed your certificate under CA Certificates in your device settings, then you don’t need to use the "-c YourCertificatePath.cert" parameter, because the user certificate is already trusted by network_security_config.xml` + + ApkPatcher -i YourApkPath.apk -c YourCertificatePath.cert + +`Multiple Certificate` + + ApkPatcher -i YourApkPath.apk -c /sdcard/HttpCanary/certs/HttpCanary.pem /sdcard/Download/Reqable/reqable-ca.crt /sdcard/Download/ProxyPinCA.crt + +**Flag: `-e` ➸ If using emulator on PC** + + ApkPatcher -i YourApkPath.apk -e + +**Flag: `-u` ➸ Keep UnSigned APK** + + ApkPatcher -i YourApkPath.apk -u + + +Smali Patcher ( Additional Flags ) +----- + +**Flag: `-f` / `-p` / `-p -x` ➸ Flutter & Pairip SSL Bypass** + +`For Flutter, Script By 🇮🇳 AbhiTheM0dder 🇮🇳` + + ApkPatcher -i YourApkPath.apk -f + +`For Pairip ( UnSigned APK, Use Only in VM / Multi App )` + + ApkPatcher -i YourApkPath.apk -p + +`CoreX HooK For Pairip ( Install Directly, Only For [ arm64 ] )` + + ApkPatcher -i YourApkPath.apk -p -x + +**Flag: `-D` ➸ Hook Android ID For One Device Login Bypass** + +`Input Your 16 Digit Android ID` + + ApkPatcher -i YourApkPath.apk -D 7e9f51f096bd5c83 + +**Flag: `-pkg` ➸ Spoof Package Detection ( Dex / Manifest / Res )** + + ApkPatcher -i YourApkPath.apk -pkg + +**Flag: `-P` ➸ Purchase / Paid / Price** + + ApkPatcher -i YourApkPath.apk -P + +**Flag: `-rmss` / `-rmusb` ➸ Bypass Screen / USB Restriction** + +`Bypass Screenshot Restriction` + + ApkPatcher -i YourApkPath.apk -rmss + +`Bypass USB Debugging` + + ApkPatcher -i YourApkPath.apk -rmusb + +**Flag: `-skip` ➸ Skip Patch (e.g., getAcceptedIssuers)** + + ApkPatcher -i YourApkPath.apk -skip getAcceptedIssuers + + +AES Patcher ( Additional Flags ) +----- + +**Flag: `-A` ➸ AES MT Logs Inject** + + ApkPatcher -i YourApkPath.apk -A + +`Do U Want Separate AES.smali Dex` + + ApkPatcher -i YourApkPath.apk -A -s + + +Spoof Patcher ( Additional Flags ) +----- + +**Flag: `-r` ➸ Random / Fake / Spoof Device Info** + + ApkPatcher -i YourApkPath.apk -r + +`Input Your 16 Digit Custom Android ID` + + ApkPatcher -i YourApkPath.apk -r -D 7e9f51f096bd5c83 + + +Ads Patcher ( Additional Flags ) +----- + +**Flag: `-rmads` ➸ Remove Ads** + + ApkPatcher -i YourApkPath.apk -rmads + + +TG Patcher ( Additional Flags ) +----- + +**Flag: `-t` ➸ Telegram / Plus Patch, Script By 🇮🇳 AbhiTheM0dder 🇮🇳** + + ApkPatcher -i YourApkPath.apk -t + + +Pine Hook ( Additional Flags ) +----- + +**Flag: `-pine -l` ➸ -pine -l ( Input Path of Xposed & LSP Module )** + +`Mutil Path Supported, But module path should not contain space or symbols.` + + ApkPatcher -i YourApkPath.apk -pine -l NoVPNDetect.apk just.trust.me.apk + + +ApkPatcher ( Merge Mode ) +----- + +**Mode `-m` ➸ Anti-Split ( Only Merge APK )** + +`Supported Extensions ( .apks / .apkm / .xapk )` + + ApkPatcher -m YourApkPath.apks + + +ApkPatcher ( Credits Mode ) +----- + +**Mode `-C` ➸ Credits** + + ApkPatcher -C + + +ApkPatcher Help +----- + + ApkPatcher -h + + +ApkPatcher Other Patch Flags +----- + + ApkPatcher -O + + +# NOTE + + +## 🇮🇳 Welcome By Techno India 🇮🇳 + +[![Telegram](https://img.shields.io/badge/TELEGRAM-CHANNEL-red?style=for-the-badge&logo=telegram)](https://t.me/rktechnoindians) +

+[![Telegram](https://img.shields.io/badge/TELEGRAM-OWNER-red?style=for-the-badge&logo=telegram)](https://t.me/RK_TECHNO_INDIA) +

\ No newline at end of file diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..e6adf3f --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.4 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..f173b5f --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,60 @@ +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "ApkPatcherX" +dynamic = ["version"] +authors = [ + { name = "RK_TECHNO_INDIA", email = "TechnoIndian786@gmail.com" } +] + +description = "Smali Patcher ( Bypass 𒁍 SSL & Flutter SSL, VPN, USB Debugging, Screen Restrict, One Device Login, Spoof Info & Package Detection, Ads, AES Logs Inject, TG Patch, Pine HooK )" + +license = { text = "MIT" } +readme = "README.md" + +requires-python = ">=3.12" + +dependencies = [ + "requests", + "r2pipe", + "asn1crypto", + "multiprocess" +] + +keywords = ["ApkPatcher"] + +classifiers = [ + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", +] + +[project.scripts] +ApkPatcher = "ApkPatcher.APK_PATCHER:RK_Techno_IND" +apkpatcher = "ApkPatcher.APK_PATCHER:RK_Techno_IND" + +[tool.setuptools] +include-package-data = true + +packages.find = {} + +package-data = { ApkPatcher = [ + "Utils/Files/AES.smali", + "Utils/Files/Hook.smali", + "Utils/Files/lib_Pairip_CoreX.so", + "Utils/Pine/config.json", + "Utils/Pine/libpine32", + "Utils/Pine/libpine64", + "Utils/Pine/loader.dex" +] } + + +[project.urls] +Homepage = "https://github.com/TechnoIndian/ApkPatcher" +Repository = "https://github.com/TechnoIndian/ApkPatcher.git" +Issues = "https://github.com/TechnoIndian/ApkPatcher/issues" + +[tool.setuptools.dynamic] +version = { file = "VERSION" } \ No newline at end of file

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