Загрузка данных
import pymem
import pymem.process
import ctypes
import time
import math
# Windows API
user32 = ctypes.windll.user32
gdi32 = ctypes.windll.gdi32
kernel32 = ctypes.windll.kernel32
# === ВАШИ ОФФСЕТЫ ===
OFFSET_VIEW_MATRIX = 0x12EAF0 # Client + 0x12EAF0
OFFSET_ENTITY_LIST = 0x12043C8 # Engine + 0x12043C8
OFFSET_HEALTH = 0xF8
OFFSET_TEAM = 0xF0
OFFSET_ORIGIN = 0x130
ESP_ENABLED = True
BOX_SIZE = 20
# Глобальные переменные
overlay_hwnd = None
overlay_dc = None
game_hwnd = None
def world_to_screen(x, y, z, view_matrix, sw, sh):
w = view_matrix[12]*x + view_matrix[13]*y + view_matrix[14]*z + view_matrix[15]
if w < 0.01:
return None
sx = view_matrix[0]*x + view_matrix[1]*y + view_matrix[2]*z + view_matrix[3]
sy = view_matrix[4]*x + view_matrix[5]*y + view_matrix[6]*z + view_matrix[7]
sx = (sw / 2) * (1 + sx / w)
sy = (sh / 2) * (1 - sy / w)
return (sx, sy)
def draw_rect(x, y, w, h, color):
global overlay_dc
brush = gdi32.CreateSolidBrush(color)
gdi32.SelectObject(overlay_dc, brush)
gdi32.Rectangle(overlay_dc, int(x - w/2), int(y - h/2), int(x + w/2), int(y + h/2))
gdi32.DeleteObject(brush)
def create_overlay():
global overlay_hwnd, overlay_dc, game_hwnd
game_hwnd = user32.FindWindowW(None, "Counter-Strike")
if not game_hwnd:
return False
# Получаем размеры окна игры
rect = ctypes.wintypes.RECT()
user32.GetWindowRect(game_hwnd, ctypes.byref(rect))
width = rect.right - rect.left
height = rect.bottom - rect.top
# Создаём прозрачное окно поверх игры
wc = ctypes.WNDCLASSEXW()
wc.cbSize = ctypes.sizeof(wc)
wc.lpfnWndProc = ctypes.WNDPROC(user32.DefWindowProcW)
wc.hInstance = kernel32.GetModuleHandleW(None)
wc.lpszClassName = "ESP_Overlay"
user32.RegisterClassExW(ctypes.byref(wc))
overlay_hwnd = user32.CreateWindowExW(
0x8000008, # WS_EX_TOPMOST | WS_EX_TRANSPARENT | WS_EX_LAYERED
"ESP_Overlay",
"ESP",
0x80000000, # WS_POPUP
rect.left, rect.top, width, height,
None, None, wc.hInstance, None
)
# Делаем окно прозрачным
user32.SetLayeredWindowAttributes(overlay_hwnd, 0, 0, 0x00000001) # LWA_COLORKEY
user32.SetLayeredWindowAttributes(overlay_hwnd, 0, 255, 0x00000002) # LWA_ALPHA
user32.ShowWindow(overlay_hwnd, 5) # SW_SHOW
overlay_dc = user32.GetDC(overlay_hwnd)
return True
def destroy_overlay():
global overlay_dc, overlay_hwnd
if overlay_dc:
user32.ReleaseDC(overlay_hwnd, overlay_dc)
if overlay_hwnd:
user32.DestroyWindow(overlay_hwnd)
def main():
global ESP_ENABLED, overlay_dc
print("=== CS 1.6 ESP (прозрачный оверлей) ===")
print("Rutube: https://rutube.ru/channel/43805541")
print("Telegram: hackeriks")
print()
# Создаём оверлей
if not create_overlay():
print("[-] CS 1.6 не запущена или окно не найдено")
return
print("[+] Прозрачное окно создано")
try:
pm = pymem.Pymem("hl.exe")
print("[+] hl.exe найден")
except:
print("[-] CS 1.6 не запущена")
destroy_overlay()
return
# Получаем базы модулей
engine = pymem.process.module_from_name(pm.process_handle, "hw.dll")
client = pymem.process.module_from_name(pm.process_handle, "client.dll")
engine_base = engine.lpBaseOfDll
client_base = client.lpBaseOfDll
view_matrix_addr = client_base + OFFSET_VIEW_MATRIX
entity_list_addr = engine_base + OFFSET_ENTITY_LIST
print("[*] ESP активен. F1 - вкл/выкл, F2 - выход")
running = True
while running:
# Управление
if user32.GetAsyncKeyState(0x70) & 1: # F1
ESP_ENABLED = not ESP_ENABLED
print(f"ESP: {'ON' if ESP_ENABLED else 'OFF'}")
time.sleep(0.2)
if user32.GetAsyncKeyState(0x71) & 1: # F2
running = False
break
if not ESP_ENABLED:
time.sleep(0.05)
continue
# Очищаем оверлей (делаем прозрачным)
user32.InvalidateRect(overlay_hwnd, None, True)
try:
# Читаем матрицу вида
view_matrix = [pm.read_float(view_matrix_addr + i*4) for i in range(16)]
# Читаем EntityList
entity_list = pm.read_int(entity_list_addr)
if not entity_list:
continue
# Получаем размеры окна
rect = ctypes.wintypes.RECT()
user32.GetClientRect(overlay_hwnd, ctypes.byref(rect))
sw = rect.right - rect.left
sh = rect.bottom - rect.top
# Перебираем игроков
for i in range(1, 33):
entity = pm.read_int(entity_list + i * 4)
if not entity:
continue
health = pm.read_int(entity + OFFSET_HEALTH)
if health <= 0:
continue
x = pm.read_float(entity + OFFSET_ORIGIN)
y = pm.read_float(entity + OFFSET_ORIGIN + 4)
z = pm.read_float(entity + OFFSET_ORIGIN + 8)
screen = world_to_screen(x, y, z + 60, view_matrix, sw, sh)
if screen:
draw_rect(screen[0], screen[1], BOX_SIZE, BOX_SIZE, 0x0000FF)
except Exception as e:
pass
time.sleep(0.03)
destroy_overlay()
print("ESP остановлен.")
if __name__ == "__main__":
main()