Перейти к содержанию

Рекомендуемые сообщения

Всем привет ! Создал я Whallhack по Урокам Fleep Hacks , он создавал для CS:S , я для CS:GO , у  меня есть ошибки , почему то криво работает WH:http://prntscr.com/7eiwfj

При повороте камеры вообще смещаются куда-то боксы: http://prntscr.com/7eixv1

Помогите , если не сложно.

И еще , что то не так с дистанцией.

Ссылка на комментарий
Поделиться на другие сайты

вот подробное видео: https://www.youtube.com/watch?v=hVlzn6ByQ4Y&feature=youtu.be

NullAlex: так как товарищ CybioZ не использует тег спойлера, и игнорирует устное предупреждение, более того - убирает их, то получает соответствующее наказание, в виде 1 балла предупреждения.

#include <Windows.h>#include <sstream>#include <iostream> #include <math.h>  #include "HackProcess.h"#include <vector>#include <algorithm>   /*----------------AIMBOT RELATED CODE------------------*///Create our 'hooking' and process managing objectCHackProcess fProcess;  using namespace std;  //We use F6 to exit the hack#define F6_Key 0x75//right click#define RIGHT_MOUSE 0x02//Here we store the num of players and update it regularly to know how many enemies we are dealing with//this saves us doing loops unless their necessary e.g. we have 12 players and still loop 32 times wasting our great resources//This makes our triggerbot MUCH faster in generalint NumOfPlayers = 10;const DWORD dw_PlayerCountOffs = 0x94D868;//Engine.dll//The player base is VERY important so we know where our player info is at//including current jump status so we can use force jumping making our bHopconst DWORD Player_Base = 0xA74C9C;//0x00574560;//The ATTACK address BELOW, WE WRITE 5 TO SHOOT OR 4 TO const DWORD dw_mTeamOffset = 0xF0;//clientconst DWORD dw_Health = 0xFC;//client//FOR the x coord we can use cl_pdump for m_vecOrigin Vector or just move around the map looking for different values//e.g. to find y coordinate walk up ladder search up, walk down search down etc.const DWORD dw_Position = 0x134;//client//Enemy Vars including the enemy loopconst DWORD EntityPlayer_Base = 0x4A16BD4;//How far in memory is each enemy dataconst DWORD EntityLoopDistance = 0x10; //04A16BD4//ViewAngles//We find these by moving our mouse around constantly looking for changed/unchanged value,//the alternative is to use cl_pdump 1 and search for the value assigned to m_angRotation vector//const DWORD dw_m_angRotation = 0x4A5F9B0;RECT m_Rect; //Set of initial variables you'll need//Our desktop handleHDC HDC_Desktop;//Brush to paint ESP etcHBRUSH EnemyBrush;HFONT Font; //font we use to write text with//ESP VARSconst DWORD ViewMatrix = 0x4A0C164;//const DWORD dw_antiFlick = ;HWND targetWnd;HWND Handle;DWORD DwProcId;COLORREF SnapLineColor;COLORREF TextColor;typedef struct{	float flMatrix[4][4];}WorldToScreenMatrix_t;float Get3Distance(float * myCoords, float * enemyCoords){	return sqrt(		pow(double(enemyCoords[0] - myCoords[0]), 2.0) +		pow(double(enemyCoords[1] - myCoords[0]), 2.0) +		pow(double(enemyCoords[2] - myCoords[0]), 2.0) 		);}void SetupDrawing(HDC hDestop, HWND handle){	HDC_Desktop = hDestop;	Handle = handle;	EnemyBrush = CreateSolidBrush(RGB(255, 0, 0));	SnapLineColor = RGB(0, 0, 255);	TextColor = RGB(0, 255, 0);}//We will use this struct throughout all other tutorials adding more variables every timestruct MyPlayer_t  { 	DWORD CLocalPlayer; 	int Team; 	int Health; 	WorldToScreenMatrix_t WorldToScreenMatrix;	float Position[0]; 	//	int flikerCheck;//не настроено	void ReadInformation() 	{		// Reading CLocalPlayer Pointer to our "CLocalPlayer" DWORD. 		ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + Player_Base), &CLocalPlayer, sizeof(DWORD), 0);		// Reading out our Team to our "Team" Varible. 		ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(CLocalPlayer + dw_mTeamOffset), &Team, sizeof(int), 0);		// Reading out our Health to our "Health" Varible.     		ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(CLocalPlayer + dw_Health), &Health, sizeof(int), 0); 		// Reading out our Position to our "Position" Varible. 		ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(CLocalPlayer + dw_Position), &Position, sizeof(float[3]), 0); 		//Here we find how many player entities exist in our game, through this we make sure to only loop the amount of times we need		//when grabbing player data		//Note that this call could be even better at a regular 15 or so seconds timer but performance shouldn't vary a great deal		ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordServer + dw_PlayerCountOffs), &NumOfPlayers, sizeof(int),0);						//VMATRIX		ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + ViewMatrix), &WorldToScreenMatrix , sizeof(WorldToScreenMatrix), 0);	}}MyPlayer;    //ENemy structstruct PlayerList_t {	DWORD CBaseEntity; 	int Team; 	int Health; 	float Position[3]; 	//float AimbotAngle[3]; //	char Name[39]; 	void ReadInformation(int Player) 	{		// Reading CBaseEntity Pointer to our "CBaseEntity" DWORD + Current Player in the loop. 0x10 is the CBaseEntity List Size 		//"client.dll"+00545204 //0x571A5204		ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient +EntityPlayer_Base + (Player * EntityLoopDistance)),&CBaseEntity, sizeof(DWORD), 0);		// Reading out our Team to our "Team" Varible. 		ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_mTeamOffset), &Team, sizeof(int), 0);		// Reading out our Health to our "Health" Varible.     		ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_Health), &Health, sizeof(int), 0); 		// Reading out our Position to our "Position" Varible. 		ReadProcessMemory (fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_Position), &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;	x -= 0.5 * to[1] * width + 0.5;	to[0] = x + m_Rect.left;	to[1] = y+ m_Rect.top;}//We receive the 2-D Coordinates the colour and the device we want to use to draw those colours with//HDC so we know where to draw and brush because we need it to drawvoid DrawFilledRect(int x, int y, int w, int h){	//We create our rectangle to draw on screen	RECT rect = { x, y, x + w, y + h }; 	//We clear that portion of the screen and display our rectangle	FillRect(HDC_Desktop, &rect, EnemyBrush);}void DrawBorderBox(int x, int y, int w, int h, int thickness){	//Top horiz line	DrawFilledRect(x, y, w, thickness);	//Left vertical line	DrawFilledRect( x, y, thickness, h);	//right vertical line	DrawFilledRect((x + w), y, thickness, h);	//bottom horiz line	DrawFilledRect(x, y + h, w+thickness, thickness);}//Here is where we draw our line from point A to Point Bvoid DrawLine(float StartX, float StartY, float EndX, float EndY, COLORREF Pen){	int a,b=0;	HPEN hOPen;	// penstyle, width, color	HPEN hNPen = CreatePen(PS_SOLID, 2, Pen);	hOPen = (HPEN)SelectObject(HDC_Desktop, hNPen);	// starting point of line	MoveToEx(HDC_Desktop, StartX, StartY, NULL);	// ending point of line	a = LineTo(HDC_Desktop, EndX, EndY);	DeleteObject(SelectObject(HDC_Desktop, hOPen));}//Draw our text with this functionvoid 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 = 50;             int height = 100;        	DrawBorderBox(x - (width/2), y-height, width, height, 1);	DrawLine((m_Rect.right - m_Rect.left)/2,		m_Rect.bottom - m_Rect.top, x, y, SnapLineColor);	std::stringstream ss;	ss << (int)distance;	char *distanceInfo = new char[ss.str().size() + 1];	strcpy(distanceInfo, ss.str().c_str());	DrawString(x, y, TextColor, distanceInfo);	delete[] distanceInfo;}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;				if (PlayerList[i].Team ==MyPlayer.Team)			continue;		float EnemyXY[3];		if (WorldToScreen(PlayerList[i].Position, EnemyXY))		{		DrawESP(EnemyXY[0] - m_Rect.left, EnemyXY[1] - m_Rect.top, Get3Distance(MyPlayer.Position, PlayerList[i].Position));		}	}}int main(){	//Do we have OUR CSS GAME?	fProcess.RunProcess(); 	ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);	targetWnd = FindWindow(0, "Counter-Strike: Global Offensive");	//Our infinite loop will go here	HDC HDC_Desktop=GetDC(targetWnd);	SetupDrawing(HDC_Desktop, targetWnd);//while(true){	//	MyPlayer.ReadInformation();	//	   //   	printf("Health:%d %sTeam: %d", MyPlayer.Health, "\n", MyPlayer.Team);	//}		for (;		{			MyPlayer.ReadInformation();				ESP();		}					return 0;}//КОД
Ссылка на комментарий
Поделиться на другие сайты

