为什么使用 ReadProcessMemory() 和当前进程的句柄

Why use ReadProcessMemory() with handle to current process?

本文关键字:进程 句柄 ReadProcessMemory 为什么      更新时间:2023-10-16

使用 NtQueryInformationProcess,可以通过读取返回的 PROCESS_BASIC_INFORMATION 类型结构中的 PebBaseAddress 字段来获取当前进程基址。

我见过使用 ReadProcessMemory(( 读取当前进程基址的内存的代码,因为前几个字节包含一些显示详细进程信息的指针。我还需要获得一些这些信息,研究向我展示了如何做到这一点。

但是,我仍然对为什么从当前进程读取内存时需要ReadProcessMemory((感到困惑。相对于进程基础的指针不能取消引用,还是会导致分段错误?是否持有与流程基础相关的指针?

ReadProcessMemory将为您检查自己进程中的地址范围是否有效,并在出现问题时返回错误(ERROR_PARTIAL_COPY(而不是崩溃。

除此之外,我认为没有理由。如果您确定指针正确,则可以使用memcpy(并且更快(。