Debugging Tools for Windows |
!vprot扩展命令显示虚拟内存保护信息。
Windows 2000 | Uext.dll Ntsdexts.dll |
Windows XP和之后 | Uext.dll |
!vprot扩展命令可以用于活动调试和dump文件调试。
下面是示例:
BaseAddress: 030c1000
AllocationBase: 030c0000
AllocationProtect: 00000080 PAGE_EXECUTE_WRITECOPY
RegionSize: 00011000
State: 00001000 MEM_COMMIT
Protect: 00000010 PAGE_EXECUTE
Type: 01000000 MEM_IMAGE
输出中, AllocationProtect 行显示整个区域被创建时设置的默认保护属性。注意该区域中各个单独的地址可能在之后更改了保护属性(例如调用了VirtualProtect)。Protect行显示指定地址处实际的保护属性。保护属性的值有PAGE_NOACCESS、PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE、 PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE、PAGE_WRITECOPY、PAGE_EXECUTE_WRITECOPY和 PAGE_GUARD。
State行对应传递给!vprot的虚拟地址。可能的状态有MEM_COMMIT、MEM_FREE、和MEM_RESERVE。
Type行显示内存类型。可能的值有MEM_IMAGE、MEM_MAPPED和 MEM_PRIVATE。
要查看目标进程拥有的所有内存区域的保护信息,可以使用!vadump。关于内存保护的信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals。