Есть ли читоделы на с++ которые работают с движком source на форуме? Вообщем есть один довольно плохой код, но суть не в этом. Может я криворукий и имею не много опыта, я не знаю как точно описать проблему. Идет краш игры при использовании чего либо (при внедрении краша нету) Я понимаю что он толку такого ничего глобального с себя не представляет. Здесь есть что-то наподобие телепорта) ну вот кидаю код: #include <Windows.h> #include <stdlib.h> #include <stdio.h> #include <TlHelp32.h> #include <tchar.h> #include <math.h> using namespace std; struct vec2 { float x, y; }; struct vec3 { float x, y, z; }; DWORD_PTR dwGetModuleBaseAddress(DWORD dwProcID, TCHAR* szModuleName) { DWORD_PTR dwModuleBaseAddress = 0; HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, dwProcID); if (hSnapshot != INVALID_HANDLE_VALUE) { MODULEENTRY32 ModuleEntry32; ModuleEntry32.dwSize = sizeof(MODULEENTRY32); if (Module32First(hSnapshot, &ModuleEntry32)) { do { if (_tcsicmp(ModuleEntry32.szModule, szModuleName) == 0) { dwModuleBaseAddress = (DWORD_PTR)ModuleEntry32.modBaseAddr; break; } } while (Module32Next(hSnapshot, &ModuleEntry32)); } CloseHandle(hSnapshot); } return dwModuleBaseAddress; } class Player { public: char pad_0x0000[0xEC]; //0x0000 __int32 iHealth; //0x00EC char pad_0x00F0[0x154]; //0x00F0 __int32 jumpingMaybe; //0x0244 char pad_0x0248[0x140]; //0x0248 vec3 pos; //0x0388 char pad_0x0394[0x470]; //0x0394 }; //Size=0x0804 DWORD ProcessThread() { DWORD serverdll; GetWindowThreadProcessId(FindWindow(NULL, "Left 4 Dead 2"), &serverdll); bool healthHack = false; vec3 savePos = { 0 }; while (1) { DWORD baseAddress = (DWORD)GetModuleHandle("server.dll"); Player* localPlayer = (Player*)serverdll + 0x7B4C4C; Player* localPlayer2 = (Player*)serverdll + 0x7B4C5C; Player* localPlayer3 = (Player*)serverdll + 0x7B4C6C; Player* localPlayer4 = (Player*)serverdll + 0x7B4C7C; if (localPlayer != 0) { if (healthHack) localPlayer->iHealth = 101; if (GetAsyncKeyState(VK_INSERT)) localPlayer->pos.z += 100.0; if (GetAsyncKeyState(VK_DELETE)) localPlayer->pos.z -= 100.0; if (GetAsyncKeyState(VK_UP)) localPlayer->pos.x += 100.0; if (GetAsyncKeyState(VK_DOWN)) localPlayer->pos.x -= 100.0; if (GetAsyncKeyState(VK_RIGHT)) localPlayer->pos.y += 100.0; if (GetAsyncKeyState(VK_LEFT)) localPlayer->pos.y -= 100.0; if (GetAsyncKeyState(VK_HOME)) healthHack = !healthHack; if (GetAsyncKeyState(VK_SUBTRACT)) { savePos.y = localPlayer->pos.y; savePos.z = localPlayer->pos.z; savePos.x = localPlayer->pos.x; } if (GetAsyncKeyState(VK_MULTIPLY)) { if (savePos.y == 0 || savePos.x == 0 || savePos.z == 0) { savePos.y = localPlayer->pos.y; savePos.z = localPlayer->pos.z; savePos.x = localPlayer->pos.x; } else { localPlayer->pos.y = savePos.y; localPlayer->pos.z = savePos.z; localPlayer->pos.x = savePos.x; } } } Sleep(100); } return 0; } BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved) { switch (reason) { case DLL_PROCESS_ATTACH: CreateThread(0, 0, (LPTHREAD_START_ROUTINE)ProcessThread, 0, 0, 0); } return true; } Code #include <Windows.h> #include <stdlib.h> #include <stdio.h> #include <TlHelp32.h> #include <tchar.h> #include <math.h> using namespace std; struct vec2 { float x, y; }; struct vec3 { float x, y, z; }; DWORD_PTR dwGetModuleBaseAddress(DWORD dwProcID, TCHAR* szModuleName) { DWORD_PTR dwModuleBaseAddress = 0; HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, dwProcID); if (hSnapshot != INVALID_HANDLE_VALUE) { MODULEENTRY32 ModuleEntry32; ModuleEntry32.dwSize = sizeof(MODULEENTRY32); if (Module32First(hSnapshot, &ModuleEntry32)) { do { if (_tcsicmp(ModuleEntry32.szModule, szModuleName) == 0) { dwModuleBaseAddress = (DWORD_PTR)ModuleEntry32.modBaseAddr; break; } } while (Module32Next(hSnapshot, &ModuleEntry32)); } CloseHandle(hSnapshot); } return dwModuleBaseAddress; } class Player { public: char pad_0x0000[0xEC]; //0x0000 __int32 iHealth; //0x00EC char pad_0x00F0[0x154]; //0x00F0 __int32 jumpingMaybe; //0x0244 char pad_0x0248[0x140]; //0x0248 vec3 pos; //0x0388 char pad_0x0394[0x470]; //0x0394 }; //Size=0x0804 DWORD ProcessThread() { DWORD serverdll; GetWindowThreadProcessId(FindWindow(NULL, "Left 4 Dead 2"), &serverdll); bool healthHack = false; vec3 savePos = { 0 }; while (1) { DWORD baseAddress = (DWORD)GetModuleHandle("server.dll"); Player* localPlayer = (Player*)serverdll + 0x7B4C4C; Player* localPlayer2 = (Player*)serverdll + 0x7B4C5C; Player* localPlayer3 = (Player*)serverdll + 0x7B4C6C; Player* localPlayer4 = (Player*)serverdll + 0x7B4C7C; if (localPlayer != 0) { if (healthHack) localPlayer->iHealth = 101; if (GetAsyncKeyState(VK_INSERT)) localPlayer->pos.z += 100.0; if (GetAsyncKeyState(VK_DELETE)) localPlayer->pos.z -= 100.0; if (GetAsyncKeyState(VK_UP)) localPlayer->pos.x += 100.0; if (GetAsyncKeyState(VK_DOWN)) localPlayer->pos.x -= 100.0; if (GetAsyncKeyState(VK_RIGHT)) localPlayer->pos.y += 100.0; if (GetAsyncKeyState(VK_LEFT)) localPlayer->pos.y -= 100.0; if (GetAsyncKeyState(VK_HOME)) healthHack = !healthHack; if (GetAsyncKeyState(VK_SUBTRACT)) { savePos.y = localPlayer->pos.y; savePos.z = localPlayer->pos.z; savePos.x = localPlayer->pos.x; } if (GetAsyncKeyState(VK_MULTIPLY)) { if (savePos.y == 0 || savePos.x == 0 || savePos.z == 0) { savePos.y = localPlayer->pos.y; savePos.z = localPlayer->pos.z; savePos.x = localPlayer->pos.x; } else { localPlayer->pos.y = savePos.y; localPlayer->pos.z = savePos.z; localPlayer->pos.x = savePos.x; } } } Sleep(100); } return 0; } BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved) { switch (reason) { case DLL_PROCESS_ATTACH: CreateThread(0, 0, (LPTHREAD_START_ROUTINE)ProcessThread, 0, 0, 0); } return true; } У меня больше вопросов по этой части: DWORD ProcessThread() { DWORD serverdll; GetWindowThreadProcessId(FindWindow(NULL, "Left 4 Dead 2"), &serverdll); bool healthHack = false; vec3 savePos = { 0 }; while (1) { DWORD baseAddress = (DWORD)GetModuleHandle("server.dll"); Player* localPlayer = (Player*)serverdll + 0x7B4C4C; Player* localPlayer2 = (Player*)serverdll + 0x7B4C5C; Player* localPlayer3 = (Player*)serverdll + 0x7B4C6C; Player* localPlayer4 = (Player*)serverdll + 0x7B4C7C; Code DWORD ProcessThread() { DWORD serverdll; GetWindowThreadProcessId(FindWindow(NULL, "Left 4 Dead 2"), &serverdll); bool healthHack = false; vec3 savePos = { 0 }; while (1) { DWORD baseAddress = (DWORD)GetModuleHandle("server.dll"); Player* localPlayer = (Player*)serverdll + 0x7B4C4C; Player* localPlayer2 = (Player*)serverdll + 0x7B4C5C; Player* localPlayer3 = (Player*)serverdll + 0x7B4C6C; Player* localPlayer4 = (Player*)serverdll + 0x7B4C7C; Прошу помощи кто знает с чем может быть проблема или что я делаю не так)
DWORD baseAddress = (DWORD)GetModuleHandle("server.dll"); GetWindowThreadProcessId(FindWindow(NULL, "Left 4 Dead 2"), &serverdll); крутой читодел, удачи тебе там