Solved CS:GO ESP Help ( followed Fleeps Tutorial )

Hexui Undetected CSGO Cheats Sinkicheat PUBG Cheat

clientdll

Newbie
Full Member
Mar 8, 2015
9
82
0
Hello Guys ! :challenge:

Im learning C++ at my School. After a lot of time i want to try me at gamehacking. Coded already a triggerbot but now i want to try an ESP. :D

I followed Fleeps tutorial for CS:S. I tried to rewrite it for CS:GO.

When i start the hack, the hack dont draw anything :(

Here is my sc:

The findprocess header:
C++:
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
#include <conio.h>
#include <thread>
#include <stdio.h>
#include <string>
#include <sstream>
#include <math.h>  
#include <vector>
#include <algorithm> 

class CHackProcess
{
public:

	PROCESSENTRY32 __gameProcess;
	HANDLE __HandleProcess;
	HWND __HWNDCsgo;
	DWORD __dwordClient;
	DWORD __dwordEngine;
	DWORD __dwordOverlay;
	DWORD __dwordVGui;
	DWORD __dwordServer;
	DWORD __dwordLibCef;
	DWORD __dwordSteam;
	DWORD FindProcessName(const char *__ProcessName, PROCESSENTRY32 *pEntry)
	{
		PROCESSENTRY32 __ProcessEntry;
		__ProcessEntry.dwSize = sizeof(PROCESSENTRY32);
		HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
		if (hSnapshot == INVALID_HANDLE_VALUE) return 0;        if (!Process32First(hSnapshot, &__ProcessEntry))
		{
			CloseHandle(hSnapshot);
			return 0;
		}
		do{
			if (!_strcmpi(__ProcessEntry.szExeFile, __ProcessName))
			{
				memcpy((void *)pEntry, (void *)&__ProcessEntry, sizeof(PROCESSENTRY32));
				CloseHandle(hSnapshot);
				return __ProcessEntry.th32ProcessID;
			}
		} while (Process32Next(hSnapshot, &__ProcessEntry));
		CloseHandle(hSnapshot);
		return 0;
	}

	DWORD getThreadByProcess(DWORD __DwordProcess)
	{
		THREADENTRY32 __ThreadEntry;
		__ThreadEntry.dwSize = sizeof(THREADENTRY32);
		HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
		if (hSnapshot == INVALID_HANDLE_VALUE) return 0;

		if (!Thread32First(hSnapshot, &__ThreadEntry)) { CloseHandle(hSnapshot); return 0; }

		do {
			if (__ThreadEntry.th32OwnerProcessID == __DwordProcess)
			{
				CloseHandle(hSnapshot);
				return __ThreadEntry.th32ThreadID;
			}
		} while (Thread32Next(hSnapshot, &__ThreadEntry));
		CloseHandle(hSnapshot);
		return 0;
	}

	DWORD GetModuleNamePointer(LPSTR LPSTRModuleName, DWORD __DwordProcessId)
	{
		MODULEENTRY32 lpModuleEntry = { 0 };
		HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, __DwordProcessId);
		if (!hSnapShot)
			return NULL;
		lpModuleEntry.dwSize = sizeof(lpModuleEntry);
		BOOL __RunModule = Module32First(hSnapShot, &lpModuleEntry);
		while (__RunModule)
		{
			if (!strcmp(lpModuleEntry.szModule, LPSTRModuleName))
			{
				CloseHandle(hSnapShot);
				return (DWORD)lpModuleEntry.modBaseAddr;
			}
			__RunModule = Module32Next(hSnapShot, &lpModuleEntry);
		}
		CloseHandle(hSnapShot);
		return NULL;
	}

	void runSetDebugPrivs()
	{
		HANDLE __HandleProcess = GetCurrentProcess(), __HandleToken;
		TOKEN_PRIVILEGES priv;
		LUID __LUID;
		OpenProcessToken(__HandleProcess, TOKEN_ADJUST_PRIVILEGES, &__HandleToken);
		LookupPrivilegeValue(0, "seDebugPrivilege", &__LUID);
		priv.PrivilegeCount = 1;
		priv.Privileges[0].Luid = __LUID;
		priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
		AdjustTokenPrivileges(__HandleToken, false, &priv, 0, 0, 0);
		CloseHandle(__HandleToken);
		CloseHandle(__HandleProcess);
	}

	void RunProcess()
	{
		runSetDebugPrivs();
		while (!FindProcessName("csgo.exe", &__gameProcess)) Sleep(12);
		while (!(getThreadByProcess(__gameProcess.th32ProcessID))) Sleep(12);
		__HandleProcess = OpenProcess(PROCESS_ALL_ACCESS, false, __gameProcess.th32ProcessID);
		while (__dwordClient == 0x0) __dwordClient = GetModuleNamePointer("client.dll", __gameProcess.th32ProcessID);
		while (__dwordEngine == 0x0) __dwordEngine = GetModuleNamePointer("engine.dll", __gameProcess.th32ProcessID);
		while (__dwordVGui == 0x0) __dwordVGui = GetModuleNamePointer("vguimatsurface.dll", __gameProcess.th32ProcessID);
		while (__dwordServer == 0x0)__dwordServer = GetModuleNamePointer("server.dll", __gameProcess.th32ProcessID);
		__HWNDCsgo = FindWindow(NULL, "Counter-Strike: Global Offensive");
	}
};

