Всем привет!
Это 2 часть цикла статей про GameHacking.
В этой статье мы опять рассмотрим функцию ReadProcessMemory и реализуем реальную функцию которая даст нам преимущество в игре.
В данной статье мы напишем Externel TriggerBot или же Авто Выстрел.
С адресами мы разобрались в прошлой части, по этому сразу приступим к делу.
Для начала, получим локального игрока:
Более подробно об этом, я написал в 1 части геймхакинга.
Далее, нам требуется получить LocalTeam & CrosshairID.
Для вашего удобства, я указал какие адреса используются.
Далее, нам требуется получить список игроков, делается это так:
Мы получили команду игрока, который находится у нас в прицеле, остаётся самое простое, сделать выстрел.
Полный код:
Это 2 часть цикла статей про GameHacking.
В этой статье мы опять рассмотрим функцию ReadProcessMemory и реализуем реальную функцию которая даст нам преимущество в игре.
В данной статье мы напишем Externel TriggerBot или же Авто Выстрел.
С адресами мы разобрались в прошлой части, по этому сразу приступим к делу.
Для начала, получим локального игрока:
C++:
uintptr_t localPlayer = LocalPlayer();
if (localPlayer == NULL) continue;
Далее, нам требуется получить 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);
}
Последнее редактирование: