基于Windows进程状态提取与恢复的研究毕业论文.doc
《基于Windows进程状态提取与恢复的研究毕业论文.doc》由会员分享,可在线阅读,更多相关《基于Windows进程状态提取与恢复的研究毕业论文.doc(54页珍藏版)》请在三一办公上搜索。
1、毕 业 论 文论文题目: 基于Windows进程状态提取与恢复的研究姓 名 学 号 学 院 计算机科学与技术学院 专 业 计算机科学与技术 年 级 2007级 指导教师 2011年 6月 5日目录摘 要5ABSTRACT6第1章 绪论71.1课题研究背景71.2 进程检查点系统的研究现状81.3 本文主要工作8第2章 WINDOWS系统内存管理机制102.1 CPU工作方式102.2 进程地址空间102.2.1 Windows地址空间基础102.2.2 用户地址空间分布112.2.3 系统地址空间分布132.3 内存映射132.3.1 内存映射基础132.3.2 虚拟内存的使用152.3.3
2、内存映射的可执行文件和DLL文件172.3.4 在DLL的多个实例之间共享静态数据18第3章 DLL注入193.1 DLL基础193.2 DLL的运行机制 203.3 DLL的创建233.4 注入技术的分析和比较243.4.1. 利用注册表注入243.4.2. 建立系统范围的Windows钩子253.4.3 使用 CreateRemoteThread函数263.4.4 通过BHO来注入DLL283.5 编码实现283.5.1 钩子的挂接283.5.2 挂起和恢复进程313.5.3 获取节数据313.5.4 保存和恢复进程状态343.6 PE文件36第4章 程序功能演示和结语384.1程序功能演
3、示384.2 结语39致谢41参考文献42附录1.英文原文43附录2.中文翻译51基于Windows用户级进程状态提取与恢复摘 要 基于用户级Windows进程状态的提取与恢复是在进程正常运行的适当时刻注入DLL文件,在用户级实现进程的停止、启动和将进程状态保存到稳定存储器中。从磁盘文件中读出保存的进程状态,实现进程重启后的状态恢复。 Windows内核分为16位的Win95和98、32位的WinNT以及用于嵌入式开发的WinCE。本文针对32位的WinNT内核实现,支持Windows 2003、XP以上版本。本文重点讨论了基于用户级Windows进程状态的提取与恢复实现的基本原理和步骤,并对
4、其进行了编码实现。文章首先对基于用户级Windows进程状态的提取与恢复实现的理论基础和实现机制进行了阐述,然后分析和编码实现了动链接库注入,最后对完成实例程序的功能进行了介绍。本文对不同的动态链接库注入技术进行了分析和比较,并采用钩子技术实现,给出了相应的重点代码,详细阐述了实现机制。关键字:动态链接库、PE文件结构、容错技术ABSTRACTThe extraction and recovery user-level process state in windows is to inject the DLL file at the appropriate time; while the ap
5、plication is running and you can stop or start it on the user-level .Process status can also be saved to stable storage. When restarted, the saved information can be read to restart the execution of the application. Windows kernel can be divided into 16-bit Win95 and Win98、32-bit WinNT and embedded
6、used Wince. In the following, if not named in detail Windows refer to 32-bit WinNT. This article focuses on the basic principles and steps of extraction and recovery user-level process state in windows and implements its encoded. At first we describe the theoretical basis and implementation mechanis
7、ms of extraction and recovery user-level process state in Windows, then analyze and implement the injections of dynamic link library. Finally, we give a brief introduction to the functions of the application that we completed.In this paper, we take an analysis and comparison among different techniqu
8、es of injection of the dynamic link library and implement it with hook technique. We present corresponding code implementation to elaborate the realization of mechanism described in detail.Keywords: dynamic link library, PE file structure, fault-tolerance第1章 绪论1.1课题研究背景随着Windows操作系统的不断普及,基于该操作系统下的应用
9、也越来越广泛。Windows软件的容错性越来越受到重视,由于Windows是不公开内核的操作系统,许多研究通过实现用户级进程检查点设置与回卷恢复1,在不修改系统内核的前提下提高Windows软件的容错性。本文研究基于WinNT内核下的用户级进程状态提取与恢复是基于后向恢复的异构分布式系统容错技术的研究与实现的子课题,基于检查点技术实现分布式计算系统故障检测,能够保存和恢复程序的运行状态,因此在许多相邻领域都有重要的应用2-4。1. 进程迁移 目前大多数操作系统还不能提供进程迁移功能,利用检查点可以保存进程在某台机器的运行状态,然后在其他机器上恢复进程的运行以实现进程迁移。进程迁移可以使集群系统
10、负载平衡,从而提高计算速度和集群的利用率。2. 容错 分布式系统的故障率随系统机器数的增加而增加,长时间运行的作业若在每次出现机器故障都从头开始执行,该作业很难被执行完毕。因此利用检查点实现多机器系统容错称为人们日益关心的热点。3. 卷回调试 在程序调试过程中,利用检查点保存程序在某个时刻的运行状态。当错误发生时,把程序卷回到保存前的某一个时刻的状态重新向下运行,以再次产生相同的错误来查找错误发生条件的调试方法称为卷回调试。分布式程序包含较多的不确定成分,当进程发生运行错误重新运行程序查找错误原因时,同样的错误可能很难再次出现。采用卷回调试在很大程度上提高错误再次发生的概率。1.2 进程检查点
11、系统的研究现状 进程检查点可以分别在操作系统级、用户级或者应用程序级实现,但各自有其优缺点。操作系统级实现的进程检查点5对用户程序透明,容易得到进程的内核数据结构,但需要修改系统内核,因此对于基于封闭操作系统的进程检查点难以实现,并且可以配置性和移植性不高,检查点开销很大。 用户级的进程检查点6-11,将检查点功能编译为一个库连接到应用程序,可以实现对应用程序透明,易于配置且开销较小,但其实现机制与操作系统平台密切相关,无法实现不同系统平台的迁移。应用程序级的进程检查点12优点是能够实现平台无关,可在不同的操作系统间移植;缺点是只限于几种有限的编程语言,目前仅有基于JAVA虚拟机的应用程序级检
12、查点。由于用户级的进程检查点具有对应用程序透明,易于配置、开销较小且实用等特点,因此大部分检查点系统都选择在用户级实现。而Unix和WinNT操作系统都是非常普及的操作系统,因此,大部分进程检查点系统都是基于Unix或者WinNT实现的。1.3 本文主要工作随着PC机使用范围的不断扩大,Windows系统已经成为一个日益流行的桌面平台,尤其在中低端市场,运行Unix系统的高级工作站逐渐被价格低廉、使用方便且符合行业开放性标准的WinNT的PC机所取代。与此同时,基于WinNT操作系统的集群系统也开始出现。典型的由美国Illinois大学研制的HPVM及由Rice大学开发的Brazosl20l。
13、由于WinNT操作系统在集群系统中的运用,随故障负载和隶属关系的影响,具有变化特性。特别是随着系统规模的不断扩大,其在计算过程中发生故障的几率会以指数级增长,对于大规模科学工程计算任务来说,任务的计算时间比较长,一旦发生异常,可视为故障,会导致并行计算的彻底失败,此前的大量计算不再可用,尤其是与Unix系统相比较,WinNT系统是一个相对不太健壮的操作系统。因此研究WinNT系统的容错性越来越受到重视。为提高WinNT系统的鲁棒性,一般有两种方法提高系统可靠性。一是在硬件配置上或操作系统内部采取容错措施,如硬件冗余、文件备份等。对于大型系统而言这种方法是高效且实用的;但对于中低端市场而言,这种
14、措施的代价过于昂贵。第二种方法是在应用层完全用软件实现。即在不修改操作系统的前提下,通过提供库文件或高可用性运行环境来实现,其中的重要措施就是进程检查点设置与回卷恢复(checkpoint and rollback recoveryCRR)。本文主要工作是基于Windows用户级进程状态提取与恢复的实现原理和编码。代理进程(Test_hook_api)将动态库(hooklib.dll)注入目标进程(例 XX.exe),使得动态库hooklib.dll与目标进程位于同一进程虚拟地址空间。Hook lib库中的服务线程定时(使用可等待定时器内核对象,避免占用CPU时间)停止进程,读取节数据,保存节
15、数据至检查点文件。故障时,由故障检测模块通知代理进程,代理进程经共享内存通知动态库中的服务线程,服务线程停止进程,重启进程且处于挂起状态,把检查点文件中的节数据写入进程的各个节,然后启动进程。该系统由两个模块组成:(1) 注入动态链接库模块Test_hook_api。使用该模块对应用程序进行预处理,在不需要修改应用程序源代码,不对应用程序进行重新编译或者链接的前提下。透明地将动态链接库hooklib.dll插入到可执行文件中。(2) 动态链接库hooklib.dll。该库是系统的主要模块,实现API函数截获。进程状态的提取、保存和恢复。通过对WinNT进程机制的研究,本文提出了将进程状态的保存
16、和恢复到用户地址空间的实现思想。本文分为六章,第一章介绍了进程检查点的现状、基于用户级进程提取与恢复相关的领域。第二章介绍了Windows虚拟内存分配机制,CPU的工作方式和Windows内存模型。接下来三章分别详细介绍了基于用户级的Windows进程状态提取与恢复实现的关键技术DLL的注入、钩子的实现、PE文件等技术。着重介绍了基于Windows用户级进程提取与恢复的原理和编码实现。最后是全文的总结、致谢、参考文献和附录。第2章 Windows系统内存管理机制2.1 CPU工作方式首先,我们应该了解Windows系统内存管理机制,这是我们注入被拦截应用程序地址空间的基础。Windows系统能
17、够寻址空间随工作方式不同而不同,下面简要介绍其工作方式。CPU有三种工作方式13:虚拟8086模式、实模式和保护模式。只有在刚刚启动的时候是实模式,等操作系统运行起来以后就运行在保护模式。 实模式也称为实地址模式,只能访问地址小于1MB 内存称为常规内存,我们把地址在1M以上的内存称为扩展内存。由于CPU寄存器的地址仅有16位,这意味着应用程序可访问的连续线性地址空间仅有64KB,通过16位段寄存器的帮助,这个64KB大小的内存窗口就可以在整个物理空间中上下移动,64KB逻辑空间中的线性地址作为偏移量和基地址(由16位段寄存器给出)相加,从而构成有效的20位地址。保护模式,而叫做受保护的虚拟地
18、址模式是80286 CPU的工作方式。该模式全部32条地址线有效,可寻址4G物理地址空间,扩充的存储器分段管理机制和分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持;支持多任务,快速任务切换和保护任务环境,4个特权级和完善的特权检查机制。提供了选择器,该选择器由一个描述符表的索引构成。该描述符表的每一项都定义了一个24位的物理地址,允许访问16MB RAM,但是线性地址空间仍然被限制在64KB。虚拟8086模式时运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。本文研究保护模式下的Windows进
19、程信息提取与恢复。2.2 进程地址空间2.2.1 Windows地址空间基础CPU寻址引入了3个术语,下面将进行简要介绍。逻辑地址:这是内存地址的精确描述,通常表示为16进制:xxxx: YYYY YYYY,这里xxxx为选择器,而YYYYYYYY是针对选择器所选段地址的线性偏移量。这里xxxx可以用段寄存器名字代替,如CS(代码段),DS(数据段),ES(扩展段),FS(附加数据段#1),GS(附加数据段#2)和SS(堆栈段)。线性地址:大多数应用程序和内核驱动程序都忽略虚拟地址。他们只对虚拟地址的偏移量部分感兴趣。而这一部分通常称为线性地址。此种类型的地址假定了一种默认的分段模型,这种模型
20、由CPU的当前段寄存器确定。物理地址:仅当CPU工作于分页模式时,这种地址才会变得非常有趣。本质上,一个物理地址是CPU插脚上可测量的电压。操作系统通过设立页表将线性地址映射为物理地址。本文研究内容采用保护模式下的虚拟内存管理机制。由 32 位的 Intel CPU 提供的 4GB 虚拟内存空间被分割为相等的两部分。低于 0x80000000 的内存地址由用户模式下的模块使用,这包括 Win32 子系统,剩余的 2GB 保留给了系统内核。表2-1显示了32位Windows系统中采用的虚拟地址空间的划分方法。表2-2 2GB Windows 2000/XP用户进程地址空间分布分区名称范围用途NU
21、LL指针分区0x0000 0000-0x0000 FFFF保护内存非法访问独享用户区0x0001 0000-0x7FFE FFFF进程只能读取或访问这个范围的虚拟地址;超越这个范围的行为都会产生违规退出。共享内核区0x8000 0000-0xFFFF FFFF这个空间提供操作系统内核代码、设备驱动程序、设备I/O高速缓存、页表等2.2.2 用户地址空间分布表2-2详细描述了2GB Windows 2000/XP用户进程地址空间的布局。表2-3显示的系统变量定义了用户地址空间的范围。表2-4列出了性能计数器提供的有关全部系统虚拟内存使用的信息。表2-5列出了进程性能计数器得到的单个进程地址空间的
22、使用情况。表2-2 2GB Windows 2000/XP用户进程地址空间分布范围大小功能0x0000 0000-0x0000 FFFF64KB 拒绝访问区域,避免程序员不正确的指针引用 用于帮助查找错误0x0001 0000-0x7FFE FFFF2GB减去至少192KB进程私有地址空间0x7FFD E000-0x7FFD EFFF4KB第一个线程的线程环境块(TEB)0x7FFD F000-0x7FFD FFFF4KB进程环境块(PEB)0x7FFE 0000-0x7FFE 0FFF4KB共享的用户数据页面 该只读数据页面映射到系统空间中包括系统时间、时钟计数、版本号信息,该页面存在使这些
23、信息可以直接从用户态读出0x7FFE 1000-0x7FFE FFFF60KB拒绝访问区域0x7FFF 0000-0x7FFF FFFF60KB拒绝访问区域 阻止线程跨过系统 用户边界传送那个缓冲区 MmUserProbeAddress中包含此区的起始地址表2-3 windows用户地址空间系统变量系统变量描述用户空间MmHighestUserAddress最高用户地址0x7FFE FFFFMmUserProbeAddress最高用户地址+10x7FFF 0000表2-4 Windows虚拟内存使用性能计数器性能计数器系统变量描述Memory:Committed BytesMmTotalCom
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于Windows进程状态提取与恢复的研究 毕业论文 基于 Windows 进程 状态 提取 恢复 研究
链接地址:https://www.31ppt.com/p-3939558.html