Перейти к содержанию

[GTASA | C++] Не может прочесть адрес


Рекомендуемые сообщения

Я добиваюсь вывода координат персонажа, но почему-то ничего не происходит, хоть ошибок не наблюдалось.

Сам код:

Спойлер

#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <thread>

using namespace std;

HANDLE process;




uintptr_t FindDMAAddy(HANDLE hProc, uintptr_t ptr, std::vector<unsigned int> offsets)
{
	uintptr_t addr = ptr;
	for (unsigned int i = 0; i < offsets.size(); ++i)
	{
		ReadProcessMemory(hProc, (BYTE*)addr, &addr, sizeof(addr), 0);
		addr += offsets[i];
	}
	return addr;
}




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("CHEAT SOFTWARE");

	HWND hwnd;

	do {
		hwnd = FindWindowA(0, "gta_sa.exe");
		Sleep(100);
	} while (!hwnd);

	cout << "Find the Window 'gta_sa.exe'!";

	DWORD pid;
	GetWindowThreadProcessId(hwnd, &pid);
	process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); 

	cout << "SA:MP 0.3.7 started, pid " << &pid << ".\n";

	DWORD dynamicPtrAdd = (DWORD)GetModuleHandleA("gta_sa.exe") + 0x076F3B8;

	cout << hex << dynamicPtrAdd << endl;

	uintptr_t xAdd = FindDMAAddy(0, dynamicPtrAdd, { 0x14, 0x30 });
	uintptr_t yAdd = FindDMAAddy(0, dynamicPtrAdd, { 0x14, 0x34 });
	uintptr_t zAdd = FindDMAAddy(0, dynamicPtrAdd, { 0x14, 0x38 });

	cout << "xAdd: " << hex << xAdd << " | yAdd: " << hex << yAdd << " | zAdd: " << hex << zAdd << endl;

	float x = readMem<DWORD>(xAdd);
	float y = readMem<DWORD>(yAdd);
	float z = readMem<DWORD>(zAdd);

	cout << "X: " << x << " | Y: " << y << " | Z: " << z;
}

 

 

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.