- 74
- 25
Делаю external чит для GTA: SA, нужно сделать меню, а как не понимаю.
Текущий код:
Текущий код:
C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <thread>
const DWORD gameSpeed = 0xB7CB64;
const DWORD infRun = 0xB7CEE4;
const DWORD megaJump = 0x96916C;
const DWORD tankMode = 0x969164;
const DWORD nitroCar = 0x969165;
HANDLE process;
DWORD myhp = 0xB6F5F0 + 0x540;
bool binfRun = false;
bool bmegaJump = false;
bool btankMode = false;
bool bnitroCar = false;
DWORD getModuleBaseAddress(DWORD pid, const char* name)
{
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
MODULEENTRY32 mEntry;
mEntry.dwSize = sizeof(MODULEENTRY32);
do
{
if (!strcmp((char*)mEntry.szModule, name))
{
CloseHandle(snapshot);
return (DWORD)mEntry.modBaseAddr;
}
} while (Module32Next(snapshot, &mEntry));
}
template <typename T>
T readMem(DWORD address)
{
T buffer;
ReadProcessMemory(process, (LPVOID)address, &buffer, sizeof(buffer), 0);
return buffer;
}
template <typename T>
void writeMem(DWORD address, T value)
{
WriteProcessMemory(process, (LPVOID)address, &value, sizeof(value), 0);
}
int main()
{
SetConsoleTitle(TEXT("RedsuCheat"));
std::cout << "Start SA:MP!\n";
HWND hwnd;
do {
hwnd = FindWindowA(0, "GTA:SA:MP");
Sleep(50);
} while (!hwnd);
DWORD pid;
GetWindowThreadProcessId(hwnd, &pid);
process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
std::cout << "SA:MP started! PID: " << pid << ".\nWaiting 15 seconds...\n";
Sleep(15000);
std::cout << ".\nCheat started.\n";
while (true)
{
if (GetAsyncKeyState(VK_NUMPAD0))
{
std::cout << "NUM0 pressed! +10 hp\n";
*reinterpret_cast<float*>(myhp) += 10;
Sleep(100);
}
if (GetAsyncKeyState(VK_NUMPAD1))
{
std::cout << "NUM1 pressed! megajump\n";
writeMem<bool>(megaJump, bmegaJump);
Sleep(100);
}
if (GetAsyncKeyState(VK_NUMPAD2))
{
std::cout << "NUM2 pressed! tankmode \n";
writeMem<bool>(tankMode, btankMode);
Sleep(100);
}
if (GetAsyncKeyState(VK_NUMPAD3))
{
std::cout << "NUM3 pressed! nitrocar\n";
writeMem<bool>(nitroCar, bnitroCar);
Sleep(100);
}
}
}