2009-07-10 23 views
2

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

有没有人遇到过错误代码?我使用的是Vista SP2,我试图以admistrator的身份运行,但是直到得到那个erorcode。

+0

你可以发布你使用的代码(ReadProcessMemory和WriteProcessMemory调用)吗? – Gerald 2009-07-10 22:58:23

+0

这是delpi,但我不使用VirtualProtectEx.I只想要在C/Delphi.Anythng的VirtualProtectEx的例子不胜感激。 – 2009-07-10 23:06:00

回答

4

请确保您致电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