Расскажу.. Кароче , там у меня была ошибка в коде:

	[spoiler]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;x -= 0.5 * to[1] * width + 0.5;to[0] = x + m_Rect.left;[/spoiler]	to[1] = y+ m_Rect.top;

а должно быть так:

x += 0.5 * to[0] * width + 0.5;

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


Но мне требуется еще кое-какая помощь , у меня esp не работает в фуллскрине. и еще эти гребаные мерцания. Смотрел у флипа как он с этими мерцаниями справился: он нашел flikercheck и по нему делал анти-мерцания. А я тут спросил на американских форумах , как же можно другим способом от этих мерцаний избавиться , на что они мне говорят : двойная буферизация, ну я залез в google , почитал про нее , немного разобрался, а как реализовать мне ее в моем проекте я не знаю :( По этому прошу помочь мне , кто знает , как мне пофиксить мерцания с помощью "двойной буферизации". 

Буду очень благодарен :D

Ссылка на комментарий
Поделиться на другие сайты

Если ты делаешь хук на DirectX, то мерцания у тебя не должно быть. А если просто делаешь средствами GDI, то тебе надо сначала отрисовывать все в фоновый буфер, а потом блиттингом выводить на основной DC окна. Таким образом и получится антимерцание. Но, опять же, если ты рисуешь поверх DX окна, не факт, что такой способ действительно поможет тебе избавиться от мерцания.

Ссылка на комментарий
Поделиться на другие сайты

Если ты делаешь хук на DirectX, то мерцания у тебя не должно быть. А если просто делаешь средствами GDI, то тебе надо сначала отрисовывать все в фоновый буфер, а потом блиттингом выводить на основной DC окна. Таким образом и получится антимерцание. Но, опять же, если ты рисуешь поверх DX окна, не факт, что такой способ действительно поможет тебе избавиться от мерцания.

Пишу по средству GDI. И как мне реализовать эту дабл буферизацию

Ссылка на комментарий
Поделиться на другие сайты

Алгоритмически:

1. Получаешь контекст устройства нужного окна (основной контекст)

2. Создаешь совместимый контекст на основе полученного контекста (контекст памяти или задний буфер)

3. Создаешь совместимый битмап (или диб-секцию) на основе контекста окна (основного контекста)

4. Назначаешь этот битмап контексту памяти (заднему буферу).

5. Рисуешь на контекст памяти

6. Блиттингом копируешь контекст памяти в контекст устройства.

 

Все функции необходимые найдешь в мсдн. Если не разберешься, подскажу реализацию,  но сначала попробуй сам.

Ссылка на комментарий
Поделиться на другие сайты

Код:

#include 

#include
#include
#include
#include
#include
#include "HackProcess.h"

CHackProcess fProcess;
using namespace std;


const DWORD Player_Base = 0x
const DWORD dw_inGameBase = 0x0
const DWORD dw_mTeamOffset = 0x0;//client
const DWORD dw_Health = 0x0;//client
const DWORD dw_Dormant = 0x0;
const DWORD dw_inGame = 0x0;
const DWORD dw_Position = 0x0;//client
const DWORD EntityPlayer_Base = 0x0;
//How far in memory is each enemy data
const DWORD EntityLoopDistance = 0x10;
bool Key_STATES = false;
RECT m_Rect;



//Our desktop handle
HDC HDC_Desktop;
HBRUSH EnemyBrush;//font we use to write text with


COLORREF LINESCOLOR;
COLORREF HEALTHCOLOR;
COLORREF DISTANCECOLOR;


HWND TargetWnd;
HWND Handle;
DWORD DwProcId;

HFONT Font; //font we use to write text with
//ESP VARS
const DWORD ViewMatrix = 0x4A0C1A4; //4A0D16


//Set of initial variables you'll need

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(151, 200, 237));
LINESCOLOR = RGB(0, 255, 0);
HEALTHCOLOR = RGB(255, 0, 0);
DISTANCECOLOR = RGB(83, 178, 3);
}
//We will use this struct throughout all other tutorials adding more variables every time
struct MyPlayer_t
{
DWORD CLocalPlayer;
DWORD Engine;
int Team;
int Health;
int FlickerCheck;
int inGAME;//6 in game 0 in menu;
WorldToScreenMatrix_t WorldToScreenMatrix;
float Position[3];

void ReadInformation()
{
// Reading CLocalPlayer Pointer to our "CLocalPlayer" DWORD.
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + Player_Base), &CLocalPlayer, sizeof(DWORD), 0);
// Reading out our Team to our "Team" Varible.
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordEngine + dw_inGameBase), &Engine, sizeof(DWORD), 0);
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(Engine + dw_inGame), &inGAME, sizeof(int), 0);
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CLocalPlayer + dw_mTeamOffset), &Team, sizeof(int), 0);
// Reading out our Health to our "Health" Varible.
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CLocalPlayer + dw_Health), &Health, sizeof(int), 0);
// Reading out our Position to our "Position" Varible.
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CLocalPlayer + dw_Position), &Position, sizeof(float[3]), 0);
//engine.dll+5CE294
//Here we find how many player entities exist in our game, through this we make sure to only loop the amount of times we need
//when grabbing player data
//Note that this call could be even better at a regular 15 or so seconds timer but performance shouldn't vary a great deal

