- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 进程管理实验
3.1 实验概述
进程管理实验包括进程创建和进程终止两部分。进程创建实验分析了进程创建过程和Windows API中CreateProcess函数对内核函数的调用过程。进程终止实验分析了进程终止过程,并修改内核代码,调整系统进程终止行为。
3.2进程创建
3.2.1
进程创建过程中需要完成一些内核数据结构初始化,包括EPROCESS,PCB和PEB等。
每一个Windows进程都有一个执行体进程块(EPROCESS),执行体进程块描述进程的基本信息,并指向其他与进程控制相关的数据结构。如图3-1为EPROCESS的结构图:
图 3-1 EPROCESS的结构
内核进程块的核心进程块(Kernel Process Block 或者叫PCB)和进程环境块(PEB)也包含很多用于线程调度的相关信息,它们的结构如图 3-2 和图 3-3所示:
图 3-2 核心进程块(PCB)的结构
Kernel Time是内核时间;User Time是用户时间;Process State是进程状态;Process Page Directory是进程页目录;Process Base Priority是进程的基本优先级。
图 3-3 进程环境块(PEB)的结构
Image Base Address是映像基地址;Module List是模块列表;Thread-Local Storage Data是线程局部存储区数据;Code Page Data是代码页数据;Image Version Information是映像版本信息。
Windows环境进程的创建包括以下几个步骤:
打开EXE文件,创建局部的段对象;
创建Windows执行体进程对象;
创建和初始化主线程(包括栈、上下文、执行体线程块对象的创建);
通知Windows子系统新的进程已经创建,系统为新的进程运行设置环境;
开始执行初始线程(如果在创建进程的时候使用了CREATE_SUSPENDED标志,那么就挂起主线程);
在新的进程和线程的上下文中,完成地址空间的初始化(如动态链接库的加载等)和开始执行程序。
如图 3-4所示为进程创建过程图。
图 3-4进程创建过程图
3.2.2 关键代码分析
3.2.2.1 Stage2: 创建进程内核对象
进程创建的过程为:NtCreateProcessNtCreateProcessExPspCreateProcess创建进程内核对象。
(1)设置EPROCESS
Line 1108 ps\create.c
//创建EPROCESS。
Status = ObCreateObject (PreviousMode,
PsProcessType,
ObjectAttributes,
PreviousMode,
NULL,
sizeof (EPROCESS),
0,
0,
Process);
if (!NT_SUCCESS (Status)) {
goto exit_and_deref_parent;
}
//把EPROCESS结构初始化为0。
// 初始化进程锁。
// 初始化进程的线程列表。
//
RtlZeroMemory (Process, sizeof(EPROCESS));
ExInitializeRundownProtection (Process-RundownProtect);
PspInitializeProcessLock (Process);
InitializeListHead (Process-ThreadListHead);
(2)创建进程地址空间
进程的地址空间分为以下4种:
Boot Process :进程地址空间在内存初始化时被分配。Parent is not specified;
System Process:系统地址空间;
User Process (Cloned Address Space): 从指定的进程复制的地址空间;
User Process (New Image Address Space): 新的地址空间。
Line 1366 ps\create.c
//用户进程 (新的地址空间).
Status = MmInitializeProcessAddressSpace (Pro
您可能关注的文档
最近下载
- 最新人教版四年级语文上册期末试卷(可打印).doc VIP
- 护理差错类型分析与防范策略.pptx VIP
- 高职-计算机网络技术-说课要点.ppt VIP
- 2、日常行为表现---毛泽东思想和中国特色社会主义理论体系概论.docx VIP
- 初中英语新课程标准测试题(3套)含答案.pdf VIP
- 建设项目使用林地可行性报告编写规范.docx VIP
- 项目经理年终工作总结汇报课件.pptx VIP
- QJ3057-1998 航天用电气、电子和机电(EEE)元器件保证要求.pdf VIP
- 毛泽东思想和中国特色社会主义理论体系概论论文.docx VIP
- 中国马克思主义与当代 2024版 教材课后思考题参考答案.docx
原创力文档


文档评论(0)