Я использую VMMap для просмотра адресного пространства процесса. В левом углу находится адрес. Я попытался скопировать адрес и прочитать его из процесса.
Вот пример:

Я попытался посмотреть, смогу ли я прочитать этот адрес с помощью небольшого фрагмента кода ниже. Вызов VirtualQueryEx
не завершается ошибкой, так как ответ не 0
. Но моя проблема в том, что State
возвращает значение, указывающее, что адрес не существует, а Protect
возвращает PAGE_NOACCESS
.

Код:
int pid = 10964;
DWORD_PTR addr = 0x2C1811E0000;
MEMORY_BASIC_INFORMATION data;
HANDLE pHandler = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
if (pHandler == NULL) {
printf("Could not find process with id: %i", pid);
return -1;
}
int mResult = VirtualQueryEx(pHandler, addr, &data, sizeof(MEMORY_BASIC_INFORMATION));
if (!mResult) {
printf("Could not query virtual memory. Error: %i", GetLastError());
return -1;
}
printf("Base address: %#010x\n", data.BaseAddress);
printf("Address state: %#010x\n", data.State);
printf("Address protection: %#010x\n", data.Protect);
Адрес в VMMap читается или я что-то не так делаю?