为什么将 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
.
很好(而且速度更快)
使用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
.