Я пытался читать и записывать данные в область памяти в любом процессе.Я использовал функции 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;
Поэтому я не мог изменить разрешение отображенной и зафиксированной памяти.
Если есть другие способы, пожалуйста, дайте мне знать.