【问题标题】:Windbg vtop outputs physical address larger than memoryWindbg vtop 输出物理地址大于内存
【发布时间】:2021-05-27 11:39:55
【问题描述】:
我正在研究 Windows 内核的内部结构,我正在研究的一件事是分页和虚拟地址在 Windows 中的工作方式。我正在尝试使用 windbg 的 !vtop 函数时发现奇怪的事情,我得到了一个不可能的物理地址?
例如,这是我的!process 0 0 命令的输出:
进程 fffffa8005319b30
SessionId:无 Cid:0104 Peb:7fffffd8000 ParentCid:0004
DirBase:a8df3000 ObjectTable:fffff8a0002f6df0 HandleCount:29。
图片:smss.exe
当我运行!vtop a8df3000 fffffa8005319b30 时。我得到以下结果:
lkd> !vtop a8df3000 fffffa8005319b30
Amd64VtoP:虚拟 fffffa80`05319b30,pagedir a8df3000
Amd64VtoP:PML4E a8df3fa8
Amd64VtoP:PDPE 2e54000
Amd64VtoP:PDE 2e55148
Amd64VtoP:大页面映射 phys 1`3eb19b30
虚拟地址 fffffa8001f07310 转换为物理地址 13eb19b30
我遇到的问题是我运行此测试的虚拟机只有 4GB,13eb19b30 是 5,346,794,288...
当我运行 !dd 13eb19b30 和 dd fffffa8001f07310 时,我得到了相同的结果,所以 windows 似乎能够以某种方式访问这个物理地址......有人知道这是怎么做到的吗?
I found this post on Cheat Engine that looks like he had a similar problem to me. But they found no solution in that case either
【问题讨论】:
-
我转储暂停了我的虚拟机,然后能够发现我在虚拟机中查看的内存的实际偏移量是 0x40000000 (1GB)。但我不明白这种差异在哪里起作用
标签:
windows
windbg
paging
huge-pages