Download presentation
Presentation is loading. Please wait.
Published byMoses McKinney Modified 5年之前
1
本节内容 进程结构体EPROCESS 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
2
内容回顾 从这一节课开始学习进程、线程相关的知识。 进程线程的知识点很多,如果我们想了解问题的本质,就要从一些关键 的结构体学起,这节课的内容是介绍一个与进程密切相关的结构体: EPROCESS
3
1、进程结构体EPROCESS 每个windows进程在0环都有一个对应的结构体:EPROCESS 这个结构体包含了进程所有重要的信息。 (在winbbg中查看EPROCESS结构体)
4
2、KPROCESS主要成员介绍 1) +0x000 Header : _DISPATCHER_HEADER “可等待”对象,比如Mutex互斥体、Event事件等(WaitForSingleObject) 2) +0x018 DirectoryTableBase : [2] Uint4B 页目录表的基址 3) +0x020 LdtDescriptor : _KGDTENTRY +0x028 Int21Descriptor : _KIDTENTRY 历史遗留,16位Windows 段选择子不够 每个进程都有一个LDT表 Int21Descriptor 是 DOS下要用的
5
3、KPROCESS主要成员介绍 4) +0x038 KernelTime : Uint4B +0x03c UserTime : Uint4B 统计信息 记录了一个进程在内核模式/用户模式下所花的时间 5) +0x05c Affinity : Uint4B 规定进程里面的所有线程能在哪个CPU上跑,如果值为1,那这个进程的所以线程只能在0号CPU上跑( ) 如果值为3,那这个进程的所以线程能在0、1号CPU上跑( ) 如果值为4,那这个进程的所以线程能在2号CPU上跑( ) 如果值为5,那这个进程的所以线程能在0,2号CPU上跑( ) 4个字节共32位 所以最多32核 Windows64位 就64核 如果只有一个CPU 把这个设置为4 那么这个进程就死了 6) +0x062 BasePriority : Char 基础优先级或最低优先级 该进程中的所有线程最起码的优先级.
6
4、EPROCESS其他成员 1) +0x070 CreateTime : _LARGE_INTEGER +0x078 ExitTime : _LARGE_INTEGER 进程的创建/退出时间 2) +0x084 UniqueProcessId : Ptr32 Void 进程的编号 任务管理器中的PID 3) +0x088 ActiveProcessLinks : _LIST_ENTRY 双向链表 所有的活动进程都连接在一起,构成了一个链表 PsActiveProcessHead指向全局链表头
7
4、EPROCESS其他成员
8
5、EPROCESS其他成员 4) +0x090 QuotaUsage : [3] Uint4B +0x09c QuotaPeak : [3] Uint4B 物理页相关的统计信息 5) +0x0a8 CommitCharge : Uint4B +0x0ac PeakVirtualSize : Uint4B +0x0b0 VirtualSize : Uint4B 虚拟内存相关的统计信息 6) +0x11c VadRoot : Ptr32 Void 标识0-2G哪些地址没占用了
9
6、EPROCESS其他成员 7) +0x0bc DebugPort : Ptr32 Void +0x0c0 ExceptionPort : Ptr32 Void 调试相关 8) +0x0c4 ObjectTable : Ptr32 _HANDLE_TABLE 句柄表 9) +0x174 ImageFileName : [16] UChar 进程镜像文件名 最多16个字节 10) +0x1a0 ActiveThreads : Uint4B 活动线程的数量
10
7、EPROCESS其他成员 11) +0x1b0 Peb : Ptr32 _PEB PEB((Process Environment Block 进程环境块):进程在3环的一个结构体,里面包含了进程的模块列表、是否处于调试状态等信息。 关于PEB或者其他成员更加详细的说明: 参考 潘爱民老师《Windows内核原理与实现》 中的第3章
11
4、课后练习: VIP会员可见
Similar presentations