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


MKII

Уважаемый пользователь
Форумчанин
Регистрация
03.10.2022
Сообщения
252
Репутация
175
Всем привет!
Это 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
Сообщения
252
Репутация
175
В следующей части, мы начнем делать полноценный Internel чит!
 

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
264
Репутация
146
Было бы интересно "раздробить" какую нибудь мобильную онлайн игру на юнити
 

MKII

Уважаемый пользователь
Форумчанин
Регистрация
03.10.2022
Сообщения
252
Репутация
175
Верх Низ