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内核调试

帖子发起人: 王宇   发起时间: 2008-06-26 08:55 上午   回复: 29

Print Search
帖子排序:    
   2008-06-26, 08:55 上午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
贴张图,原来我做保护模式 - 分页机制时的实验截图。

根据于渊的例子改的,不过于渊的例子有些许问题,我做了修改:
(1) 其自定义的、顺序的页目录、页表初始化过程
(2) 假定 LinearAddrDemo 的线性地址为 XXXXX000h
(3) 返回 DOS 不关闭分页机制,导致在真实的环境及某些虚拟机下 (VMWare不检测) 重启


代码大致流程是:
1. 由实模式进入保护模式
2. 检测机器可用内存大小
3. 初始化页表和页目录
4. 切换页目录改变地址映射关系

产生的结果就是:切换页目录前访问某地址是内容 FOO,切换页目录后访问某地址是内容 BAR。


IP 地址: 已记录   报告
   2008-06-26, 10:57 上午
skyworth 离线,最后访问时间: 2009/12/15 16:03:09 skyworth

发帖数前25位
注册: 2008-06-07
发 贴: 55
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
刚刚看了一下微软官方的说明,原来我的系统真的是打开了PAE了,原因是启用呢NE。
呵呵,这样好,正好学习一下启用了PAE之后的地址转换。

原文地址:
http://www.microsoft.com/whdc/system/platform/server/PAE/PAEdrv.mspx

下面是摘要:
To boot the system and utilize PAE memory, the /PAE switch must be added to the corresponding entry in the Boot.ini file. If a problem should arise, Safe Mode may be used, which causes the system to boot using the normal kernel (support for only 4 GB of RAM) even if the /PAE switch is part of the Boot.ini file.

The PAE mode kernel requires an Intel Architecture processor, Pentium Pro or later, more than 4 GB of RAM, and Windows 2000, Windows XP, or Windows Server 2003.

The PAE kernel can be enabled automatically without the /PAE switch present in the boot entry if the system has DEP enabled (/NOEXECUTE switch is present) or the system processor supports hardware-enforced DEP. Presence of the /NOEXECUTE switch on a system with a processor that supports hardware-enforced DEP implies the /PAE switch. If the system processor is capable of hardware-enforced DEP and the /NOEXECUTE switch is not present in the boot entry, Windows assumes /NOEXECUTE=optin by default and enables PAE mode. For more information, see the topic "Boot Options in a Boot.ini File" in the Windows DDK.


IP 地址: 已记录   报告
   2008-06-26, 13:57 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
确实是启用了PAE的情况,我今晚会写篇短文详细说明一下。
IP 地址: 已记录   报告
   2008-06-26, 21:36 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote

 Raymond wrote:
确实是启用了PAE的情况,我今晚会写篇短文详细说明一下。

短文的链接为:http://advdbg.org/blogs/advdbg_system/articles/627.aspx

感谢各位的参与和讨论.

 


IP 地址: 已记录   报告
   2008-06-26, 22:10 下午
skyworth 离线,最后访问时间: 2009/12/15 16:03:09 skyworth

发帖数前25位
注册: 2008-06-07
发 贴: 55
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
呵呵,谢谢Raymond,我这几天在网上找资料找得晕头转向的,想看看有没有现成的资料,
谁知道都语焉不详,图示也有唐突,没办法,只好横下心来看Intel的Developer Guide,
谁知道今天晚上上来,Raymond都弄好了,太好了。
IP 地址: 已记录   报告
   2008-06-26, 22:39 下午
skyworth 离线,最后访问时间: 2009/12/15 16:03:09 skyworth

发帖数前25位
注册: 2008-06-07
发 贴: 55
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
呵呵,搞定。
IP 地址: 已记录   报告
   2008-06-27, 09:22 上午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
Raymond 老师好文呀!

我觉得为了加深理解应该这样:

理论深度 - 结合《Programming the 80386》和 Intel手册;
实践深度 - 结合《自己动手写操作系统》第三章和《Undocumented Windows 2000》第四章。
IP 地址: 已记录   报告
   2008-06-27, 20:18 下午
skyworth 离线,最后访问时间: 2009/12/15 16:03:09 skyworth

发帖数前25位
注册: 2008-06-07
发 贴: 55
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
呵呵,其实最好的资料还是Intel手册,只是过于枯燥了点。
IP 地址: 已记录   报告
   2008-07-29, 16:58 下午
xsk 离线,最后访问时间: 2008/7/30 11:05:34 xsk

发帖数前500位
注册: 2008-07-29
发 贴: 2
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
我也碰到了,这样的问题,可以肯定你的机子启用了PAE机制,如果不启用PAE机制,每个进程的DirBase 的低12位应该是0,启用PAE机制低5位是0。在lkd模式下,!pte显示的肯定是不正确的,但是如果采用PAE下的三级映射的方法算出物理地址,该物理地址显示的就是正确的。在双机调试并开启PAE的情况下使用!pte得到的结果是这样(在我得机子上)
VA 000B2078
PDE at 00000000C0600000 PTE at 00000000C0000590
contains 0000000003780062 contains 0000000000000000
pfn 3780 ---DA--UWEV
这个不知道应该怎样来验证,总觉得有问题。
但是直接使用 dd 000b2078 结果是正确的,不象在lkd情况下就完全是错的
IP 地址: 已记录   报告
   2008-07-29, 20:37 下午
skyworth 离线,最后访问时间: 2009/12/15 16:03:09 skyworth

发帖数前25位
注册: 2008-06-07
发 贴: 55
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
dd 000b2078 dump出来的是线性地址的内容,当然是正确的。
请看一下Raymond老师的博文,讲解得很详细的。
IP 地址: 已记录   报告
   2008-07-30, 11:08 上午
xsk 离线,最后访问时间: 2008/7/30 11:05:34 xsk

发帖数前500位
注册: 2008-07-29
发 贴: 2
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
你可以在xp sp2,开启PAE的情况下,在实验一下《软件调试》里面那个观察windbg分页机制的实验,看看lkd情况下会有什么问题
IP 地址: 已记录   报告
   2008-07-30, 21:36 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
xsk: 对于开启PAE的系统,应该按照我上面提到博客文章中描述的来做:http://advdbg.org/blogs/advdbg_system/articles/627.aspx
很同意你关于lkd中!pte命令可能不正确的说法。
IP 地址: 已记录   报告
   2008-08-02, 18:07 下午
mingjunzhang 离线,最后访问时间: 2012/12/4 23:25:06 mingjun

发帖数前100位
注册: 2007-05-29
发 贴: 11
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
                                                                 

IP 地址: 已记录   报告
   2008-08-02, 19:35 下午
mingjunzhang 离线,最后访问时间: 2012/12/4 23:25:06 mingjun

发帖数前100位
注册: 2007-05-29
发 贴: 11
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
xp sp2 /debug 环境下有PatchGuard么?
网上都说是64位上才有阿?

IP 地址: 已记录   报告
   2008-08-02, 20:18 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
Reply Quote
没有,我前面关于PatchGuard的猜测是错误的,实际上是因为启用了PAE。
IP 地址: 已记录   报告
  总页数 2 第 2 页 [共有 30 条记录] < 1 2
高端调试 » 软件调试 » Windows内核调试 » Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。

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