Гайд Гайд по написанию триггер-бота на Python

Будущий хацкер
Начинающий
Статус
Оффлайн
Регистрация
28 Апр 2022
Сообщения
107
Реакции[?]
13
Поинты[?]
3K
Этот гайд для тех кто только осваивает мир читов и все что с ними связано. Я постарался расписать все подробно чтобы было понятно и наглядно.

Дисклеймер: данный гайд написан мой(новичком в этом деле), если у вас есть улучшения данного кода пишите, хорошо отношусь к критике!

И так разберем каждую строчку кода


  1. "import keyboard" импортирует модуль keyboard для работы с клавиатурой.
  2. "import pymem" и "import pymem.process" импортируют модули pymem и pymem.process для работы с памятью процесса.
  3. "dwEntityList = (0x4DFFF14)" и следующие строки определяют константы с адресами в памяти, используемыми далее в коде.
  4. "pm = pymem.Pymem("csgo.exe")" создает экземпляр класса Pymem для работы с процессом csgo.exe.
  5. "client = pymem.process.module_from_name(pm.process_handle, "client.dll").lpBaseOfDll" получает базовый адрес модуля client.dll в памяти процесса.
  6. "trigger_key = "shift"" определяет, что клавишей-триггером будет шифт.
  7. "def main():" определяет функцию main, которая будет запущена при запуске скрипта.
  8. "print("TriggerBot enabled!")" выводит сообщение о том, что триггербот включен.
  9. "shooting = False" инициализирует переменную shooting как False.
  10. "while True:" запускает бесконечный цикл.
  11. "player = pm.read_int(client + dwLocalPlayer)" получает адрес локального игрока из памяти процесса.
  12. "if keyboard.is_pressed(trigger_key):" проверяет, нажата ли клавиша-триггер. Если нажата, то выполняется следующий код.
  13. "if player is not None:" проверяет, найден ли локальный игрок. Если найден, то выполняется следующий код.
  14. "if pm.read_int(player + m_iCrosshairId) > 0 and pm.read_int(player + m_iCrosshairId) <= 64:" проверяет, что идентификатор прицела в памяти находится в диапазоне от 1 до 64.
  15. "if pm.read_int(player + m_fFlags) & 0x1:" проверяет, что бит флага "движения" в памяти установлен в 1.
  16. "for i in range(64):" запускает цикл, в котором перебираются все сущности в списке.
  17. "entity = pm.read_int(client + dwEntityList + i * 0x10)" получает адрес сущности из памяти процесса.
    Умножение на 0x10 в этой строке необходимо для того, чтобы перебрать все сущности в списке. Список сущностей в игре хранится в памяти процесса как массив и каждая сущность имеет свой адрес в памяти. Адреса соседних сущностей в массиве расположены на определенном расстоянии друг от друга, которое и задается умножением на 0x10. Это значит, что каждый следующий элемент списка имеет адрес, который на 0x10 больше предыдущего.
  18. "entity_team = pm.read_int(entity + m_iTeamNum)" получает идентификатор команды сущности из памяти процесса.
  19. "player_team = pm.read_int(player + m_iTeamNum)" получает идентификатор команды локального игрока из памяти и процесса.
  20. "if player_team != entity_team:" проверяет, что команда сущности не совпадает с командой локального игрока.
  21. "shooting = True" устанавливает значение переменной shooting в True.
  22. "pm.write_int(client + dwForceAttack, 5)" записывает значение 5 в память процесса для выстрела.
  23. "break" прерывает цикл.
  24. "if not keyboard.is_pressed(trigger_key) and shooting == True:" проверяет, что клавиша-триггер не нажата и shooting имеет значение True.
  25. "pm.write_int(client + dwForceAttack, 4)" записывает значение 4 в память процесса для отпускания кнопки мыши.
  26. "shooting = False" устанавливает значение переменной shooting в False.
  27. "if name == 'main':" проверяет, что скрипт запущен как главный.
  28. "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()
 
Последнее редактирование:
Будущий хацкер
Начинающий
Статус
Оффлайн
Регистрация
28 Апр 2022
Сообщения
107
Реакции[?]
13
Поинты[?]
3K
Ой господи простите господа забыл, исправлю щас!
Вспомнить, что client_panorama.dll был переименован в client.dll
Подправил! Писал по памяти еще по старым гайдам, спасибо что напомнили!
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
500
Реакции[?]
311
Поинты[?]
101K
Затем определяются константы, такие как dwEntityList, dwForceAttack и dwLocalPlayer, которые содержат адреса в памяти, которые нужно использовать для работы триггер-бота.
Возможно стоило бы расписать что это за оффсеты, что за структуры, почему мы умножаем счетчик именно на 0x10 и т.п. Так же, стоит добавить что данный метод триггербота - детект и юзать его не стоит) Так-то он неплох, но чуть можно и расписать, по крайней мере это уж точно не навредит.
 
Будущий хацкер
Начинающий
Статус
Оффлайн
Регистрация
28 Апр 2022
Сообщения
107
Реакции[?]
13
Поинты[?]
3K
Возможно стоило бы расписать что это за оффсеты, что за структуры, почему мы умножаем счетчик именно на 0x10 и т.п. Так же, стоит добавить что данный метод триггербота - детект и юзать его не стоит) Так-то он неплох, но чуть можно и расписать, по крайней мере это уж точно не навредит.
Да я добавлю предупреждение что его лучше не использовать, а остальное я напишу уже когда домой прийду, на работе не удобно)
 
Рисую демонической кровью
Забаненный
Статус
Оффлайн
Регистрация
10 Дек 2021
Сообщения
124
Реакции[?]
46
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Этот гайд для тех кто только осваивает мир читов и все что с ними связано. Я постарался расписать все подробно чтобы было понятно и наглядно.

Дисклеймер: данный гайд написан мой(новичком в этом деле), если у вас есть улучшения данного кода пишите, хорошо отношусь к критике!

1. Сначала импортируются необходимые библиотеки: keyboard, pymem и pymem.process.

2. Затем определяются константы, такие как dwEntityList, dwForceAttack и dwLocalPlayer, которые содержат адреса в памяти, которые нужно использовать для работы триггер-бота.

3. Создается объект pm типа Pymem для подключения к процессу CS:GO и получения доступа к его памяти.

4. Определяется ключ триггера - "shift".

5. В функции main() создается цикл while, в котором происходит основная логика триггер-бота.

6. Если ключ триггера нажат:
Проверяется наличие игрока перед началом стрельбы.

upd. не позорься поменяй название . . .
7. Читается память и проверяются флаги для определения сущности, на которую смотрит игрок прицелом, и сравнивается ее команда с командой игрок

8. Если команды разные, то выстрел идет автоматически, так как игрок смотрит на вражескую сущность.

9. Если ключ триггера не нажат и идет стрельба, то стрельба прекращается.

В целом, этот код создает триггер-бот, который автоматически стреляет при нахождении прицела игрока на вражескую сущность.

Использовать данный код только в ознакомительных целях, использования данного кода в игре приведет к блокировки вашего игрового аккаунта!


Офсеты обновлены!
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()
Мало про работу с памятью, а так статья - копипаст.

upd. Ты название языка забыл??
 
Будущий хацкер
Начинающий
Статус
Оффлайн
Регистрация
28 Апр 2022
Сообщения
107
Реакции[?]
13
Поинты[?]
3K
Мало про работу с памятью, а так статья - копипаст.

upd. Ты название языка забыл??
Человеку свойственно ошибаться если его могут отвлечь. Ее я не копипастил не откуда, написана своими силами. Если ты натыкался на что-то подобное то я окрою тебе секрет не я один и не я последний кто напишет что-то подобное. Я что мог сидя на работе с телефона написать то и написал, глупо говорить что я ее где-то скопировал)
 
Сверху Снизу