PCR和PRCB
在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

浙公网安备 33010602011771号