Будущий хацкер
-
Автор темы
- #1
Этот гайд для тех кто только осваивает мир читов и все что с ними связано. Я постарался расписать все подробно чтобы было понятно и наглядно.
Дисклеймер: данный гайд написан мой(новичком в этом деле), если у вас есть улучшения данного кода пишите, хорошо отношусь к критике!
И так разберем каждую строчку кода
Использовать данный код только в ознакомительных целях, использования данного кода в игре приведет к блокировки вашего игрового аккаунта!
Офсеты обновлены!
Дисклеймер: данный гайд написан мой(новичком в этом деле), если у вас есть улучшения данного кода пишите, хорошо отношусь к критике!
И так разберем каждую строчку кода
- "import keyboard" импортирует модуль keyboard для работы с клавиатурой.
- "import pymem" и "import pymem.process" импортируют модули pymem и pymem.process для работы с памятью процесса.
- "dwEntityList = (0x4DFFF14)" и следующие строки определяют константы с адресами в памяти, используемыми далее в коде.
- "pm = pymem.Pymem("csgo.exe")" создает экземпляр класса Pymem для работы с процессом csgo.exe.
- "client = pymem.process.module_from_name(pm.process_handle, "client.dll").lpBaseOfDll" получает базовый адрес модуля client.dll в памяти процесса.
- "trigger_key = "shift"" определяет, что клавишей-триггером будет шифт.
- "def main():" определяет функцию main, которая будет запущена при запуске скрипта.
- "print("TriggerBot enabled!")" выводит сообщение о том, что триггербот включен.
- "shooting = False" инициализирует переменную shooting как False.
- "while True:" запускает бесконечный цикл.
- "player = pm.read_int(client + dwLocalPlayer)" получает адрес локального игрока из памяти процесса.
- "if keyboard.is_pressed(trigger_key):" проверяет, нажата ли клавиша-триггер. Если нажата, то выполняется следующий код.
- "if player is not None:" проверяет, найден ли локальный игрок. Если найден, то выполняется следующий код.
- "if pm.read_int(player + m_iCrosshairId) > 0 and pm.read_int(player + m_iCrosshairId) <= 64:" проверяет, что идентификатор прицела в памяти находится в диапазоне от 1 до 64.
- "if pm.read_int(player + m_fFlags) & 0x1:" проверяет, что бит флага "движения" в памяти установлен в 1.
- "for i in range(64):" запускает цикл, в котором перебираются все сущности в списке.
- "entity = pm.read_int(client + dwEntityList + i * 0x10)" получает адрес сущности из памяти процесса.
Умножение на 0x10 в этой строке необходимо для того, чтобы перебрать все сущности в списке. Список сущностей в игре хранится в памяти процесса как массив и каждая сущность имеет свой адрес в памяти. Адреса соседних сущностей в массиве расположены на определенном расстоянии друг от друга, которое и задается умножением на 0x10. Это значит, что каждый следующий элемент списка имеет адрес, который на 0x10 больше предыдущего. - "entity_team = pm.read_int(entity + m_iTeamNum)" получает идентификатор команды сущности из памяти процесса.
- "player_team = pm.read_int(player + m_iTeamNum)" получает идентификатор команды локального игрока из памяти и процесса.
- "if player_team != entity_team:" проверяет, что команда сущности не совпадает с командой локального игрока.
- "shooting = True" устанавливает значение переменной shooting в True.
- "pm.write_int(client + dwForceAttack, 5)" записывает значение 5 в память процесса для выстрела.
- "break" прерывает цикл.
- "if not keyboard.is_pressed(trigger_key) and shooting == True:" проверяет, что клавиша-триггер не нажата и shooting имеет значение True.
- "pm.write_int(client + dwForceAttack, 4)" записывает значение 4 в память процесса для отпускания кнопки мыши.
- "shooting = False" устанавливает значение переменной shooting в False.
- "if name == 'main':" проверяет, что скрипт запущен как главный.
- "main()" запускает функцию main.
Использовать данный код только в ознакомительных целях, использования данного кода в игре приведет к блокировки вашего игрового аккаунта!
Офсеты обновлены!
Python:
import keyboard
import pymem
import pymem.process
dwEntityList = (0x4DFFF14)
dwForceAttack = (0x322DD10)
dwLocalPlayer = (0xDEA964)
m_fFlags = (0x104)
m_iCrosshairId = (0x11838)
m_iTeamNum = (0xF4)
pm = pymem.Pymem("csgo.exe")
client = pymem.process.module_from_name(pm.process_handle, "client.dll").lpBaseOfDll
trigger_key = "shift"
def main():
print("TriggerBot enabled!")
shooting = False
while True:
player = pm.read_int(client + dwLocalPlayer)
if keyboard.is_pressed(trigger_key):
# проверяем наличие игрока
if player is not None:
# проверяем память
if pm.read_int(player + m_iCrosshairId) > 0 and pm.read_int(player + m_iCrosshairId) <= 64:
# проверяем флаги
if pm.read_int(player + m_fFlags) & 0x1:
# перебираем сущности в списке
for i in range(64):
entity = pm.read_int(client + dwEntityList + i * 0x10)
entity_team = pm.read_int(entity + m_iTeamNum)
player_team = pm.read_int(player + m_iTeamNum)
if player_team != entity_team:
shooting = True
pm.write_int(client + dwForceAttack, 5)
break
if not keyboard.is_pressed(trigger_key) and shooting == True:
pm.write_int(client + dwForceAttack, 4)
shooting = False
if __name__ == '__main__':
main()
Последнее редактирование: