|
|
|
|
|
|
|
WinDbg
帖子发起人: merry 发起时间: 2009-04-15 13:22 下午 回复: 8
|
帖子排序:
|
|
|
|
2009-04-15, 13:22 下午
|
merry
注册: 2008-09-26
发 贴: 61
|
请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
看到有资料写到: SSDT和IDT都在操作系统管理的只读页面。
Q:请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-15, 13:40 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
找到地址后(r igtr),使用!pte命令来观察PTE,里面的位1为1表示可以读写,0代表只读,《软件调试》P56页或者IA-32手册上有描述。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-15, 16:15 下午
|
merry
注册: 2008-09-26
发 贴: 61
|
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
Hi!Raymond老师,
Quote:
r igtr?
IGTR是什么寄存器,查了一下IA-32 Vol.3A手册没有找到。谢谢!
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-15, 21:58 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
就是CPU中的IDTR寄存器,《软件调试》P273
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-16, 17:27 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
抱歉,IGTR属笔误,应该是IDTR。GDT表的有关寄存器叫GDTR。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-16, 17:46 下午
|
王宇
注册: 2007-05-08
发 贴: 306
|
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
嗨,想验证简单
整一驱动,直接操作那些地址,蓝了,就对了 :P
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-17, 13:37 下午
|
merry
注册: 2008-09-26
发 贴: 61
|
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
Quote:
整一驱动,直接操作那些地址,蓝了,就对了 :P
Sure! It works, but it's my last choice. :P
-----------------------------------------------------------------------
Quote:
使用!pte命令来观察PTE,里面的位1为1表示可以读写,0代表只读
-----------------------------------------------------------------------
kd> r idtr
idtr=8003f400
kd> !pte 8003f400
VA 8003f400
PDE at 00000000C0602000 PTE at 00000000C04001F8
contains 00000000002A1163 contains 000000000003F163
pfn 2a1 -G-DA--KWEV pfn 3f -G-DA--KWEV
Q1:idt所在页面是可写(W)和可执行(E)的吗?
kd> dd nt!keservicedescriptortable
8055b6e0 80503734 00000000 0000011c 80503ba8
8055b6f0 00000000 00000000 00000000 00000000
8055b700 00000000 00000000 00000000 00000000
8055b710 00000000 00000000 00000000 00000000
8055b720 00000002 00002710 bf80da45 00000000
8055b730 ba571a80 b981f9e0 89903f9c 806f4040
8055b740 00000000 00000000 9c4487d2 fffffff7
8055b750 a7fb4492 01c9bc7b 00000000 00000000
kd> !pte 80503734
VA 80503734
PDE at 00000000C0602010 PTE at 00000000C0402818
contains 00000000004009E3 contains 0000000000000000
pfn 400 -GLDA--KWEV LARGE PAGE pfn 503
Q2:SSDT所在页面显示的是 LARGE PAGE,如何知道其读写属性?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-20, 08:50 上午
|
compiler
注册: 2008-04-22
发 贴: 21
|
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
00000000004009E3 看这个的bit1
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-04-22, 09:26 上午
|
merry
注册: 2008-09-26
发 贴: 61
|
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
Quote 1: kd> !pte 80503734
PDE at 00000000C0602010 PTE at 00000000C0402818 contains 00000000004009E3 contains 0000000000000000
Quote 2: 00000000004009E3 看这个的bit1
我认为应该看PTE中contains的数据,而不是PDE的contains。 原因如下: 9E3中的‘3’---0011,第一位为1,应可写,然而SSDT的页面为只读,所以不应该看这个数据。
因为系统使用了PAE,所以和以前显示数据方式不同,故有此问题。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 软件调试 » WinDbg » Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
|
|
|
|
|
|