-
-
Windows内核-进程线程(四)
-
发表于:
2022-8-10 22:33
9917
-
1.Project-->New Project-->选择wrk目录-->ok
2.Add and Remove Project Files--->选中四个文件-->Add Tree
3.搜索
kpcr:cpu核控制块,cpu一个核一个kpcr结构
fs=0x30 在内核中的时候,指向的是kpcr结构
fs=0x3b 在应用层的时候,指向的是当前线程的TEB
1.kpcr结构
2.KiProcessorBlock
KiProcessorBlock:cpu控制扩展块数组,指向的是KPCR的0x120位置
KeNumberProcessors:核数量
扩展块
3.+0x000 NtTib
Windows是微内核,分内核结构和执行体结构
内核结构:只在内核中使用(KPROCESS属于内核结构)
执行体结构:专门用于和R3打交道 (EPROCESS属于执行体)
函数类型
Ex:执行体函数,进程、线程、链表、对象属性、赋值、取值、加锁相关
Ke:内核函数,大部分是导出
Ki:微内核函数,不导出,内部自己使用。进程、线程、cpu、调度相关
Ps:执行体函数,进程、线程相关
Mm:内存相关函数,一般导出
Mi:内存相关函数,Mm函数底层就是调用Mi,不导出
Io:文件、设备相关,导出
CC:文件缓存
Rtl:导出函数,一般是运行库,字符串操作等
Zw:SSDT,但是Zw不需要修改线程的先前模式
Nt:Zw函数会调用到Nt,本身Zw函数不实现功能
CM:注册表
hal:硬件函数
Ob:对象管理器,句柄,创建内核对象,查询内核对象等
Pnp:电源管理
Psp:执行体函数,进程、线程。Ps函数实现复杂功能的时候,都是调用Psp
KPROCESS
EPROCESS有一个对象头object_header,在减18位置
位置:-0x18,
Flags:修改OBJECT_HEADER的Flags为4可以保护进程
DriverEntry.c
DriverEntry.c
KTHREAD
dt nt!_KPRCB
KiFindReadyThread函数逆向分析,首先按x,进到KiSerachForNewThread,找到KiFindReadyThread的三个参数
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-8-14 14:57
被zhang_derek编辑
,原因: