Как рендерить текст и.т.д через DirectX? (GTA SA)

corruptmemory

Участник
Автор темы
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);
        }
    }


}
 
  • Нравится
Реакции: Vintik