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

我看过使用ReadProcessMemory()读取有关当前进程基址的内存的代码,因为前几个字节包含一些指针,这些指针揭示了详细的进程信息。我还需要获取一些此类信息,而research向我展示了如何做到这一点。

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

最佳答案

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

除此之外,我没有理由。如果您确定指针正确,那么使用memcpy很好(并且速度更快)。

关于c++ - 为什么将ReadProcessMemory()与当前进程的句柄一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42110646/

10-12 00:26
查看更多