WriteProcessMemory/ReadProcessMemory 失败

Iva*_*nov 3 winapi

我尝试在我的应用程序中使用 ReadProcessMemory() 和 WriteProcessMemory(),但在这两种情况下我都得到一个结果 - 仅完成了 ReadProcessMemory 或 WriteProcessMemory 请求的一部分。

有人以前遇到过该错误代码吗?我正在使用 Vista SP2,我尝试以管理员身份运行,但直到收到错误代码。

Ger*_*ald 5

确保调用 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
Run Code Online (Sandbox Code Playgroud)