0
c++ csgo trigger bot

#include <Windows.h>

#include <TlHelp32.h>

#include <string>

#include <iostream>

#define TRIGGER_KEY 0x56 // The V Virtual key

//csgo's offsets (you will need new ones if csgo gets updated)

DWORD EntityList = 0x4A14B54;

DWORD LocalPlayer = 0xA72C8C;

DWORD LifeState = 0x25B;

DWORD Team = 0xF0;

DWORD CrossHairId = 0x2410;

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);

  }

 }

}

bu içeriğe henüz yorum yapılmamıştır.



  • karışık

    Karışık

    23 takipçi

  • abone ol

  • moderatörler

    gaddarus

    oxygen
    tombalaci
    kaygusuzyazar
    ilteris
  • bölüm kuralları

    - bölümü takip etmeyi unutmayınız..

    aklınıza bölüm ismi gelmediyse bu bölüme ekleyebilirsiniz..

    ekleyeceğiniz bölümü bulamadıysanız bu bölüme ekleyebilirsiniz..

    bölüm seçmek istemeden koymak istiyorsanız bu bölüme ekleyebilirsiniz..

    başlık fark etmez istediğiniz başlıkta açabilirsiniz..

    - reklam yapmak yasaktır..

popi yükleniyor...

popi yükleniyor...

pupu yükleniyor...

pupu yükleniyor...

tepe yükleniyor...

tepe yükleniyor...