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

标签 c++ windows readprocessmemory

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

我见过使用 ReadProcessMemory() 的代码根据当前进程的基地址读取内存,因为前几个字节包含一些显示详细进程信息的指针。我还需要获取其中一些信息,并且 research向我展示了如何操作。

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

最佳答案

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

除此之外,我看不出任何理由。如果您确定您的指针是正确的,那么使用 memcpy 就可以了(而且速度更快)。

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

相关文章:

c++ - 位图不会在 SDL 中加载

c++ - fstream 不会创建文件

C# ReadProcessMemory 替代方案

c# - 在 C# 的另一个进程内存中搜索特定字符串(或字节数组)的快速方法?

c++ - 在 boost::spirit::x3 中合成 std​​::pair 属性

c++ - 变量定义中的struct是什么意思?由 小码哥发布于

c# - Windows 服务器/数据中心 : set CPU affinity with > 64 cores

ruby-on-rails - 使用 Ruby on Rails 连接到网络服务器的问题

windows - 无法获取 cleishm/neo4j/ubuntu/dists/trusty/main/binary-amd64/Packages

c++ - ReadProcessMemory _out_ bytesread