|
|
|
|
|
|
|
Windows内核调试
帖子发起人: 王宇 发起时间: 2008-06-26 08:55 上午 回复: 29
|
帖子排序:
|
|
|
|
2008-06-26, 08:55 上午
|
王宇
注册: 2007-05-08
发 贴: 306
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
贴张图,原来我做保护模式 - 分页机制时的实验截图。
根据于渊的例子改的,不过于渊的例子有些许问题,我做了修改:
(1) 其自定义的、顺序的页目录、页表初始化过程
(2) 假定 LinearAddrDemo 的线性地址为 XXXXX 000h (3) 返回 DOS 不关闭分页机制,导致在真实的环境及某些虚拟机下 (VMWare不检测) 重启 代码大致流程是: 1. 由实模式进入保护模式 2. 检测机器可用内存大小 3. 初始化页表和页目录 4. 切换页目录改变地址映射关系 产生的结果就是:切换页目录前访问某地址是内容 FOO,切换页目录后访问某地址是内容 BAR。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-06-26, 10:57 上午
|
skyworth
注册: 2008-06-07
发 贴: 55
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
刚刚看了一下微软官方的说明,原来我的系统真的是打开了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 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
确实是启用了PAE的情况,我今晚会写篇短文详细说明一下。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-06-26, 21:36 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-06-26, 22:10 下午
|
skyworth
注册: 2008-06-07
发 贴: 55
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
呵呵,谢谢Raymond,我这几天在网上找资料找得晕头转向的,想看看有没有现成的资料,
谁知道都语焉不详,图示也有唐突,没办法,只好横下心来看Intel的Developer Guide,
谁知道今天晚上上来,Raymond都弄好了,太好了。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-06-26, 22:39 下午
|
skyworth
注册: 2008-06-07
发 贴: 55
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-06-27, 09:22 上午
|
王宇
注册: 2007-05-08
发 贴: 306
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
Raymond 老师好文呀!
我觉得为了加深理解应该这样:
理论深度 - 结合《Programming the 80386》和 Intel手册;
实践深度 - 结合《自己动手写操作系统》第三章和《Undocumented Windows 2000》第四章。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-06-27, 20:18 下午
|
skyworth
注册: 2008-06-07
发 贴: 55
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
呵呵,其实最好的资料还是Intel手册,只是过于枯燥了点。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-07-29, 16:58 下午
|
xsk
注册: 2008-07-29
发 贴: 2
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
我也碰到了,这样的问题,可以肯定你的机子启用了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
注册: 2008-06-07
发 贴: 55
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
dd 000b2078 dump出来的是线性地址的内容,当然是正确的。
请看一下Raymond老师的博文,讲解得很详细的。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-07-30, 11:08 上午
|
xsk
注册: 2008-07-29
发 贴: 2
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
你可以在xp sp2,开启PAE的情况下,在实验一下《软件调试》里面那个观察windbg分页机制的实验,看看lkd情况下会有什么问题
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-07-30, 21:36 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
xsk: 对于开启PAE的系统,应该按照我上面提到博客文章中描述的来做:http://advdbg.org/blogs/advdbg_system/articles/627.aspx
很同意你关于lkd中!pte命令可能不正确的说法。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-08-02, 18:07 下午
|
mingjun
注册: 2007-05-29
发 贴: 11
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-08-02, 19:35 下午
|
mingjun
注册: 2007-05-29
发 贴: 11
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
xp sp2 /debug 环境下有PatchGuard么? 网上都说是64位上才有阿?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2008-08-02, 20:18 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
没有,我前面关于PatchGuard的猜测是错误的,实际上是因为启用了PAE。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
|
总页数 2 第 2 页 [共有 30 条记录]
|
< 1 2 |
|
|
高端调试 » 软件调试 » Windows内核调试 » 关于 《软件调试》 2.7.5 使用WinDBG观察分页机制。
|
|
|
|
|
|