在开始本实验之前,请回顾教科书的相关内容。
您需要做以下准备:
1)一台运行Windows 2000 Professional 操作系统的计算机。 2)计算机中需安装Visual C++ 6.0 专业版或企业版。
7.4 实验内容与步骤
1. 虚拟内存的检测
使用VirtualQueryEX()函数来检查虚拟内存空间。
步骤1:登录进入Windows 2000 Professional。 步骤2:在“开始”菜单中单击“程序”、“Microsoft Visual Studio 6.0”“Microsoft Visual C++ 6.0”,进入Visual C++窗口。 步骤3:在工具栏单击“新建”按钮,编写代码保存为7-1.cpp。 功能:检测进程的虚拟地址空间
参考头文件与函数:windows.h、iostream、shlwapi.h、iomanip、 WalkVM()、ZeroMemory()、GetSystemInfo(&si)、StrFormatByteSize()、 VirtualQueryEx()API
步骤4:单击“Build”菜单中的“Compile 7-1.cpp”命令,单击“是”按钮确认,系统对7-1.cpp进行编译。
步骤5:编译完成后,单击“Build”菜单中的“Build 7-1.exe”命令,建立7-1.exe可执行文件。
操作能否正常进行,如果不行,原因是什么?
步骤6:在工具栏单击“Execute program”按钮,执行7-1.exe程序。
运行结果(如果运行不成功,原因是什么?):
按committed、reserved、free等三种虚拟地址空间分别记录实验数据,其中“描述”是指对该组数据的简单描述,例如:对下列一组数据:
00010000-00012000<8.00KB>Committed,READWRITE,Private可描述为:具有READWRITE权限的已调配私有内存区。
将系统当前的自由区(free)虚拟地址空间填入表7-3中。
表7-3 实验记录
地址 大小 虚拟地址空间 Free Free 权限 描述 77d9f000-77da0000 (4.00 KB) 77e49000-77e50000 (28.0 KB) NOACCESS NOACCESS 77ee2000-77ef0000 (56.0 KB) 77f38000-77f40000 (32.0 KB) 77fb6000-77fc0000 (40.0 KB) 77fd1000-7c800000 (72.1 MB) 7c91d000-7c920000 (12.0 KB) 7c9b4000-7f6f0000 (45.2 MB) 7f7f0000-7ffa0000 (7.68 MB) 7ffd3000-7ffda000 (28.0 KB) 7ffdb000-7ffdf000 (16.0 KB) 00012000-00020000 (56.0 KB) 00021000-00030000 (60.0 KB) 00133000-00140000 (52.0 KB) 00276000-00280000 (40.0 KB) 002bd000-002c0000 (12.0 KB) 00301000-00310000 (60.0 KB) 00316000-00320000 (40.0 KB) 00361000-00370000 (60.0 KB) 00391000-003a0000 (60.0 KB) 003a1000-003b0000 (60.0 KB) 003b3000-003c0000 (52.0 KB) 003d0000-00400000 (192 KB) 00485000-00490000 (44.0 KB) 00558000-00560000 (32.0 KB) 00663000-00670000 (52.0 KB) 00a70000-62c20000 (1.53 GB) 62c29000-73fa0000 (275 MB) 7400b000-76300000 (34.9 MB) 7631d000-77be0000 (24.7 MB) 77c38000-77d10000 (864 KB) Free Free Free Free Free Free Free Free Free NOACCESS NOACCESS NOACCESS NOACCESS NOACCESS NOACCESS NOACCESS NOACCESS NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS Free NOACCESS
将系统当前的已调配区(committed)虚拟地址空间填入表7-4中
表7-4 实验记录 地址 大小 虚拟地址空间 Committed Committed Committed 权限 READWRITE READWRITE Private Private 描述 00010000-00012000 (8.00 KB) 00020000-00021000 (4.00 KB) 0012c000-0012d000 (4.00 KB) GUARD, REA Priva Private 0012c000-0012d000 (4.00 KB) 00130000-00133000 (12.0 KB) 00140000-00145000 (20.0 KB) 00240000-00246000 (24.0 KB) 00250000-00253000 (12.0 KB) 00260000-00276000 (88.0 KB) 00280000-002bd000 (244 KB) 002c0000-00301000 (260 KB) 00310000-00316000 (24.0 KB) 00320000-00361000 (260 KB) 00370000-00378000 (32.0 KB) 00380000-00388000 (32.0 KB) 00390000-00391000 (4.00 KB) 003a0000-003a1000 (4.00 KB) 003b0000-003b3000 (12.0 KB) 003c0000-003c3000 (12.0 KB) 00400000-00401000 (4.00 KB) 00401000-00470000 (444 KB) 00470000-00478000 (32.0 KB) 00478000-0047b000 (12.0 KB) 0047b000-0047d000 (8.00 KB) 0047d000-00481000 (16.0 KB) 00481000-00485000 (16.0 KB) 00490000-00494000 (16.0 KB) 00550000-00552000 (8.00 KB) 00560000-00663000 (1.01 MB) 00670000-006cd000 (372 KB) 00970000-00978000 (32.0 KB) 62c20000-62c21000 (4.00 KB) 62c21000-62c26000 (20.0 KB) 62c26000-62c27000 (4.00 KB) 62c27000-62c29000 (8.00 KB) 73fa0000-73fa1000 (4.00 KB) 73fa1000-73fe5000 (272 KB) 73fe5000-73fef000 (40.0 KB) 73fef000-73ff1000 (8.00 KB) Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed GUARD, RE READONLY READWRITE READWRITE READWRITE READONLY READONLY READONLY READONLY READONLY READWRITE READWRITE READWRITE READWRITE READONLY READWRITE READONLY EXECUTE_R, I READONLY READWRITE WRITECOPY READWRITE READONLY EXECUTE_RE M EXECUTE_RE M READONLY EXECUTE_RE M READWRITE READONLY EXECUTE_R READWRITE READONLY READONLY EXECUTE_RE I WRITECOPY READWRITE Private Mapped Private Private Mapped Mapped Mapped Mapped Mapped Mapped Private Private Private Private Mapped Private Image, Module: 7-1.exe Image Image Image Image Image Image Mapped Mapped Mapped Mapped Private Image, Module: LPK.DLL Image Image Image Image, Module: USP10.dll Image Image Image 73ff1000-73ff4000 (12.0 KB) 73ff4000-73ff5000 (4.00 KB) 73ff5000-7400b000 (88.0 KB) 76300000-76301000 (4.00 KB) 76301000-76316000 (84.0 KB) 76316000-76317000 (4.00 KB) 76317000-7631d000 (24.0 KB) 77be0000-77be1000 (4.00 KB) 77be1000-77c2d000 (304 KB) 77c2d000-77c2f000 (8.00 KB) 77c2f000-77c30000 (4.00 KB) 77c30000-77c31000 (4.00 KB) 77c31000-77c34000 (12.0 KB) 77c34000-77c38000 (16.0 KB) 77d10000-77d11000 (4.00 KB) 77d11000-77d70000 (380 KB) 77d70000-77d71000 (4.00 KB) 77d71000-77d72000 (4.00 KB) 77d72000-77d9f000 (180 KB) 77da0000-77da1000 (4.00 KB) 77da1000-77e16000 (468 KB) 77e16000-77e17000 (4.00 KB) 77e17000-77e1b000 (16.0 KB) 77e1b000-77e49000 (184 KB) 77e50000-77e51000 (4.00 KB) 77e51000-77edb000 (552 KB) 77edb000-77edc000 (4.00 KB) 77edc000-77ee2000 (24.0 KB) 77ef0000-77ef1000 (4.00 KB) 77ef1000-77f34000 (268 KB) 77f34000-77f35000 (4.00 KB) 77f35000-77f38000 (12.0 KB) 77f40000-77f41000 (4.00 KB) 77f41000-77fad000 (432 KB) 77fad000-77fae000 (4.00 KB) 77fae000-77fb6000 (32.0 KB) Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed WRITECOPY READWRITE READONLY READONLY EXECUTE_RE I READWRITE READONLY READONLY EXECUTE_RE I WRITECOPY READWRITE WRITECOPY READWRITE READONLY READONLY EXECUTE_RE I READWRITE WRITECOPY READONLY READONLY EXECUTE_RE I READWRITE WRITECOPY READONLY READONLY EXECUTE_RE I READWRITE READONLY READONLY EXECUTE_RE I READWRITE READONLY READONLY EXECUTE_RE I READWRITE READONLY Image Image Image Image, Module: IMM32.DLL Image Image Image Image, Module: msvcrt.dll Image Image Image Image Image Image Image, Module: USER32.dll Image Image Image Image Image, Module: ADVAPI32.dll Image Image Image Image Image, Module: RPCRT4.dll Image Image Image Image, Module: GDI32.dll Image Image Image Image, Module: SHLWAPI.dll Image Image Image 77fc0000-77fc1000 (4.00 KB) 77fc1000-77fce000 (52.0 KB) 77fce000-77fcf000 (4.00 KB) 77fcf000-77fd1000 (8.00 KB) 7c800000-7c801000 (4.00 KB) 7c801000-7c884000 (524 KB) 7c884000-7c887000 (12.0 KB) 7c887000-7c889000 (8.00 KB) 7c889000-7c91d000 (592 KB) 7c920000-7c921000 (4.00 KB) 7c921000-7c99c000 (492 KB) 7c99c000-7c99f000 (12.0 KB) 7c99f000-7c9a1000 (8.00 KB) 7c9a1000-7c9b4000 (76.0 KB) 7f6f0000-7f6f7000 (28.0 KB) 7ffa0000-7ffd3000 (204 KB) 7ffda000-7ffdb000 (4.00 KB) 7ffdf000-7ffe0000 (4.00 KB) 7ffe0000-7ffe1000 (4.00 KB) Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed Committed READONLY EXECUTE_RE I READWRITE READONLY READONLY EXECUTE_RE I READWRITE WRITECOPY READONLY READONLY EXECUTE_RE I READWRITE WRITECOPY READONLY EXECUTE_RE M READONLY READWRITE READWRITE READONLY Image, Module: Secur32.dll Image Image Image Image, Module: kernel32.dll Image Image Image Image Image, Module: ntdll.dll Image Image Image Image Mapped Mapped Private Private Private
将系统当前的保留区(reserved)虚拟地址空间填入表5-8中
表7-5 实验记录
地址 大小 虚拟地址空间 Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved 权限 描述 7f6f7000-7f7f0000 (996 KB) 7ffe1000-7fff0000 (60.0 KB) 00030000-0012c000 (0.98 MB) 00145000-00240000 (0.98 MB) 00246000-00250000 (40.0 KB) 00253000-00260000 (52.0 KB) 00378000-00380000 (32.0 KB) 00388000-00390000 (32.0 KB) 003c3000-003d0000 (52.0 KB) 00494000-00550000 (752 KB) 00552000-00558000 (24.0 KB) 006cd000-00970000 (2.63 MB) READONLY Mapped NOACCESS Private READONLY Private READONLY Private READONLY Private READONLY Mapped READONLY Private READONLY Private READONLY Private READONLY Mapped READONLY Mapped READONLY Mapped