Почему не считывается значение по адресу в памяти?
Изучаю материалы на сайте GameHacking.Academy.
На данный момент нахожусь на разделе External Memory Hack.
Полностью повторил представленный там код, но он у меня не работает. Что может быть не так?
У нас имеется статический адрес, с помощью которого через оффсеты сможем доходить до нужных нам адресов. Следующий код должен считывать этот адрес, но этого не происходит:
#include <Windows.h>
int main(int argc, char** argv) {
HWND wesnoth_window = FindWindow(NULL, L"Битва за Веснот - 1.14.9");
DWORD process_id = 0;
GetWindowThreadProcessId(wesnoth_window, &process_id);
HANDLE wesnoth_process = OpenProcess(PROCESS_ALL_ACCESS, true, process_id);
DWORD gold_value = 0;
DWORD bytes_read = 0;
ReadProcessMemory(wesnoth_process, (void*)0x017EECB8, &gold_value, 4, &bytes_read);
return 0;
}
Через Cheat Engine мы можем получить данный адрес и значение в нём:
Если поставить точку останова на функции ReadProcessMemory() и через отладчик проверить значение gold_value, то оно равно 0, также, как и значение bytes_read: