Как изменить разрешение отображенного и зафиксированного пространства памяти? - PullRequest
0 голосов
/ 22 ноября 2018

Я пытался читать и записывать данные в область памяти в любом процессе.Я использовал функции VirtualProtect() и VirtualProtectEx() для изменения разрешения области памяти.

if(!VirtualProtect(dwAddr, dwSize, PAGE_EXECUTE_READWRITE, &dwOldProtect))
{
    printf("VirtualProtect failed error %d", GetLastError());
}

CopyMemory(dwAddr, pBuffer, dwSize);

Но у меня был код ошибки 5 (доступ запрещен) вместо хорошего результата.

Так что япроверил информацию о памяти с помощью функции VirtualQuery().

MEMORY_BASIC_INFORMATION info;

VirtualQuery(dwAddr, &info, sizeof(info));

Результат был следующим:

info.Type = MEM_MAPPED;
info.State = MEM_COMMITED;
info.AllocationProtect = PAGE_WRITECOPY;
info.Protect = PAGE_READ;

Поэтому я не мог изменить разрешение отображенной и зафиксированной памяти.

Если есть другие способы, пожалуйста, дайте мне знать.

...