Windows Windbg vtop输出大于内存的物理地址

Windows Windbg vtop输出大于内存的物理地址,windows,windbg,paging,huge-pages,Windows,Windbg,Paging,Huge Pages,我正在研究Windows内核的内部结构,我正在研究的一件事是分页和虚拟地址在Windows中是如何工作的。我在试验windbg的!vtop功能当我注意到一些奇怪的事情时,我得到了一个不可能的物理地址 例如,这里是我的输出!处理0 0命令: PROCESS fffffa8005319b30 SessionId: none Cid: 0104 Peb: 7fffffd8000 ParentCid: 0004 DirBase: a8df3000 ObjectTable: f

我正在研究Windows内核的内部结构,我正在研究的一件事是分页和虚拟地址在Windows中是如何工作的。我在试验windbg的
!vtop
功能当我注意到一些奇怪的事情时,我得到了一个不可能的物理地址

例如,这里是我的
输出!处理0 0
命令:

PROCESS fffffa8005319b30 SessionId: none Cid: 0104 Peb: 7fffffd8000 ParentCid: 0004 DirBase: a8df3000 ObjectTable: fffff8a0002f6df0 HandleCount: 29. Image: smss.exe 我遇到的问题是,我正在运行此测试的虚拟机只有4GB,而
13eb19b30
是5346794288

当我运行
时!dd 13eb19b30和dd FFFFF A8001F07310得到了相同的结果,因此windows似乎能够以某种方式访问此物理地址。。。有人知道这是怎么做到的吗


我看到你已经发布了这是RESE,我也看到了它,但我不明白你到底想做什么

我看到一些差异

您似乎使用了
PFN a8df3000
,但windbg似乎使用了
PFN 187000

顺便说一句,pfn iirc应该是
dirbase&0xfffff000

对于虚拟地址,您似乎也在使用进程的EPROCESS地址
您确定这是要使用的正确虚拟地址吗

另外,您似乎正在使用lkd,它是本地内核调试提示符


我希望您理解lkd并不是真正的内核调试,所以我想我终于能够对这个问题给出一个合理的答案。事实证明,vmware实际上似乎并没有向VM连续内存公开,而是将其分割为不同的内存“运行”。我可以通过使用波动率来确认这一点:

$ python vol.py -f ~/Desktop/Win7SP1x64-d8737a34.vmss vmwareinfo --verbose | less Magic: 0xbad1bad1 (Version 1) Group count: 0x5c File Offset PhysMem Offset Size ----------- -------------- ---------- 0x000010000 0x000000000000 0xc0000000 0x0c0010000 0x000100000000 0xc0000000 $python vol.py-f~/Desktop/Win7SP1x64-d8737a34.vmss vmwareinfo--无需太多 魔术:0xbad1bad1(版本1) 组计数:0x5c 文件偏移量physem偏移量大小 ----------- -------------- ---------- 0x0000100000000000000000xC0000000 0x0C00010000 0x00010000000 0xc0000000
下面是一篇github wiki文章,详细介绍了:

哦,很抱歉,我看到了错误PFN中的混淆来自何处。因此187000是系统进程的目录库。我测试了187000和a8df3000,得到了相同的结果。但我将编辑原始帖子,使其使用8DF3000。但我所要做的只是将eprocess结构的虚拟地址转换为物理地址。我确实相信我所做的是有效的,因为物理地址和虚拟地址打印的内容与运行
dd
命令输出的内容相同。我转储了挂起的VM,然后能够找到我在2月19日B30在VM中查看的内存的实际偏移量,相差0x40000000(1GB)。但我不明白这种差异从何而来 $ python vol.py -f ~/Desktop/Win7SP1x64-d8737a34.vmss vmwareinfo --verbose | less Magic: 0xbad1bad1 (Version 1) Group count: 0x5c File Offset PhysMem Offset Size ----------- -------------- ---------- 0x000010000 0x000000000000 0xc0000000 0x0c0010000 0x000100000000 0xc0000000