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

WinDbg

帖子发起人: merry   发起时间: 2009-04-15 13:22 下午   回复: 8

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

发帖数前25位
注册: 2008-09-26
发 贴: 61
请问如何用windbg验证SSDT和IDT存储在只读页面?
Reply Quote
看到有资料写到:
      SSDT和IDT都在操作系统管理的只读页面。

Q:请问如何用windbg验证SSDT和IDT存储在只读页面?
IP 地址: 已记录   报告
   2009-04-15, 13:40 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
Reply Quote
找到地址后(r igtr),使用!pte命令来观察PTE,里面的位1为1表示可以读写,0代表只读,《软件调试》P56页或者IA-32手册上有描述。
IP 地址: 已记录   报告
   2009-04-15, 16:15 下午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
Reply Quote
Hi!Raymond老师,

Quote:
r igtr?

IGTR是什么寄存器,查了一下IA-32 Vol.3A手册没有找到。谢谢!
IP 地址: 已记录   报告
   2009-04-15, 21:58 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
Reply Quote
就是CPU中的IDTR寄存器,《软件调试》P273
IP 地址: 已记录   报告
   2009-04-16, 17:27 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
Reply Quote
抱歉,IGTR属笔误,应该是IDTR。GDT表的有关寄存器叫GDTR。
IP 地址: 已记录   报告
   2009-04-16, 17:46 下午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
Reply Quote
嗨,想验证简单

整一驱动,直接操作那些地址,蓝了,就对了 :P
IP 地址: 已记录   报告
   2009-04-17, 13:37 下午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
Reply Quote
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 离线,最后访问时间: 2011/8/11 15:19:46 compiler

发帖数前50位
注册: 2008-04-22
发 贴: 21
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
Reply Quote
00000000004009E3 看这个的bit1
IP 地址: 已记录   报告
   2009-04-22, 09:26 上午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
Re: 请问如何用windbg验证SSDT和IDT存储在只读页面?
Reply Quote
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存储在只读页面?

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