我正在尝试学习如何访问其他进程的内存。我正在使用ReadProcessMemory
但它失败了,据说是因为我正在从无法访问的内存中读取。我想我应该VirtualQueryEx
先看看我要读取的内存是否可读,但我不知道如何解析VirtualQueryEx
.
VirtualQueryEx
返回此处描述的结构http://msdn.microsoft.com/en-us/library/windows/desktop/aa366775%28v=vs.85%29.aspx
有没有什么好的简单方法可以知道MEMORY_BASIC_INFORMATION
结构中的值是否表明该页面是可读的ReadProcessMemory
?
这个结构有几个参数,据我了解,定义内存是否可访问:
DWORD AllocationProtect;
DWORD State;
DWORD Protect;
DWORD Type;
它甚至不清楚哪些参数组合实际上允许读取内存(例如,我应该从AllocationProtect
or读取保护标志Protect
,State
除了 Commit 是否意味着内存不可读等)并产生巨大的 if (这就是那个,那是那或这就是……)似乎不是一个干净的解决方案。
一定有更好的方法,但我似乎无法找到它......