//client.dll+4A0C196

ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + ViewMatrix), &WorldToScreenMatrix, sizeof(WorldToScreenMatrix), 0);
}
}MyPlayer;



//ENemy struct
struct PlayerList_t
{
DWORD CBaseEntity;
int Team;
int Health;
float Position[3];
int dormant;
void ReadInformation(int Player)
{
// Reading CBaseEntity Pointer to our "CBaseEntity" DWORD + Current Player in the loop. 0x10 is the CBaseEntity List Size
//"client.dll"+00545204 //0x571A5204
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + EntityPlayer_Base + (Player * EntityLoopDistance)), &CBaseEntity, sizeof(DWORD), 0);
// Reading out our Team to our "Team" Varible.
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_mTeamOffset), &Team, sizeof(int), 0);
// Reading out our Health to our "Health" Varible.
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_Health), &Health, sizeof(int), 0);
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_Dormant), &dormant, sizeof(byte), 0);

// Reading out our Position to our "Position" Varible.
ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(CBaseEntity + dw_Position), &Position, sizeof(float[3]), 0);
}
}PlayerList[64];

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

//We receive the 2-D Coordinates the colour and the device we want to use to draw those colours with
//HDC so we know where to draw and brush because we need it to draw
void DrawFilledRect(int x, int y, int w, int h)
{
//We create our rectangle to draw on screen
RECT rect = { x, y, x + w, y + h };
//We clear that portion of the screen and display our rectangle
FillRect(HDC_Desktop, &rect, EnemyBrush);
}


