Hey Guys,
I was bored so I went back to CS:GO to try re-create my external Triggerbot, this source is mainly for learning as I know a few people are having issues with internal hacking,
this code is not perfect but its there for you to update and add correct hooks, ive commented as much as I can I will add more later on when I update the code with hooks etc .
VAC Status: DETECTED
this is detected, don't try use it online (or use at own risk), as we are not hooking to a safe area of memory - (will come with updates soon)
How To:
1. Create Win32Project.
2. Create Required Header & Cpp Files.
3. Populate With Source Code.
Hot Keys:
Insert : Start Trigger Bot
+/- : Increase Fire Response Time
END : Stop Trigger Bot
END : Un-Inject Dll
UPDATED: 24/02/2014 | (GMT) 21:32
All feedback on my coding is welcomed bad or good it all helps
Credits:
Agent Smith - Helped me before with internal coding and using reclass
Fleep - His tutorials gave me ideas on how to read information efficiently
I was bored so I went back to CS:GO to try re-create my external Triggerbot, this source is mainly for learning as I know a few people are having issues with internal hacking,
this code is not perfect but its there for you to update and add correct hooks, ive commented as much as I can I will add more later on when I update the code with hooks etc .
VAC Status: DETECTED
this is detected, don't try use it online (or use at own risk), as we are not hooking to a safe area of memory - (will come with updates soon)
How To:
1. Create Win32Project.
2. Create Required Header & Cpp Files.
3. Populate With Source Code.
Hot Keys:
Insert : Start Trigger Bot
+/- : Increase Fire Response Time
END : Stop Trigger Bot
END : Un-Inject Dll
C++:
#ifndef FUNC_H
#define FUNC_H
#include "Includes.h"
class read; //Definition
class read{
public:
int i_Enemies[32]; //Enemy Array - Max Ammount Of Enemies Is 16 (32/2)
int i_Count; //Found Counter / Array Index - Allows Us To Populate Enemy Array Correctly (in order)
void Read()
{
for(int i = 0; i < 64; i++)
{
//Loop From Base Entity Address by 0x10 On Each Iteration
CEngine *Entity = *(CEngine**)(((DWORD)GetModuleHandleA("client.dll") + 0xA4C3E4) + (i * 0x10));
//Prevent Crash From Reading Null Pointer
if(!Entity)
continue;
//If An Enemy Has Been Found, Store Their Entity Index ID Inside Array
if(Entity->m_iTeamNum != Player->m_iTeamNum && Entity->m_iTeamNum != 1) // 1 = spectators? check correct
{
i_Enemies[i_Count] = Entity->m_iIndex;
i_Count++;
}
}
}
}info;
void Trigger()
{
//Variables
using namespace std;
int iTarList[32]; //Enemy Array
int iResponse = 1; //Default Fire Rate
int * i_cID;
int cID;
//In-Crosshair
int iX = (*(int*)(Player) + 0x2374);
//Read Relevant info
info.Read();
while(1)
{
//Read Relevant info
info.Read();
//Populate Enemy Array
for(int i = 0; i < info.i_Count; i++)
iTarList[i] = info.i_Enemies[i];
//Read Whats In Crosshair And Compare Against Array
cID = (*(int*)(iX));
i_cID = find(iTarList, iTarList + info.i_Count, cID);
//Shoot If Current ID Matches Enemy ID
while(*i_cID == cID)
{
//Read Whats In Crosshair
cID = (*(int*)(iX));
i_cID = find(iTarList, iTarList + info.i_Count, cID);
//Writing Shoot To Memory
*(int*)(dwClient+0xA88358) = 5;
Sleep(iResponse);
*(int*)(dwClient+0xA88358) = 4;
//End Triggerbot - Saftey Key Encase We Stuck In Infinite Loop
if(GetAsyncKeyState(VK_END)&1)
return;
}
//Reset Entity Counter
info.i_Count = 0;
#pragma region Fire Rate Modifier
if(GetAsyncKeyState(VK_ADD)&1)
{
iResponse++;
if(iResponse > 15)
iResponse = 15;
system("cls");
_cprintf("%d", iResponse);
}
else if(GetAsyncKeyState(VK_SUBTRACT)&1)
{
iResponse--;
if(iResponse < 1)
iResponse = 1;
system("cls");
_cprintf("%d", iResponse);
}
#pragma endregion
//End Triggerbot
if(GetAsyncKeyState(VK_END)&1)
break;
}
}
#endif
C++:
#ifndef INCLUDES_H //If Not Defined
#define INCLUDES_H //Define Now
#pragma once
#define WIN32_LEAN_AND_MEAN //Exclude Un-used Header Files
#include <windows.h> //Standard Header File
#include <iostream> //Constains Input/Output Functions (cin/cout etc..)
#include <TlHelp32.h> //Contains Read/Write Functions
#include <string> //Support For Strings
#include <ctime> //Time Information (Create Timers etc..)
#include <math.h>
#include <algorithm>
#include <conio.h>
#pragma region ReClass
class CEngine;
class CEngine
{
public:
char _0x0000[100];
__int32 m_iIndex; //0x0064
char _0x0068[44];
float m_vecAbsVelocity[3]; //0x0094
float m_vecAbsOrigin[3]; //0x00A0
float m_vecOrigin[3]; //0x00AC
char _0x00B8[56];
__int32 m_iTeamNum; //0x00F0
char _0x00F4[8];
__int32 m_iHealth; //0x00FC
__int32 m_fFlags; //0x0100
float m_vecViewOffset[3]; //0x0104
float m_vecVelocity[3]; //0x0110
char _0x011C[12];
float m_angNetAngles[3]; //0x0128
float m_vecNetOrigin[3]; //0x0134
};//Size=0x0140
CEngine *Player = *(CEngine**)((DWORD)GetModuleHandleA("client.dll") + 0xA33234);
DWORD dwClient = (DWORD)GetModuleHandleA("client.dll");
DWORD dwServer = (DWORD)GetModuleHandleA("server.dll");
#pragma endregion
#endif
C++:
#include "Func.h"
using namespace std;
DWORD WINAPI MainThread(LPVOID param);
BOOL WINAPI DllMain(HMODULE hModule, DWORD reason, LPVOID reserved)
{
if(reason == DLL_PROCESS_ATTACH)
{
AllocConsole();
AttachConsole(GetProcessId(hModule));
CreateThread(0, 0, MainThread, 0, 0, 0);
}
else if (reason == DLL_PROCESS_DETACH)
{
//Required So We Can Exit
FreeConsole();
}
return TRUE;
}
DWORD WINAPI MainThread(LPVOID param)
{
SetConsoleTitleW(L"Nether's CS: GO Hax");
while (1)
{
if(GetAsyncKeyState(VK_INSERT)&1)
{
_cprintf("\nON");
Sleep(10);
Trigger();
_cprintf("\nOFF");
}
//De-Inject
if(GetAsyncKeyState(VK_END) & 1)
{
HMODULE myModule = GetModuleHandleA("Trigger.dll");
FreeLibraryAndExitThread(myModule, 0);
}
}
return 0;
}
UPDATED: 24/02/2014 | (GMT) 21:32
All feedback on my coding is welcomed bad or good it all helps
Credits:
Agent Smith - Helped me before with internal coding and using reclass
Fleep - His tutorials gave me ideas on how to read information efficiently
Last edited: