Почему не считывается значение по адресу в памяти?

Изучаю материалы на сайте 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 мы можем получить данный адрес и значение в нём:

Адрес в Cheat Engine

Если поставить точку останова на функции ReadProcessMemory() и через отладчик проверить значение gold_value, то оно равно 0, также, как и значение bytes_read:

введите сюда описание изображения


Ответы (0 шт):