在Ring0下,fs指向PCR,而PRCB是PCR的一个扩展。 可以用!pcr和!prcb命令查看,例如: kd> !pcr KPCR for Processor 0 at ffdff000: Major 1 Minor 1 NtTib.ExceptionList: 80551158 NtTib.StackBase: 80551970 NtTib.StackLimit: 8054eb80 NtTib.SubSystemTib: 00000000 NtTib.Version: 00000000 NtTib.UserPointer: 00000000 NtTib.SelfTib: 00000000 SelfPcr: ffdff000 Prcb: ffdff120 Irql: 0000001c IRR: 00000004 IDR: ffff20d8 InterruptMode: 00000000 IDT: 8003f400 GDT: 8003f000 TSS: 80042000 CurrentThread: 8055a320 NextThread: 00000000 IdleThread: 8055a320 DpcQueue: 0x8055a980 0x804dd87d [Normal] nt!KiTimerExpiration kd> !prcb PRCB for Processor 0 at ffdff120: Threads-- Current 8055a320 Next 00000000 Idle 8055a320 Number 0 SetMember 1 Interrupt Count -- 00001395 Times -- Dpc 00000008 Interrupt 00000034 Kernel 00000570 User 00000037 也可以直接查看FS段,例如: kd> r fs fs=00000030 kd> dg 30 P Si Gr Pr Lo Sel Base Limit Type l ze an es ng Flags ---- -------- -------- ---------- - -- -- -- -- -------- 0030 ffdff000 00001fff Data RW Ac 0 Bg Pg P Nl 00000c93 kd> dt _KPCR ffdff000 nt!_KPCR +0x000 NtTib : _NT_TIB +0x01c SelfPcr : 0xffdff000 _KPCR +0x020 Prcb : 0xffdff120 _KPRCB +0x024 Irql : 0x1c '' +0x028 IRR : 4 +0x02c IrrActive : 0 +0x030 IDR : 0xffff20d8 +0x034 KdVersionBlock : 0x8054d738 Void +0x038 IDT : 0x8003f400 _KIDTENTRY +0x03c GDT : 0x8003f000 _KGDTENTRY +0x040 TSS : 0x80042000 _KTSS +0x044 MajorVersion : 1 +0x046 MinorVersion : 1 +0x048 SetMember : 1 +0x04c StallScaleFactor : 0x64 +0x050 DebugActive : 0 '' +0x051 Number : 0 '' +0x052 Spare0 : 0 '' +0x053 SecondLevelCacheAssociativity : 0 '' +0x054 VdmAlert : 0 +0x058 KernelReserved : [14] 0 +0x090 SecondLevelCacheSize : 0 +0x094 HalReserved : [16] 0 +0x0d4 InterruptMode : 0 +0x0d8 Spare1 : 0 '' +0x0dc KernelReserved2 : [17] 0 +0x120 PrcbData : _KPRCB
|