Why is this trigger bot not working?
I followed a tutorial online (yes ik this is probably detected) on a triggerbot. Me having 4 years of java experience, coming to C++ is a new thing. Though watching his video actually taught me a bit about memory reading. The trigger bot atm is not working, I'm guessing my offsets are wrong but I've used dumpers and they seem correct. Can someone please tell me what's wrong?
Code:
#include <Windows.h>
#include <TlHelp32.h>
#include <string>
#include <iostream>
#define TRIGGER_KEY 0x56
#define var template<typename T> T
DWORD EntityList = 0x04A3BB64;
DWORD LocalPlayer = 0x00A9948C;
DWORD LifeState = 0x025B;
DWORD Team = 0x00F0;
DWORD CrossHairId = 0x00008CF4;
DWORD EntitySize = 0x10;
//new "datatype"
struct Module
{
DWORD dwBase;
DWORD dwSize;
};
//debugger class
class Debugger
{
private:
HANDLE __process;
DWORD __pId;
public:
bool Attach(char* ProcessName)
{
HANDLE PHANDLE = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
PROCESSENTRY32 CSENTRY;
CSENTRY.dwFlags = sizeof(CSENTRY);
do {
if (!strcmp(CSENTRY.szExeFile, ProcessName)) {
__pId = CSENTRY.th32ProcessID; //sets process' id
CloseHandle(PHANDLE); //closes the opent handle
__process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, __pId); //opens process for read/write
return true; // operation was successful
}
} while (Process32Next(PHANDLE, &CSENTRY));
return false; // operation failed (process was not found)
}
Module GetModule(char* ModuleName)
{
//same as in attach function, except for a dll in memory...
HANDLE module = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, __pId);
MODULEENTRY32 ModEntry;
ModEntry.dwSize = sizeof(ModEntry);
do {
if (!strcmp(ModEntry.szModule, (char*)ModuleName)) {
CloseHandle(module);
return{ (DWORD)ModEntry.hModule, ModEntry.modBaseSize };
}
} while (Module32Next(module, &ModEntry));
return{ (DWORD)NULL, (DWORD)NULL };
}
template <typename T> T read(DWORD Addr)
{
T __read;
ReadProcessMemory(__process, (void*)Addr, &__read, sizeof(T), NULL);
return __read;
}
};
Debugger debugger;
DWORD dwClient, dwEngine;
class Entity
{
public:
static DWORD GetBaseEntity(int PlayerNumber)
{
return debugger.read<DWORD>(dwClient + EntityList + (EntitySize * PlayerNumber));
}
static bool PlayerIsDead(int PlayerNumber)
{
DWORD BaseEntity = GetBaseEntity(PlayerNumber);
if (BaseEntity) {
return debugger.read<bool>(BaseEntity + LifeState);
}
}
static int GetTeam(int PlayerNumber)
{
DWORD BaseEntity = GetBaseEntity(PlayerNumber);
if (BaseEntity) {
return debugger.read<int>(BaseEntity + Team);
}
}
};
class Game
{
public:
static void GetPlayerBase(DWORD* retAddr)
{
(DWORD)*retAddr = debugger.read<DWORD>(dwClient + LocalPlayer);
}
static int GetTeam() //retrieves current team (ct/t)
{
DWORD PlayerBase;
GetPlayerBase(&PlayerBase);
if (PlayerBase)
return debugger.read<int>(PlayerBase + Team);
}
static void GetCrosshairId(int* retAddr)
{
DWORD PlayerBase;
GetPlayerBase(&PlayerBase);
if (PlayerBase)
(int)*retAddr = debugger.read<int>(PlayerBase + CrossHairId) - 1;
}
};
void Click()
{
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(1);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
DWORD WINAPI TriggerThread(LPVOID PARAMS)
{
while (1)
{
Sleep(1);
if (GetAsyncKeyState(TRIGGER_KEY) < 0 && TRIGGER_KEY != 1) //if the V key is down....
{
int PlayerNumber = NULL;
Game::GetCrosshairId(&PlayerNumber); //get the current player number
if (PlayerNumber < 64 && PlayerNumber >= 0 && Entity::GetTeam(PlayerNumber) != Game::GetTeam() && Entity::PlayerIsDead(PlayerNumber) == false)
{
Click(); //click
}
}
}
return 0;
}
int main()
{
Module Client, Engine;
//try to attach to csgo
while (!debugger.Attach("csgo.exe")) {
std::cout << ".";
Sleep(500);
}
//client.dll & engine.dll are the 2 modules where our data about players exist.
Client = debugger.GetModule("client.dll"); //get executable module client.dll
dwClient = Client.dwBase;
Engine = debugger.GetModule("engine.dll"); //get executable module engine.dll
dwEngine = Engine.dwBase;
CreateThread(0, 0, &TriggerThread, 0, 0, 0); //create a thread for the trigger loop
std::cout << "Trigger thread is running...";
while (1)
{
if (GetAsyncKeyState(VK_F4)) {
exit(0);
}
}
}

wtf mate