我知道softice可以查看到GDT表的所有描述符,请问windbg是否可以查看GDT表?
谢谢!
使用dg命令就可以观察GDT表的各个表项,每个表项是按字段显示的,很友好,例如:
0:000> dg 8 0x40 P Si Gr Pr LoSel Base Limit Type l ze an es ng Flags---- -------- -------- ---------- - -- -- -- -- --------0008 00000000 ffffffff Code RE Ac 0 Bg Pg P Nl 00000c9b0010 00000000 ffffffff Data RW Ac 0 Bg Pg P Nl 00000c930018 00000000 ffffffff Code RE Ac 3 Bg Pg P Nl 00000cfb0020 00000000 ffffffff Data RW Ac 3 Bg Pg P Nl 00000cf30028 80042000 000020ab TSS32 Busy 0 Nb By P Nl 0000008b0030 ffdff000 00001fff Data RW Ac 0 Bg Pg P Nl 00000c930038 7ffdf000 00000fff Data RW Ac 3 Bg By P Nl 000004f30040 00000400 0000ffff Data RW 3 Nb By P Nl 000000f2
如果要观察GDT表的原始形式,那么可以通过!pcr或者r gdtr得到GDT表的基地址,然后使用内存观察命令观察:
lkd> !pcrKPCR for Processor 0 at ffdff000: Major 1 Minor 1 NtTib.ExceptionList: acb74c7c NtTib.StackBase: acb74df0 NtTib.StackLimit: acb71000 NtTib.SubSystemTib: 00000000 NtTib.Version: 00000000 NtTib.UserPointer: 00000000 NtTib.SelfTib: 7ffde000
SelfPcr: ffdff000 Prcb: ffdff120 Irql: 00000000 IRR: 00000000 IDR: ffffffff InterruptMode: 00000000 IDT: 8003f400 GDT: 8003f000 TSS: 80042000
CurrentThread: 8946b630 NextThread: 00000000 IdleThread: 80551d20
DpcQueue: lkd> dd 8003f0008003f000 00000000 00000000 0000ffff 00cf9b008003f010 0000ffff 00cf9300 0000ffff 00cffb008003f020 0000ffff 00cff300 200020ab 80008b048003f030 f0000001 ffc093df e0000fff 7f40f3fd8003f040 0400ffff 0000f200 00000000 000000008003f050 95000068 80008954 95680068 800089548003f060 2f30ffff 00009302 80003fff 0000920b8003f070 700003ff ff0092ff 0000ffff 80009a40
Hi!Raymond
谢谢你的热心解答!
我问这个问题是想查看一下GDT描述符的s位,然而从dg命令中看不到这个信息 因此,请教一下:
1.)有没有"比较友好"的方式办法能查看GDT描述符的s位的状况(我想看一下LDT在GDT的信息)
2.)听说winxp不再使用CPU的 IDT表,请问是这样吗?(也许用windbg能够直接看到,可惜我不会,:) )