本节内容 KPCR:CPU控制区(Processor Control Region) 视频提供:昆山滴水信息技术有限公司 官网地址:www.dtdishui.com 论坛地址:www.dtdebug.com QQ交流 :49759272
内容回顾 进程在内核中对应结构体:EPROCESS 线程在内核中对应结构体:ETHREAD CPU在内核中也有一个对应的结构体: KPCR
1、KPCR介绍 1) 当线程进入0环时,FS:[0]指向KPCR(3环时FS:[0] -> TEB) 2) 每个CPU都有一个KPCR结构体(一个核一个) 3) KPCR中存储了CPU本身要用的一些重要数据:GDT、IDT以及线程相关的一些信息。 (在winbbg中查看KPCR结构体)
2、_NT_TIB主要成员介绍 1) +0x000 ExceptionList : Ptr32_EXCEPTION_REGISTRATION_RECORD 当前线程内核异常链表(SEH) 2) +0x004 StackBase : Ptr32 Void +0x008 StackLimit : Ptr32 Void 当前线程内核栈的基址和大小 3) +0x018 Self : Ptr32 _NT_TIB 指向自己(也就是指向_NT_TIB结构) 这样设计的目的是为了查找方便.
3、KPCR的其他成员介绍 1) +0x01c SelfPcr : Ptr32 _KPCR 指向自己,方便寻址 2) +0x020 Prcb : Ptr32 _KPRCB 指向拓展结构体PRCB 3) +0x038 IDT : Ptr32 _KIDTENTRY IDT表基址 4) +0x03c GDT : Ptr32 _KGDTENTRY GDT表基址
4、KPCR的其他成员介绍 5) +0x040 TSS : Ptr32 _KTSS 指针,执行TSS任务段,每个CPU都有一个TSS任务段. 6) +0x051 Number : UChar CPU编号:0 1 2 3 4 5。。。 7) +0x120 PrcbData : _KPRCB 拓展结构体
5、PRCB成员介绍 +0x004 CurrentThread : Ptr32 _KTHREAD +0x008 NextThread : Ptr32 _KTHREAD +0x00c IdleThread : Ptr32 _KTHREAD 当前线程 即将切换的下一个线程 空闲线程
6、特别强调: 我们课程里面讲解的内容,与《内核情景分析》《Windows内核原理与实现》均有不同。 ReactOS是开源免费的Windows NT系列(含NT4.0/2000/XP/2003)克隆操作系统 WRK 是微软针对教育和学术界开放的 Windows 内核的部分源码 而我们的课程是基于Windows XP SP2/SP3 二进制文件. 微软并不开源,很多内核成员的作用需要自己去分析.
7、课后练习: VIP会员可见