extern CHackProcess fProcess;
( I know many includions at the header file )

my main.cpp:
C++:
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
#include <conio.h>
#include <thread>
#include <stdio.h>
#include <string>
#include <sstream>
#include <math.h>  
#include <vector>
#include <algorithm> 
#include "findprocess.h"

CHackProcess fProcess;
using namespace std;

#define F6_Key 0x75
#define RIGHT_MOUSE 0x02

DWORD EntityPlayer_Base = 0x4A13284;
DWORD EntityLoopDistance = 0x10;
DWORD Player_Base = 0xA7094C;
DWORD dw_chIDoffset = 0x23F8;
DWORD dw_flagOffset = 0x100;
DWORD dw_mTeamOffset = 0xF0;
DWORD dw_Health = 0xFC;
DWORD dw_isDefusing = 0x1C00; //bool
DWORD dw_WeaponID = 0x12C0;
DWORD dw_ActiveWeapon = 0x1684;
DWORD dw_Pos = 0x134;
int dw_numberOfActivePlayers = 10;
int NumofPlayers = 10;

RECT m_Rect;
HDC HDC_Desktop;
HBRUSH EnemyBrush;
HFONT Font;

HWND TargetWnd;
HWND Handle;
DWORD DwProcId;

COLORREF SnapLineCOLOR;
COLORREF TextCOLOR;

typedef struct
{
	float flMatrix[4][4];
}WorldToScreenMatrix_t;

float Get3dDistance(float * myCoords, float * enemyCoords)
{
	return sqrt(
		pow(double(enemyCoords[0] - myCoords[0]), 2.0) +
		pow(double(enemyCoords[1] - myCoords[1]), 2.0) +
		pow(double(enemyCoords[2] - myCoords[2]), 2.0));

}


void SetupDrawing(HDC hDesktop, HWND handle)
{
	HDC_Desktop = hDesktop;
	Handle = handle;
	EnemyBrush = CreateSolidBrush(RGB(255, 0, 0));
	//Color
	SnapLineCOLOR = RGB(0, 0, 255);
	TextCOLOR = RGB(0, 255, 0);
}


struct MyPlayer_t
{
	DWORD CLocalPlayer;
	int Team;
	int Health;
	WorldToScreenMatrix_t WorldToScreenMatrix;
	float Position[3];
	void ReadInformation()
	{
		ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + Player_Base), &CLocalPlayer, sizeof(DWORD), 0);
		ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CLocalPlayer + dw_mTeamOffset), &Team, sizeof(int), 0);   
		ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CLocalPlayer + dw_Health), &Health, sizeof(int), 0); 
		ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CLocalPlayer + dw_Pos), &Position, sizeof(float[3]), 0);
	}
}MyPlayer;

struct PlayerList_t
{
	DWORD CBaseEntity;
	int Team;
	int Health;
	float Position[3];

	void ReadInformation(int Player)
	{
		ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + EntityPlayer_Base + (Player * EntityLoopDistance)), &CBaseEntity, sizeof(DWORD), 0);
		ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_mTeamOffset), &Team, sizeof(int), 0);   
		ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_Health), &Health, sizeof(int), 0);
		ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_Pos), &Position, sizeof(float[3]), 0);
	}
}PlayerList[10];


