Debugging Tools for Windows |
!vadump扩展命令显示所有的虚拟内存区域以及它们对应的保护信息。
Windows 2000 | Uext.dll |
Windows XP和之后 | Uext.dll |
下面是示例:
BaseAddress: 00000000
RegionSize: 00010000
State: 00010000 MEM_FREE
Protect: 00000001 PAGE_NOACCESS
BaseAddress: 00010000
RegionSize: 00001000
State: 00001000 MEM_COMMIT
Protect: 00000004 PAGE_READWRITE
Type: 00020000 MEM_PRIVATE
.........
输出中,State行显示从BaseAddress 开始的内存范围的状态。可能的状态值有MEM_COMMIT、MEM_FREE和MEM_RESERVE。
Protect行显示内存区域的保护状态。可能的值有PAGE_NOACCESS、PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE、PAGE_WRITECOPY、PAGE_EXECUTE_WRITECOPY和PAGE_GUARD。
Type行显示内存种类。可能的值有MEM_IMAGE、MEM_MAPPED和MEM_PRIVATE。
下面是使用-v参数的示例:
BaseAddress: 00000000
AllocationBase: 00000000
RegionSize: 00010000
State: 00010000 MEM_FREE
Protect: 00000001 PAGE_NOACCESS
BaseAddress: 00010000
AllocationBase: 00010000
AllocationProtect: 00000004 PAGE_READWRITE
RegionSize: 00001000
State: 00001000 MEM_COMMIT
Protect: 00000004 PAGE_READWRITE
Type: 00020000 MEM_PRIVATE
.........
使用-v时,AllocationProtect行显示整个区域被创建时的默认保护属性。Protect行显示指定地址处实际的保护属性。
要查看单个虚拟地址的内存保护信息,可以使用!vprot。关于内存保护的信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals。