This repository has been archived on 2023-09-02. You can view files and clone it, but cannot push or open issues or pull requests.
csh/hack.py
2023-03-31 00:58:44 +02:00

89 lines
2.4 KiB
Python

from json import loads
from time import sleep
from pymem import Pymem
from requests import get
class Hack():
"""Base class for playing with CSGO memory"""
def __init__(self) -> None:
# Loading offsets
self.offsets = self._find_offsets()
self.pm = self._find_process(True)
self.wait_time = 0.01
self.timeout = self.wait_time * 50
def _find_offsets(self) -> dict[str, int]:
hazedumper_data = get(
"https://raw.githubusercontent.com/frk1/hazedumper/master/csgo.min.json")
serial_data = loads(hazedumper_data.text)
return serial_data["signatures"] | serial_data["netvars"] | {
"entity_size": 0x10,
"glow_obj_size": 0x38,
"glow_R": 0x8,
"glow_G": 0xC,
"glow_B": 0x10,
"glow_A": 0x14,
"GOM_wall": 0x27,
"GOM_visible": 0x28,
"render_R": 0x0,
"render_G": 0x1,
"render_B": 0x2,
"float": 0x4,
}
def _find_process(self, verbose: bool = False) -> Pymem:
"""Find game process"""
process_found = False
print("Looking for process...") if verbose else None
pm = None
while not process_found:
try:
pm = Pymem("csgo.exe")
except:
# Timeout
sleep(.5)
else:
print("Process found!") if verbose else None
process_found = True
if pm:
return pm
exit(1)
def find_module(self, module: str):
"""Find module address"""
found = None
for internal_module in list(self.pm.list_modules()):
if internal_module.name == module + ".dll":
found = internal_module.lpBaseOfDll
if found:
return found
else:
raise MemoryError
def find_uint(self, base, offset: int) -> int:
"""Find integer in memory for sure"""
local_element = None
while not local_element:
local_element = self.pm.read_uint(base + offset)
sleep(self.timeout)
return local_element
def hack_loop(self, method):
"""Run the hack loop"""
while True:
# Reduce CPU usage
sleep(self.wait_time)
# Cheat
method()