Функция, которая принимает адрес и добавляет смещения, предполагает, что соответствующий math был (0x2238126d178 + 0x184 = 0x1c00000c05), что неверно и приводит к сбою записи в память, поскольку это поддельный адрес, почему последнее смещение полностью уничтожает мой адрес.
Я ценю всех, кто изучает это глубже, потому что здесь много кода, но я думаю, что основная проблема связана с WriteMemory и тем, как я передаю значения через GetModuleBaseAddress() и GetPointerAddress(), кстати, я изменил смещения и все такое на необходимые значения для новой 64-битной игры, которую пытаюсь взломать.
Ниже приведен неработающий скрипт:
Код: Выделить всё
#include
#include
#include
#include
#include
DWORD64 GetModuleBaseAddress(TCHAR* lpszModuleName, DWORD pID) {
DWORD64 dwModuleBaseAddress = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID);
MODULEENTRY32 ModuleEntry32 = { 0 };
ModuleEntry32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(hSnapshot, &ModuleEntry32)) {
do {
if (_tcscmp(ModuleEntry32.szModule, lpszModuleName) == 0) {
dwModuleBaseAddress = (DWORD64)ModuleEntry32.modBaseAddr;
break;
}
} while (Module32Next(hSnapshot, &ModuleEntry32));
}
CloseHandle(hSnapshot);
return dwModuleBaseAddress;
}
DWORD64 GetPointerAddress(DWORD PID, DWORD64 gameBaseAddr, DWORD64 address, const std::vector& offsets) {
HANDLE phandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
if (phandle == NULL) {
std::cerr
Подробнее здесь: [url]https://stackoverflow.com/questions/79154397/how-do-convert-this-script-to-be-compatible-with-my-64-bit-game-memory-hacking[/url]