ReadProcessMemory 整个过程

Posted

技术标签:

【中文标题】ReadProcessMemory 整个过程【英文标题】:ReadProcessMemory entire process 【发布时间】:2021-03-28 00:42:10 【问题描述】:

我正在尝试使用ReadProcessMemory 读取整个进程,但无论如何,尝试在低地址读取会导致函数失败。

例如,如果我正在从一个进程读取数据,我可以毫无问题地访问它的内存区域。但是进程的低地址(例如 0)无法访问,ReadProcessMemory 在这些地址上失败。

我是否需要一些特权才能使用ReadProcessMemory 访问整个进程?

【问题讨论】:

【参考方案1】:

一些内存页面被故意设置为不可读,尤其是第一页,因为这会检测到很多编程错误。

你可以用VirtualQueryEx判断你是否可以在另一个进程中读取内存页。

要确定内存页面的大小,请使用GetSystemInfo

你必须逐页读取内存。

另外,请查看这篇文章,该文章解释了为什么不应该使用 IsBadReadPtr 而不是 VirtualQuery:IsBadXxxPtr should really be called CrashProgramRandomly

【讨论】:

由于性能原因非常不幸,因为有数千页必须阅读。 @Jire 你可以在其他进程中注入一个DLL,并从进程内部扫描内存。

以上是关于ReadProcessMemory 整个过程的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ReadProcessMemory 获取托盘按钮文本

确定外部进程的主线程 ID(ReadProcessMemory - 错误 299)

使用 ReadProcessMemory 获取字符串值的访问冲突

ReadProcessMemory WriteProcessMemory iOS

我可以使用 ReadProcessMemory 在 Windows 中读取进程的程序内存吗?

ArcGIS Pro处理发布并在前端调用bim数据全过程-rvt转slpk