《软件调试》 2.7.6 4M内存页情况 第 60 页, 有个例子将系统中的线性地址 0x94a0d678 翻译成 物理地址。 我自己做实验的时候, 不知道拿什么地址来做, 然后我就去找大内存页面, 从!process 0 0 里面 的 DirBase 里面 随便找几个PDE表, 但是看到位7 都是0, 没能找到大内存页, 后来试了很多个 找到一个带L 大页面标志的PDE, 但是还是不知道用什么虚拟地址。。。囧.....所以请教怎样找到大内页, 首先CR4里面的 PSE标志位 我确认过, 系统是确认了大页面支持的, 小弟在此向各位大侠和张老师求教了。
对了, 有没有交流群啊, 我的QQ: 840211593求加.
通常NT内核本身会使用大页面,所以可以观察PsLoadedModuleList这个地址。
每次内核调试开始时,WinDBG都会显示这个地址:
Kernel base = 0x81808000 PsLoadedModuleList = 0x8191fc70
以下是网友提议的QQ群:
http://advdbg.org/forums/5851/ShowPost.aspx
张老师, 你好, 我用PsLoadedModuleList 的 地址, 做实验, 但是结果好像不是大内存页, 我好像不是通常的情况...麻烦您抽空帮我看看
lkd> .restartUnable to read head of debugger data listConnected to Windows XP 2600 x86 compatible target, ptr64 FALSESymbol search path is: srv*D:\Symbols*http://msdl.microsoft.com/download/symbolsExecutable search path is: *******************************************************************************WARNING: Local kernel debugging requires booting with kerneldebugging support (/debug or bcdedit -debug on) to work optimally.*******************************************************************************Windows XP Kernel Version 2600 (Service Pack 3) MP (2 procs) Free x86 compatibleProduct: WinNt, suite: TerminalServer SingleUserTSBuilt by: 2600.xpsp_sp3_gdr.101209-1647Kernel base = 0x804d8000 PsLoadedModuleList = 0x805644c0Debug session time: Sun Aug 11 13:02:49.125 2013 (GMT+8)System Uptime: 0 days 0:57:54.750lkd> !pte 805644c0 VA 805644c0PDE at C0300804 PTE at C0201590contains 0003D163 contains 00564163pfn 3d -G-DA--KWEV pfn 564 -G-DA--KWEV
lkd> !process 0 0 systemPROCESS 897ac7c0 SessionId: none Cid: 0004 Peb: 00000000 ParentCid: 0000 DirBase: 0a040000 ObjectTable: e1001da8 HandleCount: 242. Image: System
lkd> !dd a040000 + 805/4*4# a040804 0003d163 0003e163 09043963 09044963# a040814 09045963 09046963 09047963 09048963# a040824 09049963 0904a963 0904b963 0904c963# a040834 0904d963 0904e963 0904f963 09050963# a040844 09051963 09052963 09053963 09054963# a040854 09055963 09056963 09057963 09058963# a040864 09059963 0905a963 0905b963 0905c963# a040874 0905d963 0905e963 0905f963 09060963lkd> .formats 3d163Evaluate expression: Hex: 0003d163 Decimal: 250211 Octal: 00000750543 Binary: 00000000 00000011 11010001 01100011 Chars: ...c Time: Sun Jan 04 05:30:11 1970 Float: low 3.5062e-040 high 0 Double: 1.23621e-318lkd> !dd 3d000 + 164*4# 3d590 00564163 00565163 00566163 00567163# 3d5a0 00568163 00569163 0056a163 0056b163# 3d5b0 0056c163 0056d121 0056e121 0056f121# 3d5c0 00570121 00571121 00572121 00573121# 3d5d0 00574121 00575121 00576121 00577121# 3d5e0 00578121 00579121 0057a121 0057b121# 3d5f0 0057c121 0057d121 0057e121 0057f121# 3d600 00580121 00581121 00582121 00583121lkd> !dd 5644c0# 5644c0 897fd390 891d9e50 00000000 00000000# 5644d0 00000000 00000000 00000000 00000000# 5644e0 8056b960 80568b80 00000000 00000000# 5644f0 00000000 00000000 00000000 00000000# 564500 00000000 00000000 00000000 00000000# 564510 00000000 00000000 80551800 80551000# 564520 80550400 8054f000 80553600 80552000# 564530 00000000 0000000b 0000000b 8965cb50lkd> dd 805644c0805644c0 897fd390 891d9e50 00000000 00000000805644d0 00000000 00000000 00000000 00000000805644e0 8056b960 80568b80 00000000 00000000805644f0 00000000 00000000 00000000 0000000080564500 00000000 00000000 00000000 0000000080564510 00000000 00000000 80551800 8055100080564520 80550400 8054f000 80553600 8055200080564530 00000000 0000000b 0000000b 8965cb50
按照上面的实验结果, 这个地址应该是在4KB页面上的。
恩,不是大页面。什么配置的系统。
下面是VirtualBox中的XP SP3的情况,用了大页面:
Windows XP Kernel Version 2600 (Service Pack 3) UP Free x86 compatible
Kernel base = 0x804d7000 PsLoadedModuleList = 0x8055b1c0
kd> !pte 0x8055b1c0 VA 8055b1c0PDE at C0300804 PTE at C020156Ccontains 0003E163004001E3 contains 0000000000000000pfn 16300400 -GLDA--KWEV LARGE PAGE pfn 1630055b
我是用WMWARE 也是XP SP3系统, 系统刚装没几天, 没有做过特殊的配置。囧....
http://image142-c.poco.cn/mypoco/myphoto/20130811/19/17400567820130811193808072.png
大页面支持是可配置的,检查一下虚拟机的CPU设置中是否有相关的选项...
我找不到配置.... 只是确定支持PSE。 网上找了N多资料, 百度 谷歌都用了, 还尝试用蹩脚的英文搜索 “Enable 4M Page", "Enable PSE", "Enable Large Page", 貌似都没找到什么方法配置....算了这个不纠结, 这个原理已经懂了。 谢谢张老师
0: kd> .formats @cr4Evaluate expression: Hex: 000006d9 Decimal: 1753 Octal: 00000003331 Binary: 00000000 00000000 00000110 11011001 Chars: .... Time: Thu Jan 01 08:29:13 1970 Float: low 2.45648e-042 high 0 Double: 8.66097e-321