bool WorldToScreen(float * from, float * to)
{
	float w = 0.0f;

	to[0] = MyPlayer.WorldToScreenMatrix.flMatrix[0][0] * from[0] + MyPlayer.WorldToScreenMatrix.flMatrix[0][1] * from[1] + MyPlayer.WorldToScreenMatrix.flMatrix[0][2] * from[2] + MyPlayer.WorldToScreenMatrix.flMatrix[0][3];
	to[1] = MyPlayer.WorldToScreenMatrix.flMatrix[1][0] * from[0] + MyPlayer.WorldToScreenMatrix.flMatrix[1][1] * from[1] + MyPlayer.WorldToScreenMatrix.flMatrix[1][2] * from[2] + MyPlayer.WorldToScreenMatrix.flMatrix[1][3];
	w = MyPlayer.WorldToScreenMatrix.flMatrix[3][0] * from[0] + MyPlayer.WorldToScreenMatrix.flMatrix[3][1] * from[1] + MyPlayer.WorldToScreenMatrix.flMatrix[3][2] * from[2] + MyPlayer.WorldToScreenMatrix.flMatrix[3][3];

	if (w < 0.01f)
		return false;

	float invw = 1.0f / w;

	to[0] *= invw;
	to[1] *= invw;

	int width = (int)(m_Rect.right - m_Rect.left);
	int height = (int)(m_Rect.bottom - m_Rect.top);

	float x = width / 2;
	float y = height / 2;

	x += 0.5 * to[0] * width + 0.5;
	y -= 0.5 * to[1] * height + 0.5;

	to[0] = x + m_Rect.left;
	to[1] = y + m_Rect.top;

	return true;
}


void DrawFilledRect(int x, int y, int w, int h)
{
	RECT rect = { x, y, x + w, y + h };
	FillRect(HDC_Desktop, &rect, EnemyBrush);
}


void DrawBorderBox(int x, int y, int w, int h, int thickness)
{
	DrawFilledRect(x, y, w, thickness);
	DrawFilledRect(x, y, thickness, h);
	DrawFilledRect((x + w), y, thickness, h);
	DrawFilledRect(x, y + h, w + thickness, thickness);
}


void DrawLine(float StartX, float StartY, float EndX, float EndY, COLORREF Pen)
{
	int a, b = 0;
	HPEN hOPen;
	HPEN hNPen = CreatePen(PS_SOLID, 2, Pen);
	hOPen = (HPEN)SelectObject(HDC_Desktop, hNPen);
	MoveToEx(HDC_Desktop, StartX, StartY, NULL);
	a = LineTo(HDC_Desktop, EndX, EndY);
	DeleteObject(SelectObject(HDC_Desktop, hOPen));
}


void DrawString(int x, int y, COLORREF color, const char* text)
{
	SetTextAlign(HDC_Desktop, TA_CENTER | TA_NOUPDATECP);

	SetBkColor(HDC_Desktop, RGB(0, 0, 0));
	SetBkMode(HDC_Desktop, TRANSPARENT);

	SetTextColor(HDC_Desktop, color);

	SelectObject(HDC_Desktop, Font);

	TextOutA(HDC_Desktop, x, y, text, strlen(text));

	DeleteObject(Font);
}


void DrawESP(int x, int y, float distance)
{
	//ESP RECTANGLE
	int width = 18100 / distance;
	int height = 36000 / distance;
	DrawBorderBox(x - (width / 2), y - height, width, height, 1);

	//Sandwich ++
	DrawLine((m_Rect.right - m_Rect.left) / 2,
		m_Rect.bottom - m_Rect.top, x, y,
		SnapLineCOLOR);


}

void ESP()
{
	GetWindowRect(FindWindow(NULL, "Counter-Strike Global Offensive"), &m_Rect);

	for (int i = 0; i < NumofPlayers; i++)
	{
		PlayerList[i].ReadInformation(i);

		if (PlayerList[i].Health < 2)
			continue;


		float EnemyXY[3];
			if (WorldToScreen(PlayerList[i].Position, EnemyXY))
			{
				DrawESP(EnemyXY[0] - m_Rect.left, EnemyXY[1] - m_Rect.top, Get3dDistance(MyPlayer.Position, PlayerList[i].Position));
			}

	}

}

struct GlowObjectDefinition_t
{
	void* pEntity;
	float r;
	float g;
	float b;
	float a;
	uint8_t unk1[16];
	bool m_bRenderWhenOccluded;
	bool m_bRenderWhenUnoccluded;
	bool m_bFullBloom;
	uint8_t unk2[10];
};


