Updated offsets and fixed overlay issues due to the memory class not been able to get the hwnd correctly when starting the game

This commit is contained in:
IMXNOOBX
2023-09-06 11:52:30 +02:00
parent 949c2cde1f
commit 269d3fb768
7 changed files with 37 additions and 24 deletions
+2
View File
@@ -4,4 +4,6 @@
namespace g {
inline HDC hdcBuffer = NULL;
inline HBITMAP hbmBuffer = NULL;
RECT gameBounds;
}
+5 -6
View File
@@ -2,8 +2,7 @@
#include <numbers>
#include <cmath>
int screen_x = GetSystemMetrics(SM_CXSCREEN);
int screen_y = GetSystemMetrics(SM_CYSCREEN);
#include "globals.hpp"
struct view_matrix_t {
float* operator[ ](int index) {
@@ -91,11 +90,11 @@ struct Vector3
_x *= inv_w;
_y *= inv_w;
float x = screen_x * .5f;
float y = screen_y * .5f;
float x = g::gameBounds.right * .5f;
float y = g::gameBounds.bottom * .5f;
x += 0.5f * _x * screen_x + 0.5f;
y -= 0.5f * _y * screen_y + 0.5f;
x += 0.5f * _x * g::gameBounds.right + 0.5f;
y -= 0.5f * _y * g::gameBounds.bottom + 0.5f;
return { x, y, w };
}
+7 -5
View File
@@ -3,14 +3,16 @@
#include "classes/globals.hpp"
#include "../classes/render.hpp"
#define dwLocalPlayer 0x1713348
#define dwEntityList 0x1679C38
// last offset update 9/5/2023
#define dwLocalPlayer 0x1675770
#define dwEntityList 0x167ABA8
#define dwViewMatrix 0x1714C70
#define dwPawnHealth 0x808
#define dwPlayerPawn 0x5dc
#define dwViewMatrix 0x1713CF0
#define dwSanitizedName 0x720
#define m_iTeamNum 0x3bf
#define m_vecOrigin 0x12AC
#define m_iTeamNum 0x3bf
#define m_vecOrigin 0x12AC
namespace hack {
std::shared_ptr<pProcess> process;
+16 -9
View File
@@ -7,8 +7,7 @@
#include "classes/vector.hpp"
#include "hacks/hack.hpp"
#include "classes/globals.hpp"
// https://www.unknowncheats.me/forum/3846642-post734.html
#include "classes/render.hpp"
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
@@ -17,7 +16,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case WM_CREATE:
{
g::hdcBuffer = CreateCompatibleDC(NULL);
g::hbmBuffer = CreateCompatibleBitmap(GetDC(hWnd), screen_x, screen_y);
g::hbmBuffer = CreateCompatibleBitmap(GetDC(hWnd), g::gameBounds.right, g::gameBounds.bottom);
SelectObject(g::hdcBuffer, g::hbmBuffer);
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
@@ -39,10 +38,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (GetForegroundWindow() == hack::process->hwnd_) {
//render::RenderText(g::hdcBuffer, 10, 10, "cs2 | ESP", RGB(75, 175, 175), 15);
hack::loop();
}
BitBlt(hdc, 0, 0, screen_x, screen_y, g::hdcBuffer, 0, 0, SRCCOPY);
BitBlt(hdc, 0, 0, g::gameBounds.right, g::gameBounds.bottom, g::hdcBuffer, 0, 0, SRCCOPY);
EndPaint(hWnd, &ps);
InvalidateRect(hWnd, NULL, TRUE);
@@ -76,10 +76,16 @@ int main() {
hack::base_module = hack::process->GetModule("client.dll");
if (hack::base_module.base == 0) {
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "[cs2] Failed to find module client.dll" << std::endl;
std::cout << "[cs2] Failed to find module client.dll, waiting for the game to load it..." << std::endl;
}
} while (hack::base_module.base == 0);
std::cout << "[overlay] Waiting to focus game to create the overlay..." << std::endl;
while (GetForegroundWindow() != hack::process->hwnd_) {
std::this_thread::sleep_for(std::chrono::seconds(1));
hack::process->UpdateHWND();
ShowWindow(hack::process->hwnd_, TRUE);
}
std::cout << "[overlay] Creating window overlay..." << std::endl;
WNDCLASSEXA wc = { 0 };
@@ -93,20 +99,19 @@ int main() {
RegisterClassExA(&wc);
RECT gameBounds;
GetClientRect(hack::process->hwnd_, &gameBounds);
GetClientRect(hack::process->hwnd_, &g::gameBounds);
// Create the window
HINSTANCE hInstance = NULL;
HWND hWnd = CreateWindowExA(WS_EX_TRANSPARENT | WS_EX_TOPMOST | WS_EX_LAYERED | WS_EX_TOOLWINDOW, " ", "cs2-external-esp", WS_POPUP,
gameBounds.left, gameBounds.top, gameBounds.right - gameBounds.left, gameBounds.bottom + gameBounds.left, NULL, NULL, hInstance, NULL); // NULL, NULL);
g::gameBounds.left, g::gameBounds.top, g::gameBounds.right - g::gameBounds.left, g::gameBounds.bottom + g::gameBounds.left, NULL, NULL, hInstance, NULL); // NULL, NULL);
if (hWnd == NULL)
return 0;
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
ShowWindow(hWnd, TRUE);
SetActiveWindow(hack::process->hwnd_);
//SetActiveWindow(hack::process->hwnd_);
// Message loop
MSG msg;
@@ -120,6 +125,8 @@ int main() {
DeleteDC(g::hdcBuffer);
DeleteObject(g::hbmBuffer);
DestroyWindow(hWnd);
std::cout << "[cs2] Deataching from process" << std::endl;
hack::process->Close();
+6
View File
@@ -108,6 +108,12 @@ bool pProcess::AttachWindow(const char* WindowName)
return false;
}
bool pProcess::UpdateHWND()
{
hwnd_ = this->GetWindowHandleFromProcessId(pid_);
return hwnd_ == nullptr;
}
ProcessModule pProcess::GetModule(const char* lModule)
{
std::wstring wideModule;
+1
View File
@@ -25,6 +25,7 @@ public:
public:
bool AttachProcess(const char* process_name);
bool AttachWindow(const char* window_name);
bool UpdateHWND();
void Close();
public: