介绍

表示插了1个CPU,里面有4个物理核心,还有8个逻辑处理器(模拟核心),也就是常说的四核八线程
每个核都有一套寄存器cr0-cr8,IDT,GDT等,而KPCR结构则是用来描述这些寄存器的
dt _KPCR 查看结构体

查看核心数
dd KeNumberProcessors//包含模拟核心

获取每个核心KPRCB基地址
dd KIPROCESSORBLOCK

因此我们可以通过计算偏移获得每个核心KPCR的基地址

dt _KPCR (0x83f4ad20-0x120)

结构中常用成员
+0x000 Used_ExceptionList : 0x83f4713c _EXCEPTION_REGISTRATION_RECORD //异常链表 SEH链表
+0x004 Used_StackBase : (null) //栈基址
+0x010 ContextSwitches : 0x32bd6c //统计内核与应用层切换次数
+0x01c SelfPcr : 0x83f4ac00 _KPCR //指向KPCR自己
+0x020 Prcb : 0x83f4ad20 _KPRCB //指向KPRCB
+0x024 Irql : 0x1f
+0x034 KdVersionBlock : 0x83f49c00 Void//0号核心才有
+0x038 IDT : 0x80b95400 _KIDTENTRY
+0x03c GDT : 0x80b95000 _KGDTENTRY
+0x040 TSS : 0x801e4000 _KTSS
+0x051 Number : 0 '' //CPU编号
再查看KPRCB
+0x004 CurrentThread : Ptr32 _KTHREAD //当前线程
+0x008 NextThread : Ptr32 _KTHREAD //下一个线程
+0x00c IdleThread : Ptr32 _KTHREAD //系统空闲线程
0号CPU专有的结构——_DBGKD_GET_VERSION64
+0x010 KernBase : 0xffffffff`83e1f000 //内核文件基地址

+0x018 PsLoadedModuleList : 0xffffffff`83f69850 //遍历驱动的结构地址

读取当前驱动有些问题,我们可以通过驱动链表,读取下一个驱动的相关结构信息,是可以正常显示的
+0x020 DebuggerDataList : 0xffffffff`8418ffec //调试的相关信息 |