void DrawBorderBox(int x, int y, int w, int h, int thickness)
{
//Top horiz line
DrawFilledRect(x, y, w, thickness);
//Left vertical line
DrawFilledRect(x, y, thickness, h);
//right vertical line
DrawFilledRect((x + w), y, thickness, h);
//bottom horiz line
DrawFilledRect(x, y + h, w + thickness, thickness);
}


//Here is where we draw our line from point A to Point B
void DrawLine(float StartX, float StartY, float EndX, float EndY, COLORREF Pen)
{
int a, b = 0;
HPEN hOPen;
// penstyle, width, color
HPEN hNPen = CreatePen(PS_SOLID, 1, Pen);
hOPen = (HPEN)SelectObject(HDC_Desktop, hNPen);
// starting point of line
MoveToEx(HDC_Desktop, StartX, StartY, NULL);
// ending point of line
a = LineTo(HDC_Desktop, EndX, EndY);
DeleteObject(SelectObject(HDC_Desktop, hOPen));
}

//Draw our text with this function
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,int health,float distance)
{
int width = 32;
int height = 56;
DrawBorderBox(x - (width / 2), y - height, width, height, 1);
DrawLine((m_Rect.right - m_Rect.left)/2,
m_Rect.bottom - m_Rect.top, x, y, LINESCOLOR);
std::stringstream hp, dist;
hp<< health;
dist << (int)distance/8 - 3;
char * Distanceinfo = new char[dist.str().size() + 1];
strcpy(Distanceinfo, dist.str().c_str());

char * HealthInfo = new char[hp.str().size() + 1];
strcpy(HealthInfo, hp.str().c_str());

DrawString(x, y-14, HEALTHCOLOR, HealthInfo);
DrawString(x, y - 69, DISTANCECOLOR, Distanceinfo);
delete[] HealthInfo, Distanceinfo;
}
void ESP()
{
GetWindowRect(FindWindow(NULL, "Counter-Strike: Global Offensive"), &m_Rect);
for (int i = 0; i < 64;i++)
{
PlayerList.ReadInformation(i);
if (MyPlayer.inGAME == 6) {
if (PlayerList.Health < 1 || PlayerList.Health >100)
continue;
if (PlayerList.dormant == 1)
continue;
if (PlayerList.Team == MyPlayer.Team)
continue;

float EnemyXY[3];
if (WorldToScreen(PlayerList.Position, EnemyXY))
{
DrawESP(EnemyXY[0] - m_Rect.left, EnemyXY[1] - m_Rect.top, PlayerList.Health, Get3dDistance(MyPlayer.Position, PlayerList.Position));
// DrawESP(EnemyXY[0] - m_Rect.left, EnemyXY[1] - m_Rect.top, Get3dDistance(MyPlayer.Position,PlayerList.Position)); //(MyPlayer.Position, PlayerList.Position),
}
}
}
}
int main()
{
cout << "****************************** ESP HACK by Cybioz *******************************" << endl;
cout << "* *" << endl;
cout << "* Activation-[DEL] *" << endl;
cout << "* Deactivation-[iNSERT] *" << endl;
cout << "* *" << endl;
cout << "*******************************************************************************" << endl;
fProcess.RunProcess();
ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);
TargetWnd = FindWindow(0, "Counter-Strike: Global Offensive");
HDC hdc_Desktop = GetDC(TargetWnd);
SetupDrawing(hdc_Desktop,TargetWnd);
//Our infinite loop will go here
while (Key_STATES == false)
{
if (GetAsyncKeyState(VK_DELETE))
{
Key_STATES = true;
while (true) {
MyPlayer.ReadInformation();
ESP();
if (GetAsyncKeyState(VK_INSERT))
{
Key_STATES = false;
break;

}
}
}
}
return 0;
}

тут же уже готово получение окна и т.д , я единственное не могу сделать  , чтобы не мелькало.. 


1 пункт сделал.. А следующие не понятны 

Изменено пользователем CybioZ
Ссылка на комментарий
Поделиться на другие сайты

Ты в коде опять же делаешь вывод сразу на контекст устройства рабочего стола. А тебе нужно делать вывод на совместимый контекст в памяти, и уже после построения кадра на нем блиттингом копировать контекст памяти на контекст устройства. Функции, которые тебе понадобятся:

GetDC

CreateCompatibleDC

CreateCompatibleBitmap

SelectObject

BitBlt

А теперь можешь идти в мсдн, читать описания и разбираться. Если совсем уж не получится, подскажу пример кода с блиттингом. Под свои нужды, думаю, сможешь адаптировать. Но это будет не раньше понедельника, так что время подумать у тебя есть.

Ссылка на комментарий
Поделиться на другие сайты

Код под себя взял , но единственное , не понимаю как им правильно воспользоваться.. взял в пример AsaultCube эффекта 0 

HDC hdc; // мой hdc?

HDC hdcMem; // HDC игры.

HBITMAP buffer; // не понимаю как это реализуется. 

там еще 3 параметра: UINT message, WPARAM wParam, LPARAM lParam ---- пытался найти в интернете про  2  последних , не понял , зачем их нужно указывать 

пробовал нарисовать не получалось ничего.

помоги пожалуйста !

NullAlex: Когда научишься использовать тег спойлера? Второе предупреждение, за третьим последует РО.

#include "Windows.h"#include "iostream"HDC _hgame;HWND _wgame;#define IDM_EXIT 100COLORREF color = 0;RECT rect = { 220, 220, 220, 220 };HDC hdc;HDC hdcMem;HBITMAP buffer;const UINT_PTR timerPtr = 1;void ReDrawElipse(HWND hWnd){	COLORREF white = RGB(255, 0, 0);	HBRUSH newBrush = ::CreateSolidBrush(white);	HBRUSH oldBrush = (HBRUSH)::SelectObject(hdcMem, newBrush);	::Rectangle(hdcMem, rect.left - 1, rect.top - 1, rect.right + 1, rect.bottom + 1);	::DeleteObject((HGDIOBJ)oldBrush);	color = RGB(rand() % 256, rand() % 256, rand() % 256);	newBrush = ::CreateSolidBrush(color);	oldBrush = (HBRUSH)::SelectObject(hdcMem, newBrush);	::Ellipse(hdcMem, rect.left, rect.top, rect.right, rect.bottom);	::DeleteObject((HGDIOBJ)oldBrush);	::InvalidateRect(hWnd, &rect, false);}////  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)////  PURPOSE:  Processes messages for the main window.////  WM_COMMAND  - process the application menu//  WM_PAINT    - Paint the main window//  WM_DESTROY  - post a quit message and return////LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){	int wmId, wmEvent;	PAINTSTRUCT paintStruct;	switch (message)	{	case WM_CREATE:	{		hdc = ::BeginPaint(hWnd, &paintStruct);		hdcMem = ::CreateCompatibleDC(hdc);		buffer = ::CreateCompatibleBitmap(hdc, rect.right, rect.bottom);		::SelectObject(hdcMem, buffer);		::EndPaint(hWnd, &paintStruct);		ReDrawElipse(hWnd);		::SetTimer(hWnd, timerPtr, 1000, NULL);	}	break;	case WM_COMMAND:		wmId = LOWORD(wParam);		wmEvent = HIWORD(wParam);		// Parse the menu selections:		switch (wmId)		{		case IDM_EXIT:			::SendMessageA(hWnd, WM_DESTROY, NULL, NULL);			break;		default:			return DefWindowProc(hWnd, message, wParam, lParam);		}		break;	case WM_PAINT:	{		hdc = ::BeginPaint(hWnd, &paintStruct);		::BitBlt(hdc, rect.left, rect.top, rect.right, rect.bottom, hdcMem, rect.left, rect.top, SRCCOPY);		::EndPaint(hWnd, &paintStruct);	}	break;	case WM_TIMER:	{		switch (wParam)		{		case timerPtr:		{			ReDrawElipse(hWnd);		}		break;		}	}	break;	case WM_DESTROY:	{		::DeleteObject(buffer);		::ReleaseDC(hWnd, hdc);		::PostQuitMessage(0);	}	break;	default:		return DefWindowProc(hWnd, message, wParam, lParam);	}	return 0;}int main(){	_wgame = FindWindowA(0, "AssaultCube");	hdcMem = GetDC(_wgame);	HWND hwnd = GetConsoleWindow();	HDC dc = GetDC(hwnd);	WndProc(_wgame, 25, 30, 25);	std::system("pause");	return 0;}
Ссылка на комментарий
Поделиться на другие сайты

case WM_CREATE:	{		hdc = ::BeginPaint(hWnd, &paintStruct);		hdcMem = ::CreateCompatibleDC(hdc);		buffer = ::CreateCompatibleBitmap(hdc, rect.right, rect.bottom);		::SelectObject(hdcMem, buffer);		::EndPaint(hWnd, &paintStruct);		ReDrawElipse(hWnd);		::SetTimer(hWnd, timerPtr, 1000, NULL);	}	break;

Насколько мне известно, BeginPaint/EndPaint используются только в обработчике WM_PAINT. Чтобы получить необходимый DC для создания совместимого контекста в памяти, тебе нужно вызвать функцию GetDC и передать ей хендл целевого окна. Исправляй. В остальном, вроде, все правильно. Но просмотрел бегло, потому не факт. И да, не забывай убирать большие куски кода под спойлер.

Ссылка на комментарий
Поделиться на другие сайты

И что? У тебя это не указатель, а число. А когда пытаешься развернуть, студия пытается интерпретировать число как указатель, и, естественно, не может прочитать ничего из такого адреса. Это не является ошибкой самой программы. Ну и, наконец, что-то как-то не совсем понятно, к чему ты это написал.

Ссылка на комментарий
Поделиться на другие сайты

Не получается мне эту хрень написать..

Лучше перевести это на DerectX с менюшкой , только я не умею.

Ты бы получше посмотрел! Один мой друг выложил в паблик свою менюшку

Но даже она тебе не поможет, если ты 2 + 2 сложить не можешь.

Ссылка на комментарий
Поделиться на другие сайты

Файл:http://rghost.ru/6bpNSYdnH

VT:https://www.virustotal.com/ru/file/b48b7b6be63d6705551e20553dc0d7f2dfeb75d83396f4b527dc4281a6e992a3/analysis/1434821946/

вот хороший проект , там нету ни мерцаний ничего лишнего.. только не знаю как туда перенести мой чит. меню на Directx'e.

Изменено пользователем CybioZ
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.