Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核

帖子发起人: merry   发起时间: 2009-03-13 19:45 下午   回复: 4

Print Search
帖子排序:    
   2009-03-13, 19:45 下午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
请问CPU页目录的基地址的问题?
Reply Quote

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 上午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请问CPU页目录的基地址的问题?
Reply Quote
这是由于启用了CPU的PAE功能,参见下面的文章:
http://advdbg.org/blogs/advdbg_system/articles/627.aspx
IP 地址: 已记录   报告
   2009-03-17, 09:05 上午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
Re: 请问CPU页目录的基地址的问题?
Reply Quote

Hi!Raymond,

   你提到的文章我仔细看了后,又查阅 Windows Internals 4th,有2个问题请教一下:

  1.PAE是不是在Winxp 默认情况下是启用的

 2.在《软件调试》一书中的calc.exe页面地址转换中,保存"123456789"缓冲区的这个地址,是逻辑地址,还是线性地址?

   从书中实例来看,获得这个地址后就向页面物理地址转换,应该是线性地址,但是在windbg中调试应用程序看到的应该是逻辑地址。

   因此,请Raymond能否再解释一下,谢谢!


IP 地址: 已记录   报告
   2009-03-24, 15:12 下午
aa1ss2 离线,最后访问时间: 2009/4/14 11:30:54 aa1ss2

发帖数前75位
注册: 2009-03-24
发 贴: 14
Re: 请问CPU页目录的基地址的问题?
Reply Quote


!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 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请问CPU页目录的基地址的问题?
Reply Quote
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页目录的基地址的问题?

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.