|
|
|
|
|
|
|
Windows内核
帖子发起人: merry 发起时间: 2009-03-13 19:45 下午 回复: 4
|
帖子排序:
|
|
|
|
2009-03-13, 19:45 下午
|
merry
注册: 2008-09-26
发 贴: 61
|
|
|
OS:Winxp sp2
据我所知,windbg查看页目录的基地址有2种方法:
1)使用!process命令观察DirBase项数据 2)使用 r cr3命令
可是令我奇怪的是, 1)DirBase项数据和r cr3显示的结果不一样 2)按道理作为页目录的基地址,应该低12 bit位应该全为0,可这2个结果都不是这样。
我是用livekd进行本机调试的,进入livekd后没有运行其他命令,分别输入!process命令和r cr3命令发现这个情况的。
请问一下原因?谢谢!
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-03-14, 11:12 上午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
这是由于启用了CPU的PAE功能,参见下面的文章:
http://advdbg.org/blogs/advdbg_system/articles/627.aspx
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-03-17, 09:05 上午
|
merry
注册: 2008-09-26
发 贴: 61
|
|
|
Hi!Raymond,
你提到的文章我仔细看了后,又查阅 Windows Internals 4th,有2个问题请教一下:
1.PAE是不是在Winxp 默认情况下是启用的
2.在《软件调试》一书中的calc.exe页面地址转换中,保存"123456789"缓冲区的这个地址,是逻辑地址,还是线性地址?
从书中实例来看,获得这个地址后就向页面物理地址转换,应该是线性地址,但是在windbg中调试应用程序看到的应该是逻辑地址。
因此,请Raymond能否再解释一下,谢谢!
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-03-24, 15:12 下午
|
aa1ss2
注册: 2009-03-24
发 贴: 14
|
|
|
!process 和 r指令显示的DirBase都是一样的,如果不一样,那么就是在不同的进程环境下。
至于低12位不为0,是因为软件没有把标志区分开来,使用的时候因该加个掩码去掉,标志的作用请参考书或者上面的连接,那里都有详细的说明。
这个是我机子上面看记事本的情况
kd> !process
PROCESS 81f078a8 SessionId: 0 Cid: 0600 Peb: 7ffd3000 ParentCid: 01dc
DirBase: 03ab01e0 ObjectTable: e1182418 HandleCount: 95.
Image: notepad.exe
VadRoot 82023cc8 Vads 80 Clone 0 Private 289. Modified 407. Locked 0.
DeviceMap e184e3b8
Token e111fd48
ElapsedTime 00:07:44.000
UserTime 00:00:00.031
KernelTime 00:00:08.609
QuotaPoolUsage[PagedPool] 70724
QuotaPoolUsage[NonPagedPool] 4320
Working Set Sizes (now,min,max) (1204, 50, 345) (4816KB, 200KB, 1380KB)
PeakWorkingSetSize 1204
VirtualSize 36 Mb
PeakVirtualSize 37 Mb
PageFaultCount 1295
MemoryPriority BACKGROUND
BasePriority 8
CommitCharge 498
THREAD 81f07630 Cid 0600.05f4 Teb: 7ffdf000 Win32Thread: e175e588 RUNNING on processor 0
kd> r cr3
cr3=03ab01e0
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-03-24, 22:23 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
XP的SP2开始默认启用PAE,观察内核文件的完整文件名就可以知道系统是否启用PAE,比如下面的内核就是PAE版本的:
lkd> lm vm nt
start end module name
804d7000 806cdc80 nt (pdb symbols) d:\symbols\ntkrnlpa.pdb\CF7B79A8CE864FCF8ABF248F0B69F4C91\ntkrnlpa.pdb
Loaded symbol image file: ntkrnlpa.exe
Image path: ntkrnlpa.exe
Image name: ntkrnlpa.exe
在保护模式下,逻辑地址是指段选择子和偏移,因为Windows下的普通数据段和代码段的基地址都是0,所以逻辑地址的偏移值就等于线性地址,二者已经没有什么差异。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 内核探秘 » Windows内核 » Re: 请问CPU页目录的基地址的问题?
|
|
|
|
|
|