Winapi WriteProcessMemory/ReadProcessMemory失败

Winapi WriteProcessMemory/ReadProcessMemory失败,winapi,Winapi,我尝试在应用程序中同时使用ReadProcessMemory()和WriteProcessMemory(),但在这两种情况下,我都得到了一个结果—ReadProcessMemory或WriteProcessMemory请求只完成了一部分 以前有人遇到过这个错误代码吗?我使用的是Vista SP2,我试图以仰慕者的身份运行,但我得到了该erorcode。请确保调用VirtualProtectEx,在要读/写的内存上设置正确的保护级别 仔细想想,这可能不是问题,因为大多数内存都启用了读访问,但要设置

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


以前有人遇到过这个错误代码吗?我使用的是Vista SP2,我试图以仰慕者的身份运行,但我得到了该erorcode。

请确保调用VirtualProtectEx,在要读/写的内存上设置正确的保护级别

仔细想想,这可能不是问题,因为大多数内存都启用了读访问,但要设置保护级别,请执行类似的操作(在C++中)

(无需进行错误检查,只需使用随机内存地址,但您应该了解这一点)


我必须在所有地址上调用它,还是可以在整个进程内存中调用它?你能举个例子吗!如果您试图为整个进程内存调用它,那么它很可能会失败,因此您应该只为要访问的内存调用它。但可能是因为您没有在某个插槽中传递有效的参数,所以最好发布一些代码,即使是在Delphi中,如果这不是问题的话。你能发布你正在使用的代码(ReadProcessMemory和WriteProcessMemory调用)吗?它是delpi,但我不使用VirtualProtectEx。我只想要一个C/Delphi中的VirtualProtectEx示例。任何我都会很感激的。
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