int main()
{
	fProcess.RunProcess();
	ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);
	TargetWnd = FindWindow(0, "Counter-Strike Global Offensive");
	HDC HDC_Desktop = GetDC(TargetWnd);
	SetupDrawing(HDC_Desktop, TargetWnd);



	while (!GetAsyncKeyState(0x75))
		{
			MyPlayer.ReadInformation();
			ESP();
		}
	return 0;
}
Thanks a lot !

best regards
 
Last edited:

Obsta

Jr.Hacker
Meme Tier VIP
Jan 27, 2014
394
2,978
17
Just a heads up for when you solve it, using this draw method causes insane flickering so cap your in-game fps to 60 to reduce it. On top of this it makes the game quite unplayable because it feels like its fps spiking quite badly.
 

clientdll

Newbie
Full Member
Mar 8, 2015
9
82
0
Big thanks for the Answers guys !!

Don't trust Broihon, he is here only for codes and his english is not the best.

But here are some things I found in your code.
1. You don't need to include any headers in Source file if you already included them in Header file.
2. You have a wrong window string in the ESP function
You meant the String of the Windowname?

C++:
GetWindowRect(FindWindow(NULL, "Counter-Strike Global Offensive"), &m_Rect);

Where is the bad here? Isnt the Window correctly?

#edit I saw, theres no ":" ill try it out now !! Thank you !!

Just a heads up for when you solve it, using this draw method causes insane flickering so cap your in-game fps to 60 to reduce it. On top of this it makes the game quite unplayable because it feels like its fps spiking quite badly.
Im shitting on the flicking :D I only want to know how to get drawed anything :D but thanks :)
 

clientdll

Newbie
Full Member
Mar 8, 2015
9
82
0
I removed the includitions at my main.cpp and i fixed the lines:
C++:
	GetWindowRect(FindWindow(NULL, "Counter-Strike: Global Offensive"), &m_Rect);
@Line188(ESP Function)
and this line:
C++:
	TargetWnd = FindWindow(0, "Counter-Strike: Global Offensive");
@Line213(Main function)
It isnt working :(
It isnt drawing anythink :( But thanks for the help
 

Obsta

Jr.Hacker
Meme Tier VIP
Jan 27, 2014
394
2,978
17
I removed the includitions at my main.cpp and i fixed the lines:
C++:
	GetWindowRect(FindWindow(NULL, "Counter-Strike: Global Offensive"), &m_Rect);
@Line188(ESP Function)
and this line:
C++:
	TargetWnd = FindWindow(0, "Counter-Strike: Global Offensive");
@Line213(Main function)
It isnt working :(
It isnt drawing anythink :( But thanks for the help
Whats the error you're getting?

Edit: Is it compiling? I noticed you specified two lines.
 

clientdll

Newbie
Full Member
Mar 8, 2015
9
82
0
Well, I can't help you, I'm not ogod enough with d3d stuff. sorry

Its no problem :) But thank you for your employment anyways :D

Whats the error you're getting?

Edit: Is it compiling? I noticed you specified two lines.

Its compiling. All of "Grammatical things" are Ok. But it isnt drawing when i start it :/ Vs ist started as Admin.
But thanks for your Answer :D
 

Obsta

Jr.Hacker
Meme Tier VIP
Jan 27, 2014
394
2,978
17
Then you have to debug it line by line. Look if the handles are valid, check pointer, print all that crap to a console to verify it...
This, but first try calling a drawstring function at the start of your ESP method just to verify that you can write to the screen, if that doesn't work then you can start by checking the handles then the addresses/offsets + math.
 

clientdll

Newbie
Full Member
Mar 8, 2015
9
82
0
This, but first try calling a drawstring function at the start of your ESP method just to verify that you can write to the screen, if that doesn't work then you can start by checking the handles then the addresses/offsets + math.
Thanks for your answer ! I rewrote some things and i get the calculated things rightly. The offsets should be right by checking the memoryreading values. But how i can check the Math?

I think i cant write to the screen. I dont know why :/

(Sry for beeing noob && bad english)
 
Attention! Before you post:

Read the How to Ask Questions Guide
99% of questions are answered in the Beginner's Guide, do it before asking a question.

No Hack Requests. Post in the correct section.  Search the forum first. Read the rules.

How to make a good post:

  • Fill out the form correctly
  • Tell us the game name & coding language
  • Post everything we need to know to help you
  • Ask specific questions, be descriptive
  • Post errors, line numbers & screenshots
  • Post code snippets using code tags
  • If it's a large project, zip it up and attach it

If you do not comply, your post may be deleted.  We want to help, please make a good post and we will do our best to help you.

Similar threads

Community Mods