diff --git a/GameInfo.py b/GameInfo.py new file mode 100644 index 0000000..58298b4 --- /dev/null +++ b/GameInfo.py @@ -0,0 +1,30 @@ +from os import path +from json import loads, dump + + +async def compare() -> bool: + if not path.isfile("process_info.json"): + return False + + with open("process_info.json", 'r') as json_file: + current_info = loads(json_file.read()) + json_file.close() + + game_package_name = current_info["game_pkg"] + + if game_package_name == "": + return False + + elif path.exists("/storage/emulated/0/Android/data/{}".format(game_package_name)): + return True + + else: + print("[-] Package Not found. Please type again or press ctrl+c to exit.") + return False + + +async def get_data() -> None: + while not (await compare()): + pkg_name = input("[x] Enter package name: ") + process_info = {"game_pkg": pkg_name} + dump(process_info, open("process_info.json", "w")) diff --git a/PyCheats.py b/PyCheats.py index 2561e67..fc091bb 100644 --- a/PyCheats.py +++ b/PyCheats.py @@ -1,227 +1,278 @@ #! /usr/bin/env python -import sys -import os -import time -import InfoCollector -import subprocess + +""" + * date : 2022/12/29 + * Version : 0.2 + * author : Abdul Moez (abdulmoez123456789@gmail.com) + * Study : UnderGraduate in GCU Lahore, Pakistan + +""" + +from os import getcwd +from sys import exit, argv +from subprocess import call +from GameInfo import get_data +from os import getuid +from json import loads +from asyncio import sleep, get_event_loop try: - import androidMemoryTool - from rich import print from androidMemoryTool import AndroidMemoryTool + from art import tprint + except ImportError: - print("[*] Installing requirements") - os.system("pip3 install -r ./requirements.txt") - subprocess.call(['sudo', 'python3', *sys.argv]) - sys.exit(1) + from os import system + print("[+] Installing requirements") + system("pip3 install -r ./requirements.txt") + call(['sudo', 'python3', *argv]) + exit(0) + + +class Colors: + C_HEADER = '\033[95m' + C_BLUE = '\033[94m' + C_CYAN = '\033[96m' + C_GREEN = '\033[92m' + C_WARNING = '\033[93m' + C_FAIL = '\033[91m' + C_BOLD = '\033[1m' + + +class PyCheats(Colors): + _pkg = None + _PID = None + _libanogs_base = 0x0 + _libUE4_base = 0x0 + _is64 = None + _lib_libanogs = None + _MemTool_UTF8 = None + _MemTool_DWORD = None + _MemTool_FLOAT = None + _SPEED_MODE = True + _event_loop = None + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self._event_loop = get_event_loop() -clear = lambda: os.system("clear") + async def __async__get_ticks(self): + # initialization directory and decoration + await self.decoration() + await self.is_rooted_acquired() + # Grabbing ids and setting up libs + self._pkg = await self.grab_data() -class MemoryTools: - pkg = None - PID = None - data = None - libanogs_base = 0x0 - libUE4_base = 0x0 - is64 = None - lib_libanogs = None + """ Checking if the game running and and getting pid """ + if await self.is_game_running(): + print(self.C_GREEN + "[+] Game is Running.\n") + else: + print(self.C_FAIL + "[+] Game is not running. Try restarting game.") + exit(1) - def __int__(self, **kwargs): - super().__init__(**kwargs) - self.is_rooted_acquired() - self.decoration() + """Initializing Android Memory Tool for different data types and maps""" + self._MemTool_UTF8 = AndroidMemoryTool(PKG=self._pkg, TYPE=AndroidMemoryTool.DataTypes.UTF_8, + SPEED_MODE=self._SPEED_MODE, WORKERS=55, + pMAP=AndroidMemoryTool.PMAP(ALL=False, CODE_APP=True, C_DATA=True)) - # Grabbing ids - self.pkg, self.data, self.is64 = self.is64_version() + self._MemTool_DWORD = AndroidMemoryTool(PKG=self._pkg, TYPE=AndroidMemoryTool.DataTypes.DWORD, + SPEED_MODE=self._SPEED_MODE, WORKERS=55, + pMAP=AndroidMemoryTool.PMAP(ALL=False, CODE_APP=True)) - # checking is game running and getting pid - if self.is_game_running(): - print("[*] Game Running.") - else: - print("[*] Game PID not found.") - sys.exit() + self._MemTool_FLOAT = AndroidMemoryTool(PKG=self._pkg, TYPE=AndroidMemoryTool.DataTypes.FLOAT, + SPEED_MODE=self._SPEED_MODE, WORKERS=55, + pMAP=AndroidMemoryTool.PMAP(ALL=False, CODE_APP=True)) + + """Module Imported at runtime""" + # self.change_lib(self.data) + self._libanogs_base = AndroidMemoryTool.get_module_base_address(self._PID, "libanogs.so") + self._libUE4_base = AndroidMemoryTool.get_module_base_address(self._PID, "libUE4.so") - """Getting Base address""" - self.libanogs_base = androidMemoryTool.get_module_base_address(self.PID, "libanogs.so") - self.libUE4_base = androidMemoryTool.get_module_base_address(self.PID, "libUE4.so") + # calling logoBypass and getting base address + print(self.C_GREEN + "[*] Security dispatching started") - print("[*] Security dispatching Started") - self.logo_bypass_utf8() - self.logo_bypass_offset() - self.logo_bypass_dword() - self.logo_bypass_float() - print("[*] Security dispatching Completed") + await self.logo_bypass_utf8() + await self.logo_bypass_offset() + await self.logo_bypass_dword() + await self.logo_bypass_float() + print(self.C_GREEN + "[*] Security dispatching Completed") - time.sleep(2) + await self.decoration() + await self.lobby_work() - self.decoration() - self.lobby_work() + """-------------------------------------Information Functions --------------------------------------------""" @staticmethod - def is_rooted_acquired(): - if os.getuid() != 0: - print("[*] Root Required") - print("[*] Rebooting script as root") - time.sleep(2) - subprocess.call(['sudo', 'python3', *sys.argv]) - sys.exit(1) + async def upack_information() -> str: + with open("process_info.json", 'r') as json_file: + current_info = loads(json_file.read()) + json_file.close() + + game_package_name = current_info["game_pkg"] + + return game_package_name + + async def is_rooted_acquired(self): + if getuid() != 0: + print(self.C_WARNING + "[-] Root Required") + print(self.C_GREEN + "[+] Rebooting script as root") + await sleep(2) + call(['sudo', 'python3', *argv]) + exit(1) else: - print("Root Acquired") + print(self.C_GREEN + "[+] Root Acquired") - @staticmethod - def upack_information() -> tuple[str, str]: - with open("gameInfo.txt", 'r') as f: - d = f.read() - f.close() - file_data = d.split() - pkg_name = file_data[0] - data_path = file_data[1] - return pkg_name, data_path + async def decoration(self): + call("clear") + print(self.C_HEADER) + tprint(text="PyCheats", chr_ignore=True) + print(self.C_CYAN + self.C_BOLD + "\nBy github.com/Anonym0usWork1221\n") - @staticmethod - def decoration(): - # clear() - print("[*] Welcome to Example Script by Anonym0usWork1221\nhttps://github.com/Anonym0usWork1221\n\n") + async def grab_data(self) -> str: + await get_data() + return await self.upack_information() - def is64_version(self) -> tuple[str, str, bool]: - print("\n[*] 1. 32 bits") - print("[*] 2. 64 bits") - while True: - try: - bits_type = int(input("[*] Choose pubg bits: ")) - break - except Exception as e: - print(e) - if bits_type == 1: - while not InfoCollector.compare(): - pkg_name = input("Enter package name: ") - data = input("Enter Libs Path: ") - - with open("gameInfo.txt", 'w') as gameInfoWriter: - gameInfoWriter.write(f"{pkg_name}\n{data}") - gameInfoWriter.close() - - pkg_name, data = self.upack_information() - return pkg_name, data, False - else: - InfoCollector.get_data() - pkg_name, data = self.upack_information() - return pkg_name, data, True + async def is_game_running(self) -> bool: + self._PID = AndroidMemoryTool.get_pid(self._pkg) - def is_game_running(self) -> bool: - self.PID = androidMemoryTool.get_pid(self.pkg) - if not self.PID == "": + if not self._PID == "": return True else: return False - def logo_bypass_utf8(self) -> None: + """-------------------------------------Information Functions Ending--------------------------------------------""" + """-------------------------------------AntiCheat Patching --------------------------------------------""" + + async def logo_bypass_utf8(self) -> None: vals_bytes = ["libUE4.so", "libBugly.so", "libanogs.so", "l_report", "get_report", "tss_sdk_rcv_anti_data", "AreaData.dat", - "AntiCheatData", "Reports", "hack", "ban", "cheat", "qq.com", "packets.com", + "AntiCheatData", "Reports", "hack", "ban", "cheat", "qq.com", "tencent.com", "packets.com", + "ptrace", "ig.com", "igamecj.com", "amsoveasea.com", "gcloudcs.com", "tss_get_report_data", + "tss_del_report_data", "tss_enable_get_report_data", "TssSDKGetReportData", "TssSDKDelReportData", + "tss_sdk_ischeatpacket", "tss_sdk_decryptpacket", "Java_com_tencent_tp_TssSdk_forceExit", "killProcess"] - androidMemoryTool.SettingUpTool().init_setup(PKG=self.pkg, TYPE=androidMemoryTool.DataTypes.UTF_8, - SPEED_MODE=True, WORKERS=100) + replaced_value = int(0) - # set True to maps you want to use - androidMemoryTool.InitMemoryTool().init_tool(pMAP=androidMemoryTool.PMAP(ALL=False, CODE_APP=True)) - - replaced_value = 0 try: for value in vals_bytes: - replaced_value += AndroidMemoryTool.read_write_value(str(value), "AbdulMoez") + replaced_value += self._MemTool_UTF8.read_write_value(str(value), "King") except Exception as e: - print(e) + print(self.C_WARNING + "[-] Exception occurred: ", e) - print("[*] Logo_bypass_utf8: " + str(replaced_value)) + print(self.C_GREEN + "[+] LBU-8: %d" % replaced_value) - def logo_bypass_offset(self): + async def logo_bypass_offset(self): offsets_libanogs_DWORD = [0x000, 0xB80, 0xBB0, 0x59A4B0, 0x15D0, 0xAA980, 0x2F, 0x32B4, 0x50D63] offsets_libUE4_DWORD = [0x7E2A78, 0x7E2A80, 0x7E2A88] + replaced_value = int(0) + for offset in offsets_libanogs_DWORD: - androidMemoryTool.write_lib_offsets_DWORD(self.PID, self.libanogs_base, offset, 0) + ret_values = self._MemTool_DWORD.write_lib(self._libanogs_base, offset, 1) + if ret_values: + replaced_value += 1 for offset_Ue in offsets_libUE4_DWORD: - androidMemoryTool.write_lib_offsets_DWORD(self.PID, self.libUE4_base, offset_Ue, 0) + ret_values = self._MemTool_DWORD.write_lib(self._libUE4_base, offset_Ue, 1) + if ret_values: + replaced_value += 1 - print("[*] Logo_bypass_offset: Completed") + print(self.C_GREEN + "[+] LBO: %d" % replaced_value) - def logo_bypass_dword(self) -> None: + async def logo_bypass_dword(self) -> None: vals_dword = [118334, 856896, 123010, 123179, 123274, 1026] - androidMemoryTool.SettingUpTool().init_setup(PKG=self.pkg, TYPE=androidMemoryTool.DataTypes.DWORD, - SPEED_MODE=True, WORKERS=100) - - androidMemoryTool.InitMemoryTool().init_tool(pMAP=androidMemoryTool.PMAP(ALL=False, CODE_APP=True)) - replaced_value = 0 + replaced_value = int(0) try: for value in vals_dword: - replaced_value += AndroidMemoryTool.read_write_value(value, 1) + replaced_value += self._MemTool_DWORD.read_write_value(value, 1) except Exception as e: - print(e) + print(self.C_WARNING + "[-] Exception occurred: ", e) - print("[*] logo_bypass_dword: " + str(replaced_value)) + print(self.C_GREEN + "[+] LB-DSW: %d" % replaced_value) - def logo_bypass_float(self) -> None: - vals_float = [9.21970312e-41, 13073.3740234375, 2.2958874e-41] - androidMemoryTool.SettingUpTool().init_setup(PKG=self.pkg, TYPE=androidMemoryTool.DataTypes.FLOAT, - SPEED_MODE=False, WORKERS=55) + async def logo_bypass_float(self) -> None: + vals_float = [9.21970312e-41, 13073.3740234375] - androidMemoryTool.InitMemoryTool().init_tool(pMAP=androidMemoryTool.PMAP(CODE_APP=True, ALL=False)) - - replaced_value = 0 + replaced_value = int(0) try: for value in vals_float: - replaced_value += AndroidMemoryTool.read_write_value(value, 0.1) + replaced_value += self._MemTool_FLOAT.read_write_value(value, 0.1) except Exception as e: - print(e) + print(self.C_WARNING + "[-] Exception occurred: ", e) - print("[*] logo_bypass_float: " + str(replaced_value)) + print(self.C_GREEN + "[+] LBF: %d" % replaced_value) - def lobby_bypass(self): + async def lobby_bypass(self): offsets_libUE4_DWORD = [0x1D40C98, 0x1C57DEC, 0x1DBA718, 0x1d40c84, 0x1d1ddd4, 0x1c55c10, 0x1dba704, 0x1d40d48] + replaced_value = int(0) for offset_Ue in offsets_libUE4_DWORD: - androidMemoryTool.write_lib_offsets_FLOAT(self.PID, self.libUE4_base, offset_Ue, 0.1) + ret_values = self._MemTool_FLOAT.write_lib(self._libUE4_base, offset_Ue, 0.1) + if ret_values: + replaced_value += 1 - print("[*] lobby_bypass: 8") + print(self.C_GREEN + "[+] LBO: %d" % replaced_value) - def logo_arm_bypass(self) -> None: - # Based on arm instructions (not available yet) - pass + """-------------------------------------AntiCheat Patching Ending--------------------------------------------""" + """-------------------------------------Basic Function --------------------------------------------""" - def no_recoil(self): + async def no_recoil(self): """LibBase + offset = value -> need to change""" - androidMemoryTool.write_lib_offsets_FLOAT(self.PID, self.libUE4_base, 0x1e85c74, 4.55) + recoil_offset_float = 0x1e85c74 + self._MemTool_FLOAT.write_lib(self._libUE4_base, recoil_offset_float, 4.55) - def speed_run(self): + async def speed_run(self): """LibBase + offset = value -> need to change""" - androidMemoryTool.write_lib_offsets_FLOAT(self.PID, self.libUE4_base, 0x27a5c80, 8.55015) - androidMemoryTool.write_lib_offsets_DWORD(self.PID, self.libUE4_base, 0x8a4fd48, 400) + speed_offset_float = 0x27a5c80 + speed_offset_dword = 0x8a4fd48 + self._MemTool_FLOAT.write_lib(self._libUE4_base, speed_offset_float, 8.55015) + self._MemTool_DWORD.write_lib(self._libUE4_base, speed_offset_dword, 400) + + """-------------------------------------Basic Function Ending--------------------------------------------""" + """-------------------------------------Dumping Functions--------------------------------------------""" + + async def dump_map(self): + is_dumped = self._MemTool_FLOAT.dump_maps(path="./") + if is_dumped: + print(self.C_GREEN + "[+] Map dumped of process %s is found in %s" % (self._PID, getcwd())) + else: + print(self.C_FAIL + "[-] Unable to dump maps") + + """-------------------------------------Dumping Functions Ending--------------------------------------------""" + """-------------------------------------Main Menu Function --------------------------------------------""" - def lobby_work(self) -> None: + async def lobby_work(self) -> None: while True: - print("[*] 1. Lobby Anti-Cheat System") - print("[*] 2. No Recoil") - print("[*] 3. Speed Run") - print("[*] 4. Exit and release memory") - ans = input(">>>> ") + print(self.C_BLUE + "[+] 1. Lobby Anti-Cheat System") + print(self.C_BLUE + "[+] 2. No Recoil") + print(self.C_BLUE + "[+] 3. Speed Run") + print(self.C_BLUE + "[+] 4. Dump Maps") + print(self.C_BLUE + "[+] 5. Exit and release memory") + ans = input(self.C_BOLD + self.C_CYAN + ">>>> ") ans = int(ans) if ans == 1: - self.lobby_bypass() + await self.lobby_bypass() elif ans == 2: - self.no_recoil() + await self.no_recoil() elif ans == 3: - self.speed_run() + await self.speed_run() elif ans == 4: - sys.exit(0) + await self.dump_map() + elif ans == 5: + exit(0) else: - print("[*] Choose given options") - time.sleep(2) + print(self.C_FAIL + "[+] Choose given options") + await sleep(2) + + """-------------------------------------Main Menu Function Ending--------------------------------------------""" + """-------------------------------------Main Function --------------------------------------------""" + + def get_ticks(self): + self._event_loop.run_until_complete(self.__async__get_ticks()) if __name__ == '__main__': - MemoryTools().__int__() + py_cheats_object = PyCheats() + py_cheats_object.get_ticks() diff --git a/README.md b/README.md index 80c09b8..16c72f7 100644 --- a/README.md +++ b/README.md @@ -1,444 +1,124 @@ -Android-Py-Cheats-Script -==== -[![GitHub stars](https://img.shields.io/github/stars/Anonym0usWork1221/Android-Py-Cheats-Script.svg)](https://github.com/Anonym0usWork1221/Android-Py-Cheats-Script/stargazers) -[![GitHub forks](https://img.shields.io/github/forks/Anonym0usWork1221/Android-Py-Cheats-Script.svg)](https://github.com/Anonym0usWork1221/Android-Py-Cheats-Script/network/members) -[![GitHub issues](https://img.shields.io/github/issues/Anonym0usWork1221/Android-Py-Cheats-Script.svg)](https://github.com/Anonym0usWork1221/Android-Py-Cheats-Script/issues) -[![GitHub watchers](https://img.shields.io/github/watchers/Anonym0usWork1221/Android-Py-Cheats-Script.svg)](https://github.com/Anonym0usWork1221/Android-Py-Cheats-Script/watchers) -[![Python](https://img.shields.io/badge/language-Python%203-blue.svg)](https://www.python.org) -[![GPT_LICENSE](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/) - ------------ - - -**This is am example of using androidMemoryTool on android -This script is generated for game pubg mobile. -Can be use in Fortnite and other games for cheats** - -If you find any bug or not working function you can contact me. - - * Author : Abdul Moez - * Study : UnderGraduate in GCU Lahore, Pakistan - * Repo :(https://github.com/Anonym0usWork1221/Android-Py-Cheats-Script) - - MIT License - - Copyright (c) 2022 AbdulMoez - - -Requirments ------------ -* Link to repo android memory tool (https://github.com/Anonym0usWork1221/android-memorytool) -* Install the requirements.txt file ```pip install -r requirements.txt``` - -* Needed python version 3.x - -* Android Requirments -> Rooted Device Needed - -* Requirements and root automatically acquire just start script - -* ``` python3 PyCheats.py ``` - -Documentation, Installation ----------------------------------------- -* **__Installation__** - **Simply run PyCheats.py it will automatically install requirements** - -* **__Documentation__** - 1. First of I imported the required packages. The module **InfoCollector** is custom module - the try except blocks are used inorder to detect that these modules are installed if not - then install then first. - - ```py - import sys - import os - import time - import InfoCollector - import subprocess - - try: - import androidMemoryTool - from rich import print - from androidMemoryTool import AndroidMemoryTool - except ImportError: - print("[*] Installing requirements") - os.system("pip3 install -r ./requirements.txt") - subprocess.call(['sudo', 'python3', *sys.argv]) - sys.exit(1) - ``` - - 2. Simply added lambda function for clearing the terminal - - ```py - clear = lambda: os.system("clear") - ``` - - 3. Create class and initialize required variables - - ```py - class MemoryTools: - pkg = None - PID = None - data = None - libanogs_base = 0x0 - libUE4_base = 0x0 - is64 = None - lib_libanogs = None - ``` - - 4. Set up init function and run different functions on startup of that function. - - ```py - def __int__(self, **kwargs): - super().__init__(**kwargs) - self.is_rooted_acquired() - self.decoration() - - # Grabbing ids - self.pkg, self.data, self.is64 = self.is64_version() - - # checking is game running and getting pid - if self.is_game_running(): - print("[*] Game Running.") - else: - print("[*] Game PID not found.") - sys.exit() - - """Getting Base address""" - self.libanogs_base = androidMemoryTool.get_module_base_address(self.PID, "libanogs.so") - self.libUE4_base = androidMemoryTool.get_module_base_address(self.PID, "libUE4.so") - - print("[*] Security dispatching Started") - self.logo_bypass_utf8() - self.logo_bypass_offset() - self.logo_bypass_dword() - self.logo_bypass_float() - print("[*] Security dispatching Completed") - - time.sleep(2) - - self.decoration() - self.lobby_work() - ``` - - 5. Function **is_rooted_acquired** check if the script is running as root or not - - ```py - @staticmethod - def is_rooted_acquired(): - if os.getuid() != 0: - print("[*] Root Required") - print("[*] Rebooting script as root") - time.sleep(2) - subprocess.call(['sudo', 'python3', *sys.argv]) - sys.exit(1) - else: - print("Root Acquired") - ``` - - 6. Function **upack_information** checking information stored in gameInfo.txt file - Like __package name__ and __libs path__ - - ```py - @staticmethod - def upack_information() -> tuple[str, str]: - with open("gameInfo.txt", 'r') as f: - d = f.read() - f.close() - file_data = d.split() - pkg_name = file_data[0] - data_path = file_data[1] - return pkg_name, data_path - ``` - - 7. Function **decoration** is used for displaying name text for styling - - ```py - @staticmethod - def decoration(): - clear() - print("[*] Welcome to Example Script by Anonym0usWork1221\nhttps://github.com/Anonym0usWork1221\n\n") - ``` - - 8. Function **is64_version** is asking for package name and version from user and - storing in **gameInfo.txt** file for latter use. - - ```py - def is64_version(self) -> tuple[str, str, bool]: - print("\n[*] 1. 32 bits") - print("[*] 2. 64 bits") - while True: - try: - bits_type = int(input("[*] Choose pubg bits: ")) - break - except Exception as e: - print(e) - if bits_type == 1: - while not InfoCollector.compare(): - pkg_name = input("Enter package name: ") - data = input("Enter Libs Path: ") - - with open("gameInfo.txt", 'w') as gameInfoWriter: - gameInfoWriter.write(f"{pkg_name}\n{data}") - gameInfoWriter.close() - - pkg_name, data = self.upack_information() - return pkg_name, data, False - else: - InfoCollector.get_data() - pkg_name, data = self.upack_information() - return pkg_name, data, True - ``` - - 9. Function **is_game_running** is checking that if game running and setting up **PID** variable - - ```py - def is_game_running(self) -> bool: - self.PID = androidMemoryTool.get_pid(self.pkg) - if not self.PID == "": - return True - else: - return False - ``` - - 10. Function **logo_bypass_utf8** is searching utf-8 strings and changing them using AndroidMemoryTool - ```py - androidMemoryTool.SettingUpTool().init_setup(PKG=self.pkg, TYPE=androidMemoryTool.DataTypes.UTF_8, - SPEED_MODE=True, WORKERS=100) - ``` - Here we are setting up the androidMemoryTool by giving **package name** (provided by user), **DataType** - (UTF_8 in this case), **SPEED_MODE** (To use speed algorithms in speeding up Search), and **WORKERS** (number of works used to speed up) - - ```py - androidMemoryTool.InitMemoryTool().init_tool(pMAP=androidMemoryTool.PMAP(ALL=False, CODE_APP=True)) - ``` - Here we are initializing the androidMemoryTool by giving maps range we want to use. - - ```py - def logo_bypass_utf8(self) -> None: - vals_bytes = ["libUE4.so", "libBugly.so", "libanogs.so", "l_report", "get_report", "tss_sdk_rcv_anti_data", - "AreaData.dat", - "AntiCheatData", "Reports", "hack", "ban", "cheat", "qq.com", "packets.com", - "killProcess"] - - androidMemoryTool.SettingUpTool().init_setup(PKG=self.pkg, TYPE=androidMemoryTool.DataTypes.UTF_8, - SPEED_MODE=True, WORKERS=100) - - # set True to maps you want to use - androidMemoryTool.InitMemoryTool().init_tool(pMAP=androidMemoryTool.PMAP(ALL=False, CODE_APP=True)) - - replaced_value = 0 - try: - for value in vals_bytes: - replaced_value += AndroidMemoryTool.read_write_value(str(value), "AbdulMoez") - except Exception as e: - print(e) - - print("[*] Logo_bypass_utf8: " + str(replaced_value)) - ``` - - 11. Function **logo_bypass_offset** is writing the value of offsets directly - - ```py - def logo_bypass_offset(self): - offsets_libanogs_DWORD = [0x000, 0xB80, 0xBB0, 0x59A4B0, 0x15D0, 0xAA980, 0x2F, 0x32B4, 0x50D63] - offsets_libUE4_DWORD = [0x7E2A78, 0x7E2A80, 0x7E2A88] - - for offset in offsets_libanogs_DWORD: - androidMemoryTool.write_lib_offsets_DWORD(self.PID, self.libanogs_base, offset, 0) - - for offset_Ue in offsets_libUE4_DWORD: - androidMemoryTool.write_lib_offsets_DWORD(self.PID, self.libUE4_base, offset_Ue, 0) - print("[*] Logo_bypass_offset: Completed") - ``` - - 12. Function **Below** have same work in creating anti cheat system. - - ```py - def logo_bypass_dword(self) -> None: - vals_dword = [118334, 856896, 123010, 123179, 123274, 1026] - androidMemoryTool.SettingUpTool().init_setup(PKG=self.pkg, TYPE=androidMemoryTool.DataTypes.DWORD, - SPEED_MODE=True, WORKERS=100) - - androidMemoryTool.InitMemoryTool().init_tool(pMAP=androidMemoryTool.PMAP(ALL=False, CODE_APP=True)) - - replaced_value = 0 - try: - for value in vals_dword: - replaced_value += AndroidMemoryTool.read_write_value(value, 1) - except Exception as e: - print(e) - - print("[*] logo_bypass_dword: " + str(replaced_value)) - - def logo_bypass_float(self) -> None: - vals_float = [9.21970312e-41, 13073.3740234375, 2.2958874e-41] - androidMemoryTool.SettingUpTool().init_setup(PKG=self.pkg, TYPE=androidMemoryTool.DataTypes.FLOAT, - SPEED_MODE=False, WORKERS=55) - - androidMemoryTool.InitMemoryTool().init_tool(pMAP=androidMemoryTool.PMAP(CODE_APP=True, ALL=False)) - - replaced_value = 0 - try: - for value in vals_float: - replaced_value += AndroidMemoryTool.read_write_value(value, 0.1) - except Exception as e: - print(e) - - print("[*] logo_bypass_float: " + str(replaced_value)) - - def lobby_bypass(self): - offsets_libUE4_DWORD = [0x1D40C98, 0x1C57DEC, 0x1DBA718, 0x1d40c84, 0x1d1ddd4, 0x1c55c10, 0x1dba704, 0x1d40d48] - - for offset_Ue in offsets_libUE4_DWORD: - androidMemoryTool.write_lib_offsets_FLOAT(self.PID, self.libUE4_base, offset_Ue, 0.1) - - print("[*] lobby_bypass: 8") - - def logo_arm_bypass(self) -> None: - # Based on arm instructions (not available yet) - pass - ``` - - 13. Functions **no_recoil, speed_run** are sample function (address not working) used for - No recoil address writing, and speed runing of player. - - ```py - def no_recoil(self): - """LibBase + offset = value -> need to change""" - androidMemoryTool.write_lib_offsets_FLOAT(self.PID, self.libUE4_base, 0x1e85c74, 4.55) - - def speed_run(self): - """LibBase + offset = value -> need to change""" - androidMemoryTool.write_lib_offsets_FLOAT(self.PID, self.libUE4_base, 0x27a5c80, 8.55015) - androidMemoryTool.write_lib_offsets_DWORD(self.PID, self.libUE4_base, 0x8a4fd48, 400) - ``` - - 14. Function **lobby_work** is used in controlling functions in loop - - ```py - def lobby_work(self) -> None: - while True: - print("[*] 1. Lobby Anti-Cheat System") - print("[*] 2. No Recoil") - print("[*] 3. Speed Run") - print("[*] 4. Exit and release memory") - ans = input(">>>> ") - ans = int(ans) - if ans == 1: - self.lobby_bypass() - elif ans == 2: - self.no_recoil() - elif ans == 3: - self.speed_run() - elif ans == 4: - sys.exit(0) - else: - print("[*] Choose given options") - time.sleep(2) - ``` - - 15. Executing **MemoryTools** - - ```py - if __name__ == '__main__': - MemoryTools().__int__() - ``` - - 15. Other File **InfoCollector** is used for reading and writing __gameInfo.txt__ file - - ```py - import os - - def compare() -> bool: - with open("gameInfo.txt", 'r') as f: - data = f.read() - f.close() - all = data.split() - if data == "": - return False - if os.path.exists("/storage/emulated/0/Android/data/{}".format(all[0])): - if os.path.exists(all[1]): - return True - else: - return False - else: - return False - - - def get_data() -> None: - while not compare(): - pkg = input("[x] Enter package name: ") - data = input("[x] Enter data path: ") - with open("gameInfo.txt", 'w') as f: - f.write(f"{pkg}\n{data}") - f.close() - - ``` - -# Video Demonstration -**Video Demonstration for using AndroidMemoryTool** - -[![usage](https://img.youtube.com/vi/vebE1Rf1ogo/0.jpg)](https://www.youtube.com/watch?v=vebE1Rf1ogo) - - -Supported Data Types -------------------- -All data types are signed. - -| **Range** | **Name** | **Ctype** | -| ------- | -------- | ------------| -| -2,147,483,648 to 2,147,483,647 | DWORD | signed int -| 3.4E +/- 38 (7 digits) | FLOAT | float -| 1.7E +/- 308 (15 digits) | DOUBLE | double -| -32,768 to 32,767 | WORD | signed short int -| -128 to 127 | BYTE | signed char -| -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | QWORD | signed long long -| -2,147,483,648 to 2,147,483,647 | XOR | signed long -| Random | UTF-8 | Text -| Random | UTF-16LE | Text - - -* Supported Maps Ranges - --------------------- -| **Short Name** | **Name** | **Description** | -| ------- | -------- | ------------| -| ALL | Whole Memory | Whole Memory of current process (slow) -| CA | C++ alloc | RAM c++ Allocated memory -| A | Anonymous | Range with r-w access only -| Xa | Code App | shared libs memory (dangerous) -|Jh|Java Heap| Java heap -|Ch|C++ Heap| Heap memory of cpp -|Cd|C++ .data| .Data Memory -|Cb|C++ .bss| .bss section memory -|J|Java| Java memory section -|S|Stack| Stack Memory -|As|Ashmen| Ashmen Memory -|V|Video| Video memory range -|B_Bad|Bad| Bad Memory (dangerous) -|Xs|Code system| Code system memory (dangerous) - - -# Contributor - - - - - - -Assistance ----------- -If you need assistance, you can ask for help on my mailing list: - -* Email : abdulmoez123456789@gmail.com - -I also created a Discord group: - -* Server : https://discord.gg/RMNcqzmt9f - - -Buy Me a coffe --------------- -If you want to support me you can buy me coffe. - -BitCoin_addr: ``` 19vwfRXfthPY7f2aqDBpxQvZa6AJFKcdBS ``` +Android-Py-Cheats-Script +==== +[![GitHub stars](https://img.shields.io/github/stars/Anonym0usWork1221/Android-Py-Cheats-Script.svg)](https://github.com/Anonym0usWork1221/Android-Py-Cheats-Script/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/Anonym0usWork1221/Android-Py-Cheats-Script.svg)](https://github.com/Anonym0usWork1221/Android-Py-Cheats-Script/network/members) +[![GitHub issues](https://img.shields.io/github/issues/Anonym0usWork1221/Android-Py-Cheats-Script.svg)](https://github.com/Anonym0usWork1221/Android-Py-Cheats-Script/issues) +[![GitHub watchers](https://img.shields.io/github/watchers/Anonym0usWork1221/Android-Py-Cheats-Script.svg)](https://github.com/Anonym0usWork1221/Android-Py-Cheats-Script/watchers) +[![Python](https://img.shields.io/badge/language-Python%203-blue.svg)](https://www.python.org) +[![GPT_LICENSE](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/) + +----------- + + +**This is an example of using androidMemoryTool on android +This script is generated for game pubg mobile. +Can be use in Fortnite and other games for cheats** + +If you find any bug or not working function you can contact me. + + * date : 2022/12/29 + * Version : 0.2 + * author : Abdul Moez (abdulmoez123456789@gmail.com) + * Study : UnderGraduate in GCU Lahore, Pakistan + + MIT License + + Copyright (c) 2022 AbdulMoez + + +Requirements +----------- +* Python Version >= 3.7 +* Rooted Environment needed. +* Modules used ``androidMemoryTool==0.4``, ``art==5.7`` +* ```python3 PyCheats.py``` + +Compatible +----------- +* This script is made for an example the target packaged used in script was (com.tencent.ig)(PUBG MOBILE) +* For other games just change the addresses or values. +* This script uses ASYNC to boost work speed. + +Installation +---------------------------------------- +* **__Manual Installation__** + 1. First fulfill python requirements ``pip3 install -r ./requirements.txt`` + 2. Second run script as root ``sudo python3 PyCheats.py`` + +* **__Auto Installation__** + 1. Simply run ``python3 PyCheats.py`` it will automatically install all requirements** + +Old Versions +---------------------------------------- +**Old versions can be found in packages section** + +Reference +---------------------------------------- +* [AndroidMemoryTool](https://github.com/Anonym0usWork1221/android-memorytool) + +OutPut Sample +----------- +
+

