Ошибка WriteProcessMemory / ReadProcessMemory - PullRequest
2 голосов
/ 11 июля 2009

Я пытался использовать и ReadProcessMemory (), и WriteProcessMemory () в моем приложении, но в обоих случаях я получил один результат - была выполнена только часть запроса ReadProcessMemory или WriteProcessMemory.

Кто-нибудь встречал этот код ошибки раньше? Я использую Vista SP2, я пытался работать от имени администратора, но пока не получил этот код ошибки.

1 Ответ

4 голосов
/ 11 июля 2009

Убедитесь, что вы вызываете VirtualProtectEx для установки правильного уровня защиты в памяти, которую вы хотите прочитать / записать.

Подумав об этом, вероятно, это не проблема, так как большая часть памяти имеет доступ для чтения, но для установки уровня защиты выполните что-то вроде этого (в C ++)

(без проверки ошибок и просто с использованием случайного адреса памяти, но вы должны понять)

char buffer[256];
DWORD oldProtect = 0;
DWORD numRead = 0;
VirtualProtectEx( hProc, (LPVOID)0x77810F34, 256, PAGE_EXECUTE_READWRITE, &oldProtect );
ReadProcessMemory( hProc, (LPVOID)0x77810F34, buffer, 256, &numRead );
VirtualProtectEx( hProc, (LPVOID)0x77810F34, 256, oldProtect, NULL ); //restore the original protection when you're done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...