• Уменьшение отступа

    Обратная связь

    (info@ru-sfera.pw)

Уроки GameHacking. Часть-2


MKII

Администратор
Администрация
Регистрация
03.10.2022
Сообщения
256
Репутация
182
Всем привет!
Это 2 часть цикла статей про GameHacking.
В этой статье мы опять рассмотрим функцию ReadProcessMemory и реализуем реальную функцию которая даст нам преимущество в игре.

В данной статье мы напишем Externel TriggerBot или же Авто Выстрел.

С адресами мы разобрались в прошлой части, по этому сразу приступим к делу.

Для начала, получим локального игрока:
C++:
uintptr_t localPlayer = LocalPlayer();
if (localPlayer == NULL) continue;
Более подробно об этом, я написал в 1 части геймхакинга.

Далее, нам требуется получить LocalTeam & CrosshairID.
C++:
uint32_t localTeam = RPM<uint32_t>(localPlayer + 0xF4); //m_iTeamNum
uint32_t CrosshairID = RPM<uint32_t>(localPlayer + 0x11838); //m_iCrosshairId
Для вашего удобства, я указал какие адреса используются.

Далее, нам требуется получить список игроков, делается это так:
C++:
if (CrosshairID != 0 && CrosshairID < 32)
        {
            uintptr_t Enemy = RPM<uintptr_t>(moduleBase + 0x4DFCE74 + (CrosshairID - 1) * 0x10); //dwEntityList
            if (Enemy == NULL) continue;
         
            uint32_t eHealth = RPM<uint32_t>(Enemy + 0x100); //m_iHealth
            uint32_t eTeam = RPM<uintptr_t>(Enemy + 0xF4); //m_iTeamNum
        }

Мы получили команду игрока, который находится у нас в прицеле, остаётся самое простое, сделать выстрел.
Полный код:
C++:
    hwnd = FindWindowA(NULL, "Counter-Strike: Global Offensive - Direct3D 9");
    GetWindowThreadProcessId(hwnd, &procId);
    moduleBase = GetModuleBaseAddress("client.dll");
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, procId);
 
    while(1)
    {
        uintptr_t localPlayer = LocalPlayer();
        if (localPlayer == NULL) continue;
     
            uint32_t localTeam = RPM<uint32_t>(localPlayer + 0xF4); //m_iTeamNum
            uint32_t CrosshairID = RPM<uint32_t>(localPlayer + 0x11838); //m_iCrosshairId
     
        cout << localTeam << endl;

        if (CrosshairID != 0 && CrosshairID < 32)
        {
            uintptr_t Enemy = RPM<uintptr_t>(moduleBase + 0x4DFCE74 + (CrosshairID - 1) * 0x10); //dwEntityList
            if (Enemy == NULL) continue;
         
            uint32_t eHealth = RPM<uint32_t>(Enemy + 0x100); //m_iHealth
            uint32_t eTeam = RPM<uintptr_t>(Enemy + 0xF4); //m_iTeamNum
         
            if (eTeam != localTeam && eHealth <= 150)
            {

                mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
                mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                Sleep(200);
            }
         
        }
        Sleep(5);
    }
 
Последнее редактирование:

MKII

Администратор
Администрация
Регистрация
03.10.2022
Сообщения
256
Репутация
182
Верх Низ