Компилятор ругается на недостающую точку с запятой, хотя ее там по идее быть и не должно
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Привет форумчанам, у меня тут возникла проблема с компиляцией
class CBunnyhop
{
public:
static unsigned long_stdcall ThreadRoutine(void*)
{
while (true)
{
DWORD dwMe = debugger.Readmemory<DWORD>(GetModuleClient()->dwBase + dwLocalPlayer);
int CanJump = debugger.ReadMemory<DWORD>(dwMe + dwFlags);
if ((GetAsyncKeyState(BHOP_KEY) & 0x8000) && (CanJump & 0x1 == true)) {
debugger.WriteMemory<int>(GetModuleClient()->dwBase + dwJump, 5); // прыгаем в игре
Sleep(50);
debugger.WriteMemory<int>(GetModuleClient()->dwBase + dwJump, 4);
}
}
}
};
В третьей строчке ругается на недостающую точку с запятой, хотя ее там быть и не должно.
Код не я пишу. Я пытаюсь разобраться как работаться с потоками/записывать/читать память в процессе.
Вот весь полный код программы
#include <iostream>#include <Windows.h>#include <TlHelp32.h>#define BHOP_KEY 'C' // нажать, чтобы начать прыгатьstruct module_t{DWORD dwBase, dwSize;};`// дебаггер`class CDebugger{private:DWORD dwPid;HANDLE hProcess;public:bool attach(char* szProcess){HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);PROCESSENTRY32 entry;entry.dwSize = sizeof(entry);do {if (!strcmp(entry.szExeFile, szProcess)){dwPid = entry.th32ProcessID;CloseHandle(handle);hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwPid);return true;}} while (Process32Next(handle, &entry));return false;}module_t GetModule(char* szModule){HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, NULL);MODULEENTRY32 entry;entry.dwSize = sizeof(entry);do {if (!strcmp(entry.szModule, szModule)){dwPid = entry.th32ProcessID;CloseHandle(handle);hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwPid);return { (DWORD)entry.hModule, entry.modBaseSize };}} while (Module32Next(handle, &entry));return{ (DWORD)false, false };}template<typename T>T ReadMemory(DWORD Address){T read;ReadProcessMemory(hProcess, Address, &read, sizeof(T), 0);}template<typename T>void WriteMemory(DWORD Address, T value){WriteProcessMemory(hProcess, Address, &val, sizeof(T), 0);}};// оффсетыDWORD dwLocalPlayer = 0xA9948C;DWORD dwJump = 0x4AD0374;DWORD dwFlags = 0x100;CDebugger debugger;module_t moduleClient;// client.dll в памятиmodule_t* GetModuleClient(){if (!moduleClient.dwBase && !moduleClient.dwSize) {moduleClient = debugger.GetModule("client.dll");}return &moduleClient;}class CBunnyhop{public:static unsigned long_stdcall ThreadRoutine(void*){while (true){DWORD dwMe = debugger.Readmemory<DWORD>(GetModuleClient()->dwBase + dwLocalPlayer);int CanJump = debugger.ReadMemory<DWORD>(dwMe + dwFlags);if ((GetAsyncKeyState(BHOP_KEY) & 0x8000) && (CanJump & 0x1 == true)) {debugger.WriteMemory<int>(GetModuleClient()->dwBase + dwJump, 5); // прыгаем в игреSleep(50);debugger.WriteMemory<int>(GetModuleClient()->dwBase + dwJump, 4);}}}};int main(){while (!debugger.attach("csgo.exe")) { // вливаемся в процесс csgo.exeSleep(100);}CreateThread(0, 0, &CBunnyhop::ThreadRoutine, 0, 0, 0);while (1) {Sleep(100);}}