我一直在寻找用于查看或转储内存的Windows功能,或者寻找手动执行此操作的过程。我无法在任何在线位置找到有关此内容的信息。 />
我希望能够检索地址的基页地址。内存映射是我与此最好的关系,因为它提供了页面信息,例如大小,起始地址,权限等。
VirtualQueryEx()
解决了该问题。我最终遍历页面直到我找到了我的目标地址落在其中的地址。
谢谢大家的帮助。
// Iterate through pages
for(base = NULL;
WINDOWS::VirtualQuery(base, info, sizeof(*info)) == sizeof(*info);
base += info->RegionSize) {
if(p > base && p < base + info->RegionSize) {
found = true;
break;
}
}
#1 楼
VirtualQueryEx()
可用于扫描进程的用户模式地址空间以枚举每个内存分配,并且可解析内存中图像的PE头以确定哪些内存块与哪个PE部分相关联。 DLL的PE标头也包含DLL的名称。#2 楼
要将内存转储到文件中,请参见DbgHelp MiniDumpWriteDump函数。您将以转储文件(.DMP)的形式获取内存的快照,然后可以使用各种工具或使用DbgEng调试引擎自行进行分析。评论
如果下降投票者可以解释他的投票,我将学会以后不再发布错误的答案。谢谢。
–托马斯·韦勒(Thomas Weller)
2014年3月19日在22:24
(不是我)OP的问题有点不清楚;他的头衔专门询问了内存映射,但随后他继续问有关如何“查看或转储内存”的通用问题。我想说您的答案是针对后一部分的,但真正的问题是关于内存映射的,Jason的答案将解决该问题。 +1用于提供另一种方法。
–乔纳森·莱因哈特(Jonathon Reinhart)
2014年3月26日下午6:06
评论
“我倾向于要求我认为将是解决方案,而不是提出问题并提出建议”。 XY问题