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