跳转至

使用 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。