为什么将 ReadProcessMemory() 与当前进程的句柄一起使用?

Why use ReadProcessMemory() with handle to current process?

使用NtQueryInformationProcess,可以通过读取PROCESS_BASIC_INFORMATION.

类型的返回结构中的PebBaseAddress字段来获取当前进程基地址

我看过使用 ReadProcessMemory() to read memory with respect to the base address of the current process, as the first few bytes contain some pointers that reveal detailed process information. I also needed to obtain some of this information, and research 的代码向我展示了如何这样做。

不过,我仍然很困惑,为什么从当前进程读取内存时需要 ReadProcessMemory()。不能取消引用相对于进程基的指针,或者 will/may 它会导致分段错误?是否持有相对于进程基的指针?

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

除此之外我看不出任何理由。如果您确定您的指针是正确的,那么使用 memcpy.

很好(而且速度更快)