使用 NtQueryInformationProcess ,可以通过读取返回的 PROCESS_BASIC_INFORMATION 类型结构中的 PebBaseAddress 字段来获取当前进程基地址。
我见过使用 ReadProcessMemory() 的代码根据当前进程的基地址读取内存,因为前几个字节包含一些显示详细进程信息的指针。我还需要获取其中一些信息,并且 research向我展示了如何操作。
然而,我仍然很困惑,为什么 ReadProcessMemory()从当前进程读取内存时需要。相对于进程基的指针不能被取消引用,或者它会/可能会导致段错误吗?是否持有关于流程基础的指针?
最佳答案
ReadProcessMemory
将检查您自己进程中的地址范围是否有效,并在出现问题时返回错误 (ERROR_PARTIAL_COPY) 而不是崩溃。
除此之外,我看不出任何理由。如果您确定您的指针是正确的,那么使用 memcpy
就可以了(而且速度更快)。
关于c++ - 为什么将 ReadProcessMemory() 与当前进程的句柄一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42110646/