




已阅读5页,还剩67页未读, 继续免费阅读
(计算机软件与理论专业论文)通用容错中间件的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 中文摘要 现代计算系统应用对计算机提交可信服务的能力提出了巨大的挑战。容错技 术作为保证系统高可信性的主要技术,其直接开发是非常困难的。而采用中间 件技术,不仅尽可能多地屏蔽容错实现和管理细节,也屏蔽了底层的通信细节, 使设计人员能够专注于业务逻辑开发。 同时,由于w i n d o w s 系统的不开源性和全球普及使用,各种软件运行过程 中出现的非法行为和异常操作极大地影响到系统的可用性、可靠性、可维护性、 安全性等。 因此,本文基于中间件研究和设计了一种新的基于w i n d o w s 平台的通用软 件容错系统。根据容错方法的不同将容错对象主要分为两部分:第一部分是用 户软件运行过程中的进程行为、资源使用( 包括注册表、文件等) ,另一部分是 软件运行过程产生的内存泄漏。前部分的容错规则是针对进程行为、资源使用 ( 包括注册表、文件等) ,构建可信数据库,实时进行监控,并对出现的不可信 行为自动进行截获、处理,并进行现场恢复、日志记录等,实现可靠容错;后 部分的容错规则是针对内存泄漏,监控内存分配与释放操作,并实时记录,最 后通过分析操作记录,实现内存泄露检测。所采用技术包括:使用h o o k 技术, 可对软件运行操作进行实时拦截处理;本容错系统最终实现产品为链接库,可 方便地为各类软件系统提供容错处理。 最后本文还介绍了该方法的理论模型与系和统实现,并对该方法的应用及 实验结果进行了总结与展望。 关键字 可信计算、容错、中间件、h o o k 、w i n d o w sa p i a b s t r a c t a b s t r a c t t h ea p p l i c a t i o no fm o d e r nc o m p u t i n gs y s t e m sb r i n g sf o r w a r dah u g ec h a l l e n g et o t h ec o m p u t e r s a b i l i t yo ft h ec r e d i b i l i t ys e r v i c e a sam a i nt e c h n o l o g y t h a t g u a r a n t e e i n gt h eh i g hc r e d i b i l i t yo ft h es y s t e m ,f a u l t t o l e r a n tt e c h n o l o g yi sv e r y d i f f i c u l tt od i r e c t l yd e v e l o p t h eu s eo fm i d d l e w a r et e c h n o l o g yc a nn o to n l ya sm u c h a sp o s s i b l et os h i e l dt h er e a l i z a t i o no ff a u l t - t o l e r a n c ea n dm a n a g e m e n td e t a i l sa n d d e t a i l so ft h eu n d e r l y i n gc o m m u n i c a t i o n , b u ta l s oa l l o wd e s i g n e r st of o c u so n o p e r a t i o nl o g i cd e v e l o p m e n t s i m u l t a n e o u s l y , a l lk i n d so ft h ei l l e g a la c t sa n da b n o r m a lo p e r a t i o nd u r i n g t h es o f t w a r e sr u n n i n gg r e a t l ya f f e c ts y s t e ma v a i l a b i l i t y , r e l i a b i l i t y , m a i n t a i n a b i l i t y a n ds a f e t yd u et ot h ec o l n l n e r c ea n dp r e v a l e n c eo fw i n d o w s s o ,t h i sp a p e r r e s e a r c h e sa n d d e s i g n s au n i v e r s a lw i n d o w s - b a s e d f a u l t - t o l e r a n ts y s t e mb a s e do nt h em i d d l e w a r e f a u l t t o l e r a n to b j e c t sc o n s i s to ft w o p a r t s :t h ef i r s tp a r ti st h eb e h a v i o r so fp r o c e s sa n dt h eu s e o fr e s o u r c e ss u c ha sr e g i s t e r a n df i l e ;t h eo t h e rp a r ti sm e m o r yl e a kd u r i n gt h ep r o c e s o fs o f t w a r er u n n i n g t h e f o r m e rf a u l t - t o l e r a n tr u l ea i m sa tt h eb e h a v i o r so fp r o c e s sa n dt h eu s eo fr e s o u r c e s s u c ha sr e g i s t e ra n df i l e ,w eh a v ear e a l - t i m em o n i t o r , a u t o m a t i c a l l yi n t e r c e p ta n dd e a l w i t ht h eu n b e l i e v a b l ea c t s ,r e s t o r et h es i t ea n dr e c o r dt h el o g ,e t c ;t h el a t t e ro n ea i m s a tm e m o r yl e a k ,w eh a v eam o n i t o ra tt h ea l l o c a t i o na n df r e eo p e r a t i o n ,r e a l t i m e r e c o r d ,a n a l y s et h er e c o r d sa n dd e t e c tm e o r yl e a k u s i n gt h eh o o kt e c h n o l o g y , w e c a ni n t e r c e p ta n dd e a lw i t ht h eu n b e l i e v a b l ea c t s t h ef i n a lp r o d u c t sa r el i n kl i b r a r y , a n dt h e yc a nc o n v e n i e n tt op r o v i d ef a u l t - t o l e r a n c ef o ra l lk i n d so fs o f t w a r es y s t e m i nt h ee n d ,t h i sp a p e rd e s c r i b e st h em e t h o d so ft h e o r e t i c a lm o d e l sa n d s y s t e m s ,a n dh a sas u m u pa n de x p e c t a t i o no f t h ea p p l i c a t i o na n de x p e r i m e n t a lr e s u l t s o ft h em e t h o d s k e y w o r d t r u s t e dc o m p u t i n g ,f a u l t t o l e r a n t ,m i d d l e w a r e ,h o o k , w i n d o w sa p i i i 内容目录 图目录 图1 1 通用容错中间件结构简图5 图2 1w i n d o w s 的消息传递机制1 1 图2 2w i n d o w s 消息挂钩前后对比l2 图2 3a p i 挂钩原理示意图1 3 图2 4p e 文件结构总体层次分布1 5 图2 5 容错系统总体结构图。1 6 图2 6 进程操作容错系统流程图1 8 图2 7 进程创建的完整过程1 9 图2 8w i n d o w s 系统文件操作流程2 4 图2 9 内存泄漏检测系统流程图3 3 图3 1 向进程中注入代码的4 种方法3 7 图4 1 行为可信5 6 图4 2 行为不可信,拒绝执行5 6 图4 3 进程不可信,继续执行5 7 图4 4 内存泄漏检测系统示例程序源代码5 8 v i 内容目录 图4 5 内存泄漏检测结果。5 8 v i i 内容目录 表目录 表2 1 其它主要的进程操作a p i l 3 5 1 2 0 表2 2 注册表a p i 函数【3 鄹2 2 表2 3w i n d o w s 文件a p i 函数【3 鄂。2 5 表3 1h o o k 的类型【4 们3 8 v i i i 南开大学学位论文版权使用授权书 本人完全了解南开大学关于收集、保存、使用学位论文的规定, 同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版 本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供 本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有 关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前 提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名:锯蹲 护了年歹月) 日 经指导教师同意,本学位论文属于保密,在年解密后适用 本授权书。 指导教师签名:学位论文作者签名: 解密时间:年月日 各密级的最长保密年限及书写格式规定如下: 南开大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行 研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文 的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的 作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集 体,均己在文中以明确方式标明。本学位论文原创性声明的法律责任 由本人承担。 学位论文作者签名:镰冯 沁孑年了月目e t 第一章导论 第一章导论 第一节本文研究背景与问题提出 1 1 1 可信计算概述 随着基于互联网的应用系统不断增多,人们所面临的安全问题也与日俱增。 如何构建新一代适应信息发展需求的可信计算环境已经成为信息科学技术领域 最重要的课题之一。 目前,由防火墙、入侵检测、防病毒系统等构成的传统信息安全系统以防外 部入侵为重点,这与当今信息安全的主要威胁源自内部的实际情况不相符合。 “老三样、堵漏洞、做高墙、防外攻,防不胜防”就是信息安全的基本现状。 这样做的结果只能是网络上的“墙越垒越高,而各种攻击却依然十分猖獗, 效果不尽人意j 。 事实上,产生信息安全事故的技术原因主要有以下几个方面:一是现在的 p c 机软、硬件结构简化,导致资源可任意使用,尤其是执行代码可被修改,恶 意程序可被植入;二是病毒程序利用p c 操作系统对执行代码不检查一致性这一 弱点,将病毒代码嵌入到执行代码中实现病毒传播;三是黑客利用被攻击系统 的漏洞窃取超级用户权限,植入攻击程序,肆意进行破坏;四是对合法的用户 没有进行严格的访问控制,可以越权访问,造成不安全事故。针对这些问题, 我国有关部门早在九十年代便研制了微机安全保护卡,目的就是监控终端所有 的安全事故。 可信计算技术【2 - 5 体现的是整体安全的思想,这一概念最早是在1 9 9 9 年由微 软、i n t e l 、h p 、i b m 等国际大公司提出的,其主要思路是利用可信计算技术构 建一个通用的终端硬件平台,增强现有p c 终端体系结构的安全性。2 0 0 0 年1 2 月,由美国卡内基梅农大学和美国国家宇航局牵头,在i b m 等著名企业的参与 下,成立了可信计算联盟t c p a ( t r u s t e dc o m p u t i n gp l a t f o r ma l l i a n c e ) 6 - 7 。2 0 0 1 年1 月,t c p a 发布了标准规范( v 1 1 ) ,定义了一种与计算机主板相连的硬件设 备t p m ( 可信平台模块) 。t c p a 专注于从计算平台体系结构上增强其安 全性,在计算和通信系统中广泛使用基于硬件安全模块支持下的可信计算平台, 第1 页 第一章导论 以提高整体系统的安全。2 0 0 3 年3 月,t c p a 改组为t c g ( t r u s t e dc o m p u t i n g g r o u p ) a - 9 。可信计算的主要做法是在p c 机硬件平台上引入安全芯片架构。可 信计算模块( t r u s t e dp l a t f o r mm o d u l e ,t p m ) 1 0 - 1 3 】是可信计算技术的核心,它 实际上是一个含有密码运算部件和存储部件的系统芯片。以t p m 为基础的“可 信计算” 1 4 q 7 】可从以下几方面来理解:用户的身份认证,表示对使用者的信任; 平台软硬件配置的正确性,表示使用者对平台运行环境的信任;应用程序的完 整性和合法性,表示对应用运行环境的信任;平台之间的可验证性,表示网络 环境下用户终端的相互信任。可信计算平台是新一代能提供可信计算服务的计 算机软硬件平台,它基于t p m ,以密码技术为支持、安全操作系统为核心,是 信息安全领域中起关键作用的体系结构的变革,也是对计算机安全结构的一种 回归。与现有的普通计算机相比,它从芯片、主板等硬件结构和b i o s 、操作系 统等底层软件做起,相当于增加了一台独立的监控计算机,用信任链的方法提 供系统的完整性、可用性和数据的安全性。 1 1 2 可信计算目前的研究现状 从上述的不同时代、不同机构对可信计算所做的定义可以看出,可信计算的 概念是一个涵盖硬件( 本地硬件、网络部件) 、软件及服务可信性的一个综合的 概念,对它的研究与计算机网络通信、安全保密直接相关,同时也直接关系到 目前i n t e r n e t 上b 2 b 等各种模式业务能否得以广泛推广,因此该领域的研究多年 来一直是学术界关注的热点。 目前国内外的学术机构和工业界对可信计算研究的内容相当广泛,包括如下 方面【1 8 之0 】: 可信程序开发工具和可信程序开发方法的研究 许多软件开发人员在开发软件系统时,往往只注重软件功能的实现而忽略了 代码本身的安全性。他们希望通过安全功能模块来实现系统的安全,这是不够 的,必须从编程阶段开始就考虑软件的安全性。通过研究可信程序开发工具和 可信程序开发方法,可以帮助软件开发人员在开发系统的过程中提高系统的安 全性,进一步减少系统在使用时被恶意攻击的可能。 构件信任属性的建模、分析和预测 基于构件的软件开发技术已经逐渐成为当今主流的软件开发技术,未来的软 第2 页 第一章导论 件将是由各种构件组装而成,而不是从零开始进行开发。在使用构件组装一个 系统软件时,可信的构件是实现可信系统软件的前提。如何描述构件的信任属 性是关键所在,只有确定了构件信任属性的描述方法,才能对它进行分析和评 估。 容错与容侵系统研究 计算机已经被应用到社会生活的各个层面和领域,容错成为衡量计算机系统 性能的一项重要技术指标,如何从硬件和软件上提供系统容错性,特别是分布 式系统的容错性,是需要认真关注的问题;目前的计算机系统不可避免地存在 安全隐患,要消除这些隐患几乎是不可能的。因此需要研究容侵系统,使得系 统即使受到隐患的攻击仍能进行关键操作。 大规模、高复杂度网络环境下的安全分布式计算 由于i n t e r n e t 能够把全球的计算机资源联结起来,分布式计算已经逐渐成 为主流计算模式,网格计算、公用计算、对等计算、w e b 服务等这些概念对我 们来说已不再陌生。传统的安全技术已经不能适应安全分布式计算的要求,必 须研究在分布式环境下的认证、授权以及审计等安全技术,为分布式计算提供 一个安全的环境。 无线网络的安全研究 无线网络的迅速发展和广泛应用使得它也面临着安全威胁,无线网络的特点 决定了对它的攻击方式与有线网络有所不同,因此必须研究新的专门用于无线 网络的安全技术;下一代网络将是有线网络和无线网络的结合体,研究有线网 络和无线网络的安全技术,为下一代网络的安全技术研究奠定基础是非常有意 义的。 有效的信任管理 现有的安全技术,无论是密码算法和协议,还是更高层次的安全模型和策略, 都隐含地与信任相关,它们或者预先假定了某种信任前提,或者目的是为了获 得或创建某种信任关系。信任管理是一种为确定用于决策的信任而通过搜集、 分析和编码相关证据以进行决策评价的行为,它实际上是一种决策支持技术。 在开放网络环境( 如i n t e r n e t ) 中,各系统之间相互独立,而系统之间进行有效 的交互必须建立相互的信任关系,因此通过信任管理来对系统信任关系进行决 策成为亟待解决的基础性问题。 第3 页 第一章导论 1 1 3 问题提出 容错 正如上文所述:提高系统可信性的方法有故障防止、故障容许、故障删除和 故障预报。故障防止、删除以及预报在提高系统可信性方面都有一定的限度, 而容错( 故障容许) 技术已经研究了三十多年,在学术和产业方面都大有进展。 软件容错 2 l - 2 2 1 是软件能检测系统中将要发生或已经发生的软件或硬件故障并从 故障中恢复的能力。望文生义,不难理解,软件容错有两层含义:个是用软 件来达到容错的目的;一个是软件本身要容许软件故障。其实,对于可信系统, 这二者都不可缺少。 中间件 但是直接开发容错应用是非常困难的,因为开发者不仅要处理复杂的应用逻 辑,还要面对纷繁的容错逻辑。鉴于中间件为应用系统提供了良好的开发环境 和多种通信方式,基于中间件设计一种新的系统模型和软件容错结构,不仅尽 可能多地屏蔽容错实现和管理细节,也屏蔽了底层的通信细节,使设计人员能 够专注于业务逻辑开发,从软件工程角度来说是一个很自然的想法。 基于w i n d o w s 当前,由于l i n u x 的开源性,基于l i n u x 开发的容错系统层出不穷。与之相 对的w i n d o w s ,由于其源代码的不开放性,基于w i n d o w s 开发的容错系统并不 甚多,但w i n d o w s 是世界上使用最广泛的操作系统,在社会上普及程度最高, 因此,开发基于w i n d o w s 的容错系统具有十分重要的意义。 通用 在软件运行过程中,经常伴随着很多计算机资源访问的不可信性。比如异常 的进程操作,对注册表、文件的非法访问操作,内存泄漏等,这些都是造成软 件系统不可信的主要因素。而本文将主要从这四方面入手,构建一个通用的容 错中间件。 其系统结构图如图1 1 所示: 第4 页 第一章导论 应用软件 通用容错中间件 进 注 程 册 文 内 操 表 件存 作 操 操泄 容 作 作漏 容 容检 错错 测 错 + 操作系统 : 硬件 图1 1 通用容错中间件结构简图 第二节容错系统综述 1 2 1 研究计算机容错系统的重要性 信息时代,信息科学技术的快速发展和广泛渗透己经成为现今社会的一个重 要的时代特征。人类社会的生产活动和生活质量,比以往任何时代都更加得益 和依赖于信息技术的成就和发展。据统计,在商业市场中,如果公司丢失了1 0 的数据,其中6 5 的公司会因此而退出竞争市场。信息成为人们前进的道路, 而作为信息处理与传播的主要工具的计算机在信息社会中占据了非常重要的地 位。计算机己渗透到了社会生活的各个领域。从工程设计、科学计算,到气象 预报、地震预报和各种c a d 工作站;从城市的交通规划管理、调度,到海运、 空运的交通控制;从银行系统、各种过程控制系统,到国防、航空航天等领域, 第5 页 第一章导论 计算机都占据了非常重要的地位。计算机系统的安全性和可靠性是保证在各个 领域成功应用计算机的关键问题。因为安全性和可靠性对整个系统的正常运行、 管理和发展都有着至关重要的影响。一台缺乏可靠性与安全性的计算机系统投 入运行将会给社会造成无法估量的损失,甚至会带来巨大的灾难。例如,1 9 7 9 年,新西兰航空公司的一架客机因为计算机控制的自动飞行系统发生故障,而 撞到了阿尔卑斯山上,机上2 5 7 名乘客不幸遇难。还有,前些年发生在我国衡 阳的火车追尾事故,也是由于计算机控制系统出现故障而引起的。这种种灾难 都表明保证计算机系统的可靠运行或使系统在出现故障时安全停机是推动计算 机普及应用的关键。 在提高系统可靠性与安全性方面 2 3 1 ,避错与容错技术是常用的两种关键性技 术。避错即避免出错,即采用正确的设计和质量控制方法尽量避免将错误引进 系统。一般采用的技术措施有:从工艺上提高构成计算机的元器件的可靠性; 对元器件进行严格的筛选;认真地核实设计;仔细地装配;认真地测试每个部 件;对系统进行屏蔽以减少外部干扰等等。但众所周知,无论采用何种技术, 如何控制制造工艺都不可完全避免故障的发生。并且实践证明,利用避错技术 来提高系统的可靠性有一定的限度( 例如最多可使系统的平均无故障时间增加 一个数量级) ,超过这个限度将使系统的成本急剧上升。要想进一步提高系统的 可靠性则必须采用容错技术。 容错技术是指系统在内部出现故障的情况下,仍能正常运行程序,并给出正 确结果的技术。在实际应用中,用户使用计算机进行管理、交易、控制等操作, 他们关心的是系统能否给出正确结果,而并不关心其中采用何种技术,是否中 途出现故障。故容错技术在提高系统的可信性方面具有更大的潜力。在当今计 算机日益普及的年代,研究计算机容错系统就显得尤为重要。 1 2 2 容错技术的国外发展概况 在计算机容错技术领域,国外的研究工作开展较早。可以说在第一代计算机 ( 1 9 4 6 年一1 9 5 7 年) 期间,人们就己将容错技术应用到计算机中。由于当时构成计 算机的元件主要是电子管、继电器及延迟线存储器。这些元件的失效率相当高, 并且易受瞬时故障的影响,故系统的平均无故障时间极短,为此需采用故障检 测与恢复技术以提高系统的使用时间。例如,i b m 6 5 0 ,u n i v a c ,w h i r l w i n d 等 第6 页 第一章导论 计算机采用了奇偶校验以检查数据传送的结果是否正确。还有,1 9 4 9 年设计的 e d v a c 计算机采用了双份运算部件,每次运行后两个部件的结果进行比较,用 以检测故障。这个时期己出现了早期的容错系统。1 9 5 2 年冯诺依曼( j o h nv o n n e u m a n n ) 在加利福尼亚技术学院作了关于容错技术研究的五个报告,他所提出 的精辟的论断成了以后容错技术研究的基础。1 9 5 6 年他发表了题为概率逻辑 及用不可靠的元件设计可靠的结构的论文,文中提出了多数表决的概念,并 分析了这种结构对系统产生错误结果的概率可能产生的影响。这预示着容错计 算方面的理论工作的开始。 到了7 0 年代,随着计算机的更新换代,容错技术进入蓬勃发展的时期。该 时期容错技术的应用和研究范围迅速从宇航领域扩大到交通管制、工厂自动化、 电话开关、战略防卫的控制和数据处理等领域。主要成果有电话开关系统e s s 系列处理机、软件实现容错的s i f t 计算机、容错多处理机f t m p 等等。 到8 0 年代,随着超大规模集成电路v l s i 和计算机的迅速发展和广泛应用, 容错技术的研究也随着计算机的普及而深入到整个工业界,许多公司生产的容 错系统己商品化并进入市场。 在国际上人们非常关注容错技术的发展,1 9 7 1 年,i e e e 计算机学会成立了 容错计算技术委员会并且每年召开一次国际容错计算学术会议( f t c s ) 。在该组 织发展了3 0 年之际,2 0 0 0 年i e e e 国际容错计算会议与国际信息处理联合会( i f i p ) 的1 0 4 工作组主持的关键应用可信计算工作会议合并,从此改名为i e e e 可信系 统与网络国际会议( i c d s n ) 。i c d s n 2 0 0 0 于纽约召开,它标志着本领域的研究, 无论从内容、方法和组织方面都有重大调整,也充分说明了国际上对容错计算 技术与可信计算技术的重视程度。 1 2 3 容错技术的国内发展概况 我国研究容错系统起步较晚。从学术角度来讲,在8 0 年代我国派遣了一批 学者出国,他们在美国和日本从事容错方面的研究,回国后纷纷成为这一领域 的学术带头人。二十多年来,他们的优异工作得到了该领域的广泛关注, 现在我国在容错研究领域的某些方面己经居于国际前沿。1 9 8 7 年1 月我国 计算机学会也成立了自己的容错计算专业委员会,召开了多次全国性的容错计 算学术会议。这充分说明了我国对容错计算技术的重视程度。 第7 页 第一苹导论 在应用方面,我国容错系统的应用领域非常广泛,i b m 、s t r a t u s 、天腾、d e c 等公司的容错产品大量传入我国,在银行、证券、航天及核技术领域得到了普 遍的应用。 在产品研发上,虽然我国目前还没有形成通用的计算机容错产品,但各行各 业在各自的领域中自行开发研制了一些高可用系统,如用于铁路运输中的铁路 微机联锁系统。更令人高兴的是,我国的曙光机和我们自行开发研制的交换机 系统中提供了容错性能。并且在软件测试方面也引起了人们的重视,铁道、航 空和航天等部门纷纷成立了自己的软件测试中心,由此可见人们已经充分意识 到了容错的重要性。 第三节本文内容组织 本文共分为五章,内容结构如下: 第一章为导论,介绍了可信计算及容错系统的基本信息、研究现状、以及 本文的研究背景及目标。 第二章主要介绍了本文提出的基于中间件的软件容错系统的设计方法,首 先介绍了软件容错的系统结构模型及异常处理机制,然后介绍了中间件的原理 与挂钩实现方法机制,随后阐述了本文提出的基于中间件的软件容错系统的各 项实现机制。 第三章主要介绍了在w i n d o w s 平台下的采用挂钩方法的容错系统的实现,包 括进程、注册表、文件、内存等资源的异常操作的具体容错实现,随后介绍了 相应的系统流程、模块划分、数据结构、主要算法、以及特殊情况处理等。 第四章主要介绍了本文提出的软件容错系统的应用,实验结果与评价改进。 第五章对本文设计的系统进行了总结,并对未来需要深入研究的问题进行 了展望。 第8 页 第二章基于中间件的容错系统分析设计 第二章基于中间件的容错系统分析设计 2 1 1 中间件概述 第一节中间件技术及挂钩原理 2 1 1 1 中问件概念 中间件( m i d d l e w a r e ) 2 4 - 2 6 1 技术是伴随网络而发展起来的一种面向对象的技 术。中间件产生于2 0 世纪9 0 年代初,它是基础软件的一大类,属于可复用软 件的范畴。有关中间件的定义众多,其中比较普遍被接受的是i d c 表述的:中 间件是一种独立的系统软件或服务程序,中间件位于客户机服务器的操作系统 之上,管理计算资源和网络通信。 从这个意义上,我们可以理解为中间件是介于应用系统和系统软件之间的一 类软件,它使用系统软件所提供的基础服务( 功能) ,衔接网络上应用系统的各 个部分或不同的应用,能够达到资源共享、功能共享的目的。因此,可以用一 个等式来表示中间件:中间件= 平台+ 通信。 2 1 1 2 中间件的作用 中间件的作用 2 4 2 6 】简单来说就是试图通过屏蔽各种复杂的技术细节使技术 问题简单化。具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人 员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在 自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大 减少了技术上的负担。所以说中间件带给应用系统的,不只是开发的简便、开 发周期的缩短,同时也减少了系统的维护、运行和管理的工作量,还减少了计 算机总体费用的投入。其次,中间件作为新层次的基础软件,其重要作用是将 不同时期、在不同操作系统上开发的应用软件集成起来,彼此像一个天衣无缝 的整体协调工作,这是操作系统、数据库管理系统本身做不了的。 第9 页 第二章基于中间件的容错系统分析设计 2 1 1 3 链接库 w i n d o w s 程序都是一些可执行文件,它们可以创建并显示一个或多个窗体, 使用消息循环来接收用户的输入。但是动( 静) 态链接库并不能直接被执行, 它们一般也不会接收消息。它们只是一些包含着函数的独立文件,这些函数可 以被w i n d o w s 程序或者其它d l l 调用以完成某项任务。 “动态链接 是指w i n d o w s 程序在运行时才把自己需要存在于某个库中的 函数链接进来。“静态链接是指w i n d o w s 程序在编译阶段就把各种对象模块 ( o b j ) 、运行时库( l i b ) 和资源文件( r e s ) 链接到一起以创建一个可执行 文件( e x e ) 。【2 7 】 动态链接库的目的之一就是为许多不同的程序提供函数和资源。在传统的操 作系统里,用户程序在运行时只能调用操作系统自身的某些函数。而在w i n d o w s 操作系统下,模块或程序调用另一个模块中的函数来执行是一种非常普遍的操 作。因此,从某种角度看,对链接库进行编程,其实是在对w i n d o w s 操作系统 作扩展,也可以看作是在对用户程序作扩展。 动态链接库模块可以有其它的扩展名,但是标准的扩展名是d l l 。静态链接 库标准的扩展名是l i b ,只有具有标准扩展句的动态链接库模块才可以被 w i n d o w s 自动加载。而如果是其它扩展名的动态链接库模块,程序必须使用 l o a d l i b r a r y 或者l o a d l i b r a r y e x 函数来显示加载。 我们可以发现,在大型的应用软件中,会常常使用到链接库技术。举个例子, 假如我们要写一个大型的应用软件,其中包括了多个程序。我们可以发现很多 程序可能都会使用到一些同样的通用的函数。我们可以把这些通用的函数放到 某个目标库文件中( l i b ) ,然后在链接是把它加到每个程序中进行静态链接。 但是有时这是一种非常浪费的方法,因为每个程序模块中都会包括这些通用函 数的独立拷贝。另外,如果我们要改变库文件中的某个函数,就必须把所有使 用到这个函数的程序都重新编译一遍。但是,如果我们使用动态链接库的技术, 把所有这些通用函数都放到一个动态链接库文件当中,我们就可以解决以上提 到的各种问题。首先,动态链接库在硬盘上只保留一个拷贝,程序只是在运行 时才会调用其中使用到的函数,这样我们就可以节省大量的程序存储和运行空 间。其次,如果要修改某个通用函数时,只要调用接口没有改变,只是改变它 的实现方法,那么我们就不必对每个用到它的程序都进行重新编译,而只要把 动态链接库模块重新编译一遍就可以了。 第1 0 页 第二章基于中间什的容错系统分析设计 动态链接库和静态链接库模块也可以作为一个单独的产品来发布。这样程序 开发人员就可以使用第三方的模块来开发自己的应用程序,提高了程序的复用 程序,也节省了大量的时间和精力。 2 1 2h o o k 原理 w i n 3 2 系统h o o k 技术现广泛应用于反病毒、反黑客领域,主要包括两大 挂钩类型:消息挂钩和a p i 挂钩。 2 1 2 1 消息挂钩 w i n d o w s 的消息传递机制 2 8 】 一个消息的产生到被窗口过程处理,有5 个步骤,如图2 1 所示。 图2 1w i n d o w s 的消息传递机制 ( 1 ) 应用系统中发生了某个事件; ( 2 ) 操作系统把这个事件翻译为消息,把它放到消息队列中; ( 3 ) 应用程序通过g e t m e s s a g e ( ) 函数从消息队列中检索并接收到这个消息; ( 4 ) 应用程序调用d i s p a t c h m e s s a g e ( ) 函数把消息调度给操作系统; ( 5 ) 操作系统调用应用程序的窗口处理函数处理该消息。 其中步骤( 3 ) 和步骤( 4 ) 构成了消息循环,在没有钩子存在的情况下,消息 总是不停地循环着。 消息挂钩原理 w i n 3 2 系统是基于消息机制的系统,为了能监控系统中的各种消息,w i n 3 2 系统提供了挂钩各种消息的回调函数,即消息挂钩( h o o k ) 函数,也叫消息钩子。 第1 1 页 第二章基于中间件的容错系统分析设计 如果程序被消息钩子钩住,那么应用程序窗口产生的各种消息,首先被系统送 往消息挂钩函数,挂钩函数根据自己的功能对各种消息进行监控,然后交还控 制权或将消息传给下一个消息挂钩函数,最后到达窗口处理函数。如图2 2 所示: ( 未加载钩子时,正常情况)( 加载钩子后) 图2 2w i n d o w s 消息挂钩前后对比 消息挂钩技术的实现 消息挂钩的实现主要靠四个函数,即: 安装钩子:h h o o ks e t w i n d o w s h o o k e x ( i n ti d h o o k ,h o o k p r o cl p f , h i n s t a n c eh m o d ,d w o r dd w t h r e a d l d ) ; 卸载钩子:b o o lu n h o o k w i n d o w s h o o k e x ( h h o o kh h k ) ; 消息传递:l r e s u l tc a l l n e x t h o o k e x ( h h o o kh h k , i n tn c o d e , w p a r a mw p a r a m ,w p a r a m1 p a r a m ) ; 挂钩回调函数( 用户自定义) ,即s e t w i n d o w s h o o k e x ( ) 函数的第二个参数,必 须按下面格式声明: l r e s u l tc a l l b a c kk e y h o o k p r o c ( i n tn c o d e ,w p a r a mw p a r a m , l p a ra m1 p a r a m ) ; w i n d o w s 消息挂钩的实现过程为:安装钩子 拦截消息 回调函数处理消息 消息传递给下一个钩子 卸载钩子 2 1 2 2a p i 挂钩 a p i 挂钩原理 2 9 - 3 0 w i n d o w s 程序运行时调用的函数大部分放在d l l ( 动态链接库) 中。a p i 挂钩 第1 2 页 第二章基于中间件的容错系统分析设计 的基本原理就是用自己的函数替换别人程序里的函数:当某个程序试图调用它 原来应该使用的函数a 时,通过a p i 挂钩,我们可以把函数a 替换成函数b , 让程序调用函数b 去执行我们想要的处理。其示意图2 3 如下: d l l 图2 3a p i 挂钩原理示意图 d l l a p i 挂钩与消息挂钩的区别 相同点:在别人的程序试图做某个事情前先进行挂钩函数处理。不同点:消 息挂钩是截获消息,a p i 挂钩则是进行函数替换,在非消息处理情况下,就必须 借助a p i 挂钩。 p e 文件格式 要掌握a p i 挂钩技术,就必须了解p e 文件格式。该格式【3 l 】是w i n 3 2 平台下 可执行文件格式,目前除了v x d 和1 6 位的d l l 外,所有的w i n 3 2 执行体都采 用了p e 文件格式,且在n e t 框架中,p e 文件格式还得到了扩展。在p e 文件格 式里有一个重要的数组结构成员:d a t ad i r e c t o r y ( 数据目录) 数组, 该数组中的每一项都是个i m a g ed a t ad i r e c t o r y 类型的结构,原形 为:t y p e d e fs t r u c t i m a g e d a t a d i r e c t o r y u l o n gv i r t u a l a d d r e s s ; u l o n gs i z e ) i m a g e d a t a d i r e c t o r y ,幸p i m a g e _ d a t a _ d i r e c t o r y ; 其成员v i r t u a l a d d r e s s 是一些重要数据结构( 如引入表、引出表、资源目录等) 的r v a ( r e l a t i v ev i r t u a la d d r e s s ,相对虚拟地址,相对于p e 文件被加载到的基地 址而言的) ,这些数据结构( 7 1 入表、引出表、资源目录等) 存储在p e 文件的各节 第1 3 页 第二章基于中间件的容错系统分析设计 ( s e c t i o n ) 里。节中的引入表,描述了该程序需要从其它文件( 主要是d l l ) 中引入 的函数表,引出表则描述了可以被其它程序引用的函数表。 用i m a g ed i r e c t o r ye n t r yi m p o r t 参数作索引,在d a t a d i r e c t o r y 数组中就可以找到p e 文件引入表的r v a ,从而可以定位引入表。引入表以 i m a g ei m p o r td e s c r i p t o r 结构数组作为开始,每个 i m a g ei m p o r td e s c r i p t o r 结构描述了从某个d l l 引入所有函数的情况。 每个i m a g ei m p o r td e s c r i p t o r 的n a m e 成员是一个a s c i i 字符串( 为 d l l 名) 的r v a 值,f i r s t t h u n k 是一个p i m a g et h u n kd a t a 的指针的r v a , 而p i m a g et h u n kd a t a 实际上指向另外一p i m a g et h u n kd a t a 数组, 此数组中的每一项对应着一个引入函数。当p e 文件被加载执行时,该数组中的 每一个p i m a g et h u n kd a t a 都被改成要引入的函数的实际地址,( p e 加载 器会根据该数组中的每一项p i m a g et h u n kd a t a 去寻找引入函数) 。每个 p i m a g et h u n kd a t a 实际上是个d w o r d 型。当其最高位为1 时,表示该 函数是通过序数值来引入的,此时低1 6 位就包含了引入函数的序数值( h i n t ) 。使 用该方式会使程序散失可移植性。若最高位不为1 ,则表示对应的函数是通过函 数名( n a m e ) 来引入的,此时这个p i m a g et h u n kd a t a 被解释成 i m a g ei m p o r tb yn a m e 结构的r v a ,每个i m a g ei m p o r tb yn a m e 结构包含函数的名称等信息。因此不论以何种方式引入函数,p e 加载器都可以 通过读取p i m a g et h u n kd a t a中的信息( 序数值或 i m a g ei m p o r tb yn a m e ) 来找到对应函数的地址。 p e 文件结构总体层次分布如图2 4 所示: 第1 4 页 第二章基于中间件的容错系统分析设计 q 墩辨诞谈储魉t 弼选 c o f f 犄号f 可泫 姗杼墨掰缝 a f l o c - h 慵 。蚋 触 i 嘲 a , t a o 5 e c t l o n h e a d e m 铭l 蟹黢缀( s 毫e u o a1 袖l e 撇艮d 帆d 硪以疆o r v 络赡数缀 翻髓嗡 i m a g ef i l e 。h e a d e r p 笔均馋 1 ) o ss l 女b d o s 知皑秘搿融封 卜 ) 图2 4p e 文件结构总体层次分布 第二节基于w i n d o w s 的各种程序运行行为分析 程序在数据集合上一次动态执行的过程称之为进程,进程是操作系统进行资 源分配的基本单位。其是为某一或某些应用而编写,自身具有很强的专用性和 目的性,其预设的功能决定了动态执行的进程对系统资源的操作也是可以被预 知的。由于种种原因,程序总是存在着各种各样的漏洞,表现为进程在运行的 过程中偏离了正常的轨道,即产生了异常的行为。例如,w o r d 是一款文字编 辑程序,主要用于编辑,保存和打印文档,它的正常行为表现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 杜邦管理课件下载
- 2025至2030全棉坯布产业园区定位规划及招商策略咨询报告
- 2025至2030传染病行业市场占有率及投资前景评估规划报告
- 小学剪纸课件
- 2025至2030中国麦芽糖浆行业产业运行态势及投资规划深度研究报告
- 小学关于鲁迅的课件
- 初中物理教师信息化教学个人计划
- 小学数学新课标兴趣激发心得体会
- 教科版六年级科学上册信息化教学计划
- 西式面点师技能认证计划
- 木工三级安全教育试卷
- 中学田径基础校本课程教材
- 永能选煤厂生产安全事故应急救援预案
- 河北省邯郸市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 浙江省建设领域简易劳动合同(A4版本)
- 浙江省本级公务车辆租赁服务验收单(格式)
- 糖代谢紊乱的实验诊断
- 400T汽车吊主臂起重性能表
- 大信审计执业问题解答-存货监盘审计指引
- GB∕T 12703.1-2021 纺织品 静电性能试验方法 第1部分:电晕充电法
- 特种设备(天车、叉车)事故应急演练方案
评论
0/150
提交评论