使用 ReadProcessMemory() 和 WriteProcessMemory()¶
这两个函数的原型(如清单 6-3 所示)彼此非常相似,使用它们的步骤也几乎完全相同。
BOOL ReadProcessMemory(
HANDLE Process, LPVOID Address,
LPVOID Buffer, DWORD Size,
DWORD *NumberOfBytesRead
);
BOOL WriteProcessMemory(
HANDLE Process, LPVOID Address,
LPCVOID Buffer, DWORD Size,
DWORD *NumberOfBytesWritten
);
清单 6-3:ReadProcessMemory() 和 WriteProcessMemory() 原型
两个函数都期望 Process 是进程句柄,Address 是目标内存地址。函数从内存读取时,Buffer 期望指向一个保存读取数据的对象。函数写入内存时,Buffer 期望指向要写入的数据。两种情况下,Size 都以字节为单位定义 Buffer 的大小。两个函数的最后一个参数用于可选地返回访问的字节数;你可以安全地把它设为 NULL。除非函数失败,最后一个参数返回的值应该等于 Size。