+ +

+Supported Data Types +------------------- + +All data types are signed. + +| **Range** | **Name** | **Type** | +|---------------------------------------------------------|----------|------------------| +| -2,147,483,648 to 2,147,483,647 | DWORD | signed int | +| 3.4E +/- 38 (7 digits) | FLOAT | float | +| 1.7E +/- 308 (15 digits) | DOUBLE | double | +| -32,768 to 32,767 | WORD | signed short int | +| -128 to 127 | BYTE | signed char | +| -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | QWORD | signed long long | +| -2,147,483,648 to 2,147,483,647 | XOR | signed long | +| Random | UTF_8 | Text | +| Random | UTF_16LE | Text | + + +Supported Map Ranges +-------------------- +| **Script Name** | **Name** | **Description** | +|-----------------|--------------|----------------------------------------| +| ALL | Whole Memory | Whole Memory of current process (slow) | +| C_ALLOC | C++ alloc | RAM c++ Allocated memory | +| A_ANONYMOUS | Anonymous | Range with r-w access only | +| CODE_APP | Code App | shared libs memory (dangerous) | +| JAVA_HEAP | Java Heap | Java heap | +| C_HEAP | C++ Heap | Heap memory of cpp | +| C_DATA | C++ .data | .Data Memory | +| C_BSS | C++ .bss | .bss section memory | +| J_Java | Java | Java memory section | +| STACK | Stack | Stack Memory | +| ASHMEM | Ashmen | Ashmen Memory | +| V_video | Video | Video memory range | +| B_Bad | Bad | Bad Memory (dangerous) | +| CODE_SYSTEM | Code system | Code system memory (dangerous) | + +# Contributor + + + + + + +Assistance +---------- +If you need assistance, you can ask for help on my mailing list: + +* Email : abdulmoez123456789@gmail.com + +I also created a Discord group: + +* Server : https://discord.gg/RMNcqzmt9f + + +Buy Me a coffee +-------------- +If you want to support me you can buy me coffee. + +BitCoin_addr: ``` 19vwfRXfthPY7f2aqDBpxQvZa6AJFKcdBS ``` \ No newline at end of file diff --git a/process_info.json b/process_info.json new file mode 100644 index 0000000..88e67c7 --- /dev/null +++ b/process_info.json @@ -0,0 +1 @@ +{"game_pkg": ""} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 461d65d..c7746f7 100644 Binary files a/requirements.txt and b/requirements.txt differ