initial commit of the files
This commit is contained in:
188
ImGuiExternal/Memory.h
Normal file
188
ImGuiExternal/Memory.h
Normal file
@@ -0,0 +1,188 @@
|
||||
#include <iostream>
|
||||
#include <Windows.h>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
|
||||
#define ENTITY_LIST 0x004D5AE4 //client
|
||||
#define LOCALPLAYER 0x004C88E8 //client
|
||||
#define NAME_LIST 0x0050E368 //client
|
||||
#define HEALTH 0x94 //player
|
||||
#define XYZ 0x260 //player
|
||||
#define TEAM 0x9C //player
|
||||
#define DORMANT 0x17C //player
|
||||
#define LIFESTATE 0x93 //player
|
||||
#define BONEMATRIX 0x578 //player https://youtu.be/elKUMiqitxY
|
||||
#define VIEW_MATRIX 0x5B0D68 //engine
|
||||
|
||||
class Vector3 {
|
||||
public:
|
||||
float x, y, z;
|
||||
};
|
||||
|
||||
class Vector2 {
|
||||
public:
|
||||
float x, y;
|
||||
};
|
||||
|
||||
namespace Process {
|
||||
DWORD ID;
|
||||
HANDLE Handle;
|
||||
HWND Hwnd;
|
||||
WNDPROC WndProc;
|
||||
int WindowWidth;
|
||||
int WindowHeight;
|
||||
int WindowLeft;
|
||||
int WindowRight;
|
||||
int WindowTop;
|
||||
int WindowBottom;
|
||||
LPCSTR Title;
|
||||
LPCSTR ClassName;
|
||||
LPCSTR Path;
|
||||
}
|
||||
|
||||
namespace Game {
|
||||
HANDLE handle = NULL;
|
||||
uintptr_t client = NULL;
|
||||
uintptr_t engine = NULL;
|
||||
DWORD PID = 0;
|
||||
}
|
||||
|
||||
template<typename TYPE>
|
||||
TYPE RPM(DWORD address) {
|
||||
TYPE buffer;
|
||||
ReadProcessMemory(Game::handle, (LPCVOID)address, &buffer, sizeof(buffer), 0);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
float vmatrix_t[4][4];
|
||||
bool WorldToScreen(const Vector3& vIn, Vector3& vOut)
|
||||
{
|
||||
ReadProcessMemory(Game::handle, (void*)(Game::engine + VIEW_MATRIX), &vmatrix_t, sizeof(vmatrix_t), NULL);
|
||||
|
||||
FLOAT w = vmatrix_t[3][0] * vIn.x + vmatrix_t[3][1] * vIn.y + vmatrix_t[3][2] * vIn.z + vmatrix_t[3][3];
|
||||
|
||||
if (w < 0.01f)
|
||||
return false;
|
||||
|
||||
vOut.x = vmatrix_t[0][0] * vIn.x + vmatrix_t[0][1] * vIn.y + vmatrix_t[0][2] * vIn.z + vmatrix_t[0][3];
|
||||
vOut.y = vmatrix_t[1][0] * vIn.x + vmatrix_t[1][1] * vIn.y + vmatrix_t[1][2] * vIn.z + vmatrix_t[1][3];
|
||||
FLOAT invw = 1.0f / w;
|
||||
|
||||
vOut.x *= invw;
|
||||
vOut.y *= invw;
|
||||
|
||||
int width = Process::WindowWidth;
|
||||
int height = Process::WindowHeight;
|
||||
|
||||
float x = width / 2.0f;
|
||||
float y = height / 2.0f;
|
||||
|
||||
x += 0.5f * vOut.x * width + 0.5f;
|
||||
y -= 0.5f * vOut.y * height + 0.5f;
|
||||
|
||||
vOut.x = x;
|
||||
vOut.y = y;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
enum class BoneID {
|
||||
PELVIS,
|
||||
LEFT_HIPS,
|
||||
LEFT_KNEE,
|
||||
LEFT_ANKLE,
|
||||
LEFT_FOOT,
|
||||
RIGHT_HIPS,
|
||||
RIGHT_KNEE,
|
||||
RIGHT_ANKLE,
|
||||
RIGHT_FOOT,
|
||||
STOMACH,
|
||||
BODY,
|
||||
CHEST,
|
||||
NECK,
|
||||
FACE,
|
||||
HEAD,
|
||||
LEFT_NECK,
|
||||
LEFT_SHOULDER,
|
||||
LEFT_ELBOW,
|
||||
LEFT_HAND,
|
||||
RIGHT_NECK = 28,
|
||||
RIGHT_SHOULDER,
|
||||
RIGHT_ELBOW,
|
||||
RIGHT_HAND
|
||||
};
|
||||
|
||||
Vector3 GetBonePos(DWORD addr, BoneID boneid) {
|
||||
Vector3 pos {};
|
||||
addr = 0xC + addr + (0x30 * (int)boneid);
|
||||
pos.x = RPM<float>(addr);
|
||||
pos.y = RPM<float>(addr + 0x10);
|
||||
pos.z = RPM<float>(addr + 0x10*2);
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
enum class Weapon
|
||||
{
|
||||
Glock = 0,
|
||||
USP,
|
||||
P228,
|
||||
Deagle,
|
||||
Elite,
|
||||
FiveSeven,
|
||||
M3,
|
||||
XM1014,
|
||||
Galil,
|
||||
AK47,
|
||||
Scout,
|
||||
SG552,
|
||||
AWP,
|
||||
G3SG1,
|
||||
Famas,
|
||||
M4A1,
|
||||
Aug,
|
||||
SG550,
|
||||
Mac10,
|
||||
TMP,
|
||||
MP5Navy,
|
||||
Ump45,
|
||||
P90,
|
||||
M249,
|
||||
Vest,
|
||||
VestHelm,
|
||||
FlashBang,
|
||||
HEGrenade,
|
||||
SmokeGrenade,
|
||||
Defuser,
|
||||
NightVision,
|
||||
C4,
|
||||
Max
|
||||
};
|
||||
|
||||
uintptr_t GetEntity(uintptr_t entity_list, int index) {
|
||||
return RPM<uintptr_t>(entity_list + (index * 0x10));
|
||||
}
|
||||
|
||||
inline MODULEENTRY32 get_module(const char* modName, DWORD proc_id) {
|
||||
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, proc_id);
|
||||
if (hSnap != INVALID_HANDLE_VALUE) {
|
||||
MODULEENTRY32 modEntry;
|
||||
modEntry.dwSize = sizeof(modEntry);
|
||||
if (Module32First(hSnap, &modEntry)) {
|
||||
do {
|
||||
if (!strcmp(modEntry.szModule, modName)) {
|
||||
CloseHandle(hSnap);
|
||||
return modEntry;
|
||||
}
|
||||
} while (Module32Next(hSnap, &modEntry));
|
||||
}
|
||||
}
|
||||
MODULEENTRY32 module = { (DWORD)-1 };
|
||||
return module;
|
||||
}
|
||||
|
||||
void init_modules() {
|
||||
Game::client = (uintptr_t)get_module(xorstr_("client.dll"), Game::PID).modBaseAddr;
|
||||
Game::engine = (uintptr_t)get_module(xorstr_("engine.dll"), Game::PID).modBaseAddr;
|
||||
}
|
||||
Reference in New Issue
Block a user