CybioZ Опубликовано 8 июня, 2015 Поделиться Опубликовано 8 июня, 2015 Всем привет ! Создал я Whallhack по Урокам Fleep Hacks , он создавал для CS:S , я для CS:GO , у меня есть ошибки , почему то криво работает WH:http://prntscr.com/7eiwfjПри повороте камеры вообще смещаются куда-то боксы: http://prntscr.com/7eixv1Помогите , если не сложно.И еще , что то не так с дистанцией. Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 8 июня, 2015 Поделиться Опубликовано 8 июня, 2015 CybioZ, предоставь код, так не понятно в чем проблема. Посмотри уроки:http://www.youtube.com/watch?v=0Bcm4IpSu6M&index=1&list=PLc_QQC_Xnp8ux5c0Fv13QvJy7BJ4qBOKXhttp://www.youtube.com/watch?v=qzh6nL85SHs&index=2&list=PLc_QQC_Xnp8ux5c0Fv13QvJy7BJ4qBOKXhttp://www.youtube.com/watch?v=VnXvTEH0NK0&index=3&list=PLc_QQC_Xnp8ux5c0Fv13QvJy7BJ4qBOKXhttp://www.youtube.com/watch?v=BDh6nThzUNU&index=4&list=PLc_QQC_Xnp8ux5c0Fv13QvJy7BJ4qBOKX Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 8 июня, 2015 Автор Поделиться Опубликовано 8 июня, 2015 вот подробное видео: https://www.youtube.com/watch?v=hVlzn6ByQ4Y&feature=youtu.beNullAlex: так как товарищ 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;}//КОД Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 9 июня, 2015 Автор Поделиться Опубликовано 9 июня, 2015 Нашел ошибку. Ссылка на комментарий Поделиться на другие сайты Поделиться
KaLaSh Опубликовано 15 июня, 2015 Поделиться Опубликовано 15 июня, 2015 Нашел ошибку.Расскажи в чем ошибка была, интересно же 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Laziz Опубликовано 16 июня, 2015 Поделиться Опубликовано 16 июня, 2015 Расскажи в чем ошибка была, интересно же Не жди, не расскажет, если он нашел то уже рассказал бы. Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 16 июня, 2015 Автор Поделиться Опубликовано 16 июня, 2015 Расскажу.. Кароче , там у меня была ошибка в коде: [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 , почитал про нее , немного разобрался, а как реализовать мне ее в моем проекте я не знаю По этому прошу помочь мне , кто знает , как мне пофиксить мерцания с помощью "двойной буферизации". Буду очень благодарен Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 17 июня, 2015 Поделиться Опубликовано 17 июня, 2015 Если ты делаешь хук на DirectX, то мерцания у тебя не должно быть. А если просто делаешь средствами GDI, то тебе надо сначала отрисовывать все в фоновый буфер, а потом блиттингом выводить на основной DC окна. Таким образом и получится антимерцание. Но, опять же, если ты рисуешь поверх DX окна, не факт, что такой способ действительно поможет тебе избавиться от мерцания. Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 17 июня, 2015 Автор Поделиться Опубликовано 17 июня, 2015 Если ты делаешь хук на DirectX, то мерцания у тебя не должно быть. А если просто делаешь средствами GDI, то тебе надо сначала отрисовывать все в фоновый буфер, а потом блиттингом выводить на основной DC окна. Таким образом и получится антимерцание. Но, опять же, если ты рисуешь поверх DX окна, не факт, что такой способ действительно поможет тебе избавиться от мерцания.Пишу по средству GDI. И как мне реализовать эту дабл буферизацию Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 17 июня, 2015 Поделиться Опубликовано 17 июня, 2015 Алгоритмически:1. Получаешь контекст устройства нужного окна (основной контекст)2. Создаешь совместимый контекст на основе полученного контекста (контекст памяти или задний буфер)3. Создаешь совместимый битмап (или диб-секцию) на основе контекста окна (основного контекста)4. Назначаешь этот битмап контексту памяти (заднему буферу).5. Рисуешь на контекст памяти6. Блиттингом копируешь контекст памяти в контекст устройства. Все функции необходимые найдешь в мсдн. Если не разберешься, подскажу реализацию, но сначала попробуй сам. Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 17 июня, 2015 Автор Поделиться Опубликовано 17 июня, 2015 На моем уже готовом проекте ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 17 июня, 2015 Поделиться Опубликовано 17 июня, 2015 Да на чем хочешь ) Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 17 июня, 2015 Автор Поделиться Опубликовано 17 июня, 2015 (изменено) Код:#include #include#include#include#include#include#include "HackProcess.h"CHackProcess fProcess;using namespace std;const DWORD Player_Base = 0xconst DWORD dw_inGameBase = 0x0const DWORD dw_mTeamOffset = 0x0;//clientconst DWORD dw_Health = 0x0;//clientconst DWORD dw_Dormant = 0x0;const DWORD dw_inGame = 0x0;const DWORD dw_Position = 0x0;//clientconst DWORD EntityPlayer_Base = 0x0;//How far in memory is each enemy dataconst DWORD EntityLoopDistance = 0x10;bool Key_STATES = false;RECT m_Rect;//Our desktop handleHDC HDC_Desktop;HBRUSH EnemyBrush;//font we use to write text withCOLORREF LINESCOLOR;COLORREF HEALTHCOLOR;COLORREF DISTANCECOLOR;HWND TargetWnd;HWND Handle;DWORD DwProcId;HFONT Font; //font we use to write text with//ESP VARSconst DWORD ViewMatrix = 0x4A0C1A4; //4A0D16//Set of initial variables you'll needtypedef 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 timestruct 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+4A0C196ReadProcessMemory(fProcess.__HandleProcess, (PBYTE*)(fProcess.__dwordClient + ViewMatrix), &WorldToScreenMatrix, sizeof(WorldToScreenMatrix), 0);}}MyPlayer;//ENemy structstruct 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 //0x571A5204ReadProcessMemory(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 drawvoid DrawFilledRect(int x, int y, int w, int h){//We create our rectangle to draw on screenRECT rect = { x, y, x + w, y + h };//We clear that portion of the screen and display our rectangleFillRect(HDC_Desktop, &rect, EnemyBrush);}void DrawBorderBox(int x, int y, int w, int h, int thickness){//Top horiz lineDrawFilledRect(x, y, w, thickness);//Left vertical lineDrawFilledRect(x, y, thickness, h);//right vertical lineDrawFilledRect((x + w), y, thickness, h);//bottom horiz lineDrawFilledRect(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, colorHPEN hNPen = CreatePen(PS_SOLID, 1, Pen);hOPen = (HPEN)SelectObject(HDC_Desktop, hNPen);// starting point of lineMoveToEx(HDC_Desktop, StartX, StartY, NULL);// ending point of linea = 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,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 herewhile (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 пункт сделал.. А следующие не понятны Изменено 17 июня, 2015 пользователем CybioZ Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 июня, 2015 Поделиться Опубликовано 18 июня, 2015 Ты в коде опять же делаешь вывод сразу на контекст устройства рабочего стола. А тебе нужно делать вывод на совместимый контекст в памяти, и уже после построения кадра на нем блиттингом копировать контекст памяти на контекст устройства. Функции, которые тебе понадобятся:GetDCCreateCompatibleDCCreateCompatibleBitmapSelectObjectBitBltА теперь можешь идти в мсдн, читать описания и разбираться. Если совсем уж не получится, подскажу пример кода с блиттингом. Под свои нужды, думаю, сможешь адаптировать. Но это будет не раньше понедельника, так что время подумать у тебя есть. Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 18 июня, 2015 Автор Поделиться Опубликовано 18 июня, 2015 Спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 18 июня, 2015 Автор Поделиться Опубликовано 18 июня, 2015 Код под себя взял , но единственное , не понимаю как им правильно воспользоваться.. взял в пример 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;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 июня, 2015 Поделиться Опубликовано 19 июня, 2015 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 и передать ей хендл целевого окна. Исправляй. В остальном, вроде, все правильно. Но просмотрел бегло, потому не факт. И да, не забывай убирать большие куски кода под спойлер. Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 19 июня, 2015 Автор Поделиться Опубликовано 19 июня, 2015 Хорошо , просто когда ложу под спойлер , он у меня не работает , теперь научился. простите. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 июня, 2015 Поделиться Опубликовано 19 июня, 2015 просто когда ложу под спойлер нет слова "ложу". Есть слово "кладу". Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 19 июня, 2015 Автор Поделиться Опубликовано 19 июня, 2015 нет слова "ложу". Есть слово "кладу". Спасибо ;DУ меня пишет , что чтение памяти невозможно.http://prntscr.com/7ipvuc Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 июня, 2015 Поделиться Опубликовано 19 июня, 2015 И что? У тебя это не указатель, а число. А когда пытаешься развернуть, студия пытается интерпретировать число как указатель, и, естественно, не может прочитать ничего из такого адреса. Это не является ошибкой самой программы. Ну и, наконец, что-то как-то не совсем понятно, к чему ты это написал. Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 19 июня, 2015 Автор Поделиться Опубликовано 19 июня, 2015 Не получается мне эту хрень написать..Лучше перевести это на DerectX с менюшкой , только я не умею. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 июня, 2015 Поделиться Опубликовано 19 июня, 2015 Ты просто не хочешь подумать ) Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 19 июня, 2015 Поделиться Опубликовано 19 июня, 2015 Не получается мне эту хрень написать..Лучше перевести это на DerectX с менюшкой , только я не умею.Ты бы получше посмотрел! Один мой друг выложил в паблик свою менюшку. Но даже она тебе не поможет, если ты 2 + 2 сложить не можешь. Ссылка на комментарий Поделиться на другие сайты Поделиться
CybioZ Опубликовано 20 июня, 2015 Автор Поделиться Опубликовано 20 июня, 2015 (изменено) Файл:http://rghost.ru/6bpNSYdnHVT:https://www.virustotal.com/ru/file/b48b7b6be63d6705551e20553dc0d7f2dfeb75d83396f4b527dc4281a6e992a3/analysis/1434821946/вот хороший проект , там нету ни мерцаний ничего лишнего.. только не знаю как туда перенести мой чит. меню на Directx'e. Изменено 20 июня, 2015 пользователем CybioZ Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения