实现系统热补丁的方法及装置制造方法

文档序号:6543155阅读:127来源:国知局
实现系统热补丁的方法及装置制造方法
【专利摘要】本发明是关于一种实现系统热补丁的方法及装置。其中,所述方法包括:根据接收到的热补丁触发指令,加载并解析热补丁应用配置文件;通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁;若所述当前系统进程需要加载热补丁,则从所述热补丁应用配置文件中获取所述当前系统进程需要应用的热补丁信息;根据所述热补丁信息,对所述当前系统进程进行热补丁处理;其中,所述当前系统进程为进程初始化已完成,但程序代码还未执行的进程,所述热补丁应用配置文件为存储在预设存储区内的共享文件。本发明提供的技术方案,可在系统运行过程中自动对系统进行缺陷修复,降低了系统存在的安全风险,确保了系统安全可靠的运行。
【专利说明】实现系统热补丁的方法及装置
【技术领域】
[0001]本发明涉及一种计算机领域,特别是涉及一种实现系统热补丁的方法及装置。
【背景技术】
[0002]目前,微软公司(Microsoft Corporation)将会全面停止对其公司出品的WindowsXP系统的支持服务,不再向个人用户发布关于Windows XP系统的漏洞补丁。但根据相关行业机构统计数据显示,Windows XP系统在全球市场的占有率仍然有25%,而在中国国内的占有率更是超过了 70%。这样对于现有Windows XP系统使用者来说没有了官方的支持服务,黑客必然会利用系统漏洞传播木马病毒,对用户电脑进行攻击,形成安全威胁。
[0003]因此,需要提供一种技术方案,以实现对现有得不到官方支持服务的系统进行热补丁的方法,以自动修复系统软件版本的缺陷。

【发明内容】

[0004]鉴于上述问题,提出了本发明以便于提供一种克服上述问题或者至少部分地解决上述问题的实现系统热补丁的方法及装置。
[0005]依据本发明的一个方面,提供了一种实现系统热补丁的方法,包括:
[0006]根据接收到的热补丁触发指令,加载并解析热补丁应用配置文件;
[0007]通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁 ;
[0008]若所述当前系统进程需要加载热补丁,则从所述热补丁应用配置文件中获取所述当前系统进程需要应用的热补丁信息;
[0009]根据所述热补丁信息,对所述当前系统进程进行热补丁处理;
[0010]其中,所述当前系统进程为进程初始化已完成,但程序代码还未执行的进程,所述热补丁应用配置文件为存储在预设存储区内的共享文件。
[0011]可选的,前述的实现系统热补丁的方法,其中,所述通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁,包括:
[0012]获取所述当前系统进程中已加载程序模块的特征信息;
[0013]查询所述热补丁应用配置文件中是否包含有所述特征信息;
[0014]若有,则确定当前系统进程需要加载热补丁 ;
[0015]其中,所述热补丁应用配置文件中包括有至少一个特征信息。
[0016]可选的,前述的实现系统热补丁的方法,其中,所述特征信息包括:程序模块的文件名、程序模块的文件路径,程序模块的时间戳TimeStamp字段、程序模块的校验和CheckSum字段及程序模块的版本信息VersionInfo字段中的一个或任意多个的组合。
[0017]可选的,前述的实现系统热补丁的方法,其中,所述从所述热补丁应用配置文件中获取所述当前系统进程需要应用的热补丁信息,包括:
[0018]获取所述当前系统进程中已加载程序模块的特征信息;
[0019]根据所述热补丁应用配置文件中包括的特征信息和热补丁信息的对应关系,获取所述特征信息对应的热补丁信息;
[0020]其中,获取到的所述热补丁信息即为所述当前系统进程需要应用的热补丁信息,所述热补丁应用配置文件中包括有至少一个特征信息,以及各特征信息与热补丁信息的对应关系。
[0021]可选的,前述的实现系统热补丁的方法,其中,所述热补丁信息包括:校验信息及热补丁动态链接库DLL文件标识;相应的,所述根据所述热补丁信息,对所述当前系统进程进行热补丁处理,包括:
[0022]根据所述校验信息,对所述热补丁信息进行校验;
[0023]若通过校验,则根据所述热补丁 DLL文件标识,获取对应的热补丁 DLL文件,并加载所述热补丁 DLL文件,以将所述热补丁 DLL文件拷贝至所述当前系统进程预留的补丁区中;
[0024]获取所述当前系统进程中已加载程序模块的需要进行修补的函数地址;
[0025]将所述函数地址处的指令替换为指向所述热补丁 DLL文件的跳转指令。
[0026]可选的,前述的实现系统热补丁的方法,其中,所述根据所述热补丁信息,对所述当前系统进程进行热补丁处理,还包括:
[0027]获取挂接钩子Hook函数的地址,所述Hook函数用于监测所述当前系统进程继所述已加载程序模块之后加载的新程序模块;
[0028]在所述地址处挂接所述Hook函数。
[0029]可选的,前述的实现系统热补丁的方法,其中,所述根据所述热补丁信息,对所述当前系统进程进行热补丁处理之后,还包括:
[0030]若通过所述Hook函数监测到所述当前系统进程继所述已加载程序模块之后加载了新程序模块,则循环跳转至所述通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁的步骤,并根据确定结果继续执行后续步骤,直至所述当前系统进程没有新程序模块加载为止。
[0031]根据本发明的另一个方面,提供了一种实现系统热补丁的装置,包括:
[0032]加载解析模块,用于根据接收到的热补丁触发指令,加载并解析热补丁应用配置文件;
[0033]确定模块,用于通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁;
[0034]获取模块,用于当所述确定模块确定出所述当前系统进程需要加载热补丁时,从所述热补丁应用配置文件中获取所述当前系统进程需要应用的热补丁信息;
[0035]处理模块,用于根据所述热补丁信息,对所述当前系统进程进行热补丁处理;
[0036]其中,所述当前系统进程为进程初始化已完成,但程序代码还未执行的进程,所述热补丁应用配置文件为存储在预设存储区内的共享文件。
[0037]可选的,前述的实现系统热补丁的装置,其中,所述确定模块,包括:
[0038]第一获取单元,用于获取所述当前系统进程中已加载程序模块的特征信息;
[0039]查询确定单元,用于查询所述热补丁应用配置文件中是否包含有所述特征信息,若有,则确定当前系统进程需要加载热补丁 ;
[0040]其中,所述热补丁应用配置文件中包括有至少一个特征信息。[0041]可选的,前述的实现系统热补丁的装置,其中,所述获取模块,包括:
[0042]第二获取单元,用于获取所述当前系统进程中已加载程序模块的特征信息;
[0043]第三获取单元,用于根据所述热补丁应用配置文件中包括的特征信息和热补丁信息的对应关系,获取所述特征信息对应的热补丁信息;
[0044]其中,获取到的所述热补丁信息即为所述当前系统进程需要应用的热补丁信息,所述热补丁应用配置文件中包括有至少一个特征信息,以及各特征信息与热补丁信息的对应关系。
[0045]可选的,前述的实现系统热补丁的装置,其中,所述热补丁信息包括:校验信息及热补丁动态链接库DLL文件标识;相应的,所述处理模块,包括:
[0046]校验单元,用于根据所述校验信息,对所述热补丁信息进行校验;
[0047]加载单元,用于当所述热补丁信息通过校验后,根据所述热补丁 DLL文件标识,获取对应的热补丁 DLL文件,并加载所述热补丁 DLL文件,以将所述热补丁 DLL文件拷贝至所述当前系统进程预留的补丁区中;
[0048]第四获取单元,用于获取所述当前系统进程中已加载程序模块的需要进行修补的函数地址;
[0049]替换单元,用于将所述函数地址处的指令替换为指向所述热补丁 DLL文件的跳转指令。
[0050]可选的,前述的实现系统热补丁的装置,其中,所述处理模块,还包括:
[0051]第五获取单元,用于获取挂接钩子Hook函数的地址,所述Hook函数用于监测所述当前系统进程继所述已加载程序模块之后加载的新程序模块;
[0052]挂接单元,用于在所述地址处挂接所述Hook函数。
[0053]可选的,前述的实现系统热补丁的装置,还包括:
[0054]循环跳转模块,用于当通过所述Hook函数监测到所述当前系统进程继所述已加载程序模块之后加载了新程序模块,则循环跳转至所述确定模块以继续执行所述通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁的步骤,并根据确定结果继续调用实现后续步骤的模块,直至所述当前系统进程没有新程序模块加载为止。
[0055]借由上述技术方案,本发明实施例提供的技术方案至少具有下列优点:
[0056]本发明实施例提供的技术方案通过加载热补丁应用配置文件,并根据所述热补丁应用配置文件确定当前系统进程是否需要加载热补丁,以及在确定出需要加载热补丁时,获取需要应用的热补丁信息,然后自动的根据所述热补丁信息对所述当前系统进程进行热补丁处理,进而实现了在系统运行过程中自动对系统进行缺陷修复的功能,提高了系统的防御能力,降低了系统存在的安全风险,确保了系统安全可靠的运行。
[0057]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
【专利附图】

【附图说明】
[0058]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:[0059]图1示出了本发明实施例一提供的实现系统热补丁的方法的流程示意图;
[0060]图2示出了安装完成能实现本发明实施例一提供的实现系统热补丁的方法的客户端应用软件后计算机显示屏上所呈现界面的示例图;
[0061]图3示出了本发明实施例一提供的实现系统热补丁的方法中步骤102的一种实现的流程示意图;
[0062]图4示出了本发明实施例一提供的实现系统热补丁的方法中步骤103的一种实现的流程示意图;
[0063]图5示出了本发明实施例一提供的实现系统热补丁的方法中步骤104的一种实现的流程示意图;
[0064]图6示出了本发明实施例二提供的实现系统热补丁的装置的一种实现的结构示意图;
[0065]图7示出了本发明实施例二提供的实现系统热补丁的装置中所述处理模块的一种实现的结构示意图;
[0066]图8为示出了本发明实施例二提供的实现系统热补丁的装置的另一种实现的结构示意图。
【具体实施方式】
[0067]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0068]如图1所示,本发明实施例一提供的实现系统热补丁的方法的流程示意图。本实施例一所述的方法的执行主体可以是实现系统热补丁的装置。其中,所述实现系统热补丁的装置可具体为安装在客户端设备上的客户端应用软件。具体的如图2所示,用户在本地安装完成所述实现系统热补丁的装置后,本地计算机的显示屏上可呈现出图2所示的界面。如图1所示,本实施例一所述的方法包括:
[0069]步骤101、根据接收到的热补丁触发指令,加载并解析热补丁应用配置文件。
[0070]具体的,用户可通过触发图2所示界面上对应的按键(如图2中所示的补天热补丁引擎按键)输入所述热补丁触发指令。或者,用户在本地安装所述实现系统热补丁的装置对应的客户端软件后,设置其在本地客户端开机/重启时自动触发所述热补丁触发指令。所述热补丁应用配置文件可以是用户在本地安装所述实现系统热补丁的装置对应的客户端软件后自动存储在本地存储区内的文件,其中,所述本地存储区可以是用户指定的或者是默认的存储区。或者,所述热补丁应用配置文件也可以是:安装有客户端软件的计算机在接收到所述热补丁触发指令后,通过与服务器端通信,从所述服务器端下载下来的文件,该热补丁应用配置文件可存储在用户预设的存储区域或下载默认的存储区域内。
[0071]其中,所述热补丁应用配置文件为存储在预设存储区内的共享文件。具体的,所述热补丁应用配置文件可由服务进程加载和解析,并以共享的内存映射文件(File Mapping)对象保存,后续的每个进程只要直接读取File Mapping即可,而不用重新加载和解析所述热补丁应用配置文件。[0072]步骤102、通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁。
[0073]其中,所述热补丁应用配置文件中可包含有热补丁加载规则,进而本步骤102可通过查询所述热补丁应用配置文件中包含的热补丁加载规则,并根据查询出的热补丁加载规则来确定所述当前系统进程是否需要加载热补丁。其中,所述热补丁加载规则可由一个或多个预设定的判定语句构成。
[0074]或者,所述热补丁应用配置文件中还可以包括有至少一个特征信息。相应的,本步骤102可采用图3所示的方法实现:
[0075]步骤201,获取所述当前系统进程中已加载程序模块的特征信息。
[0076]步骤202,查询所述热补丁应用配置文件中是否包含有所述特征信息,若有,则进入步骤203 ;否则,进入步骤204。
[0077]步骤203、确定所述当前系统进程需要加载热补丁。
[0078]步骤204、确定所述当前系统进程不需要加载热补丁。
[0079]其中,所述特征信息包括:程序模块的文件名、程序模块的文件路径,程序模块的时间戳TimeStamp字段、程序模块的校验和CheckSum字段及程序模块的版本信息VersionInfo字段中的一个或任意多个的组合。
[0080]另外,这里需要注意的是:本实施例中所述的当前系统进程为进程初始化已完成,但程序代码还未执行的进程。即本发明各实施例提供的技术方案,是在系统进程的进程初始化完成,程序代码还没有执行的时机对系统进程进行热补丁处理的。
[0081]步骤103、若所述当前系统进程需要加载热补丁,则从所述热补丁应用配置文件中获取所述当前系统进程需要应用的热补丁信息。
[0082]其中,所述热补丁应用配置文件中包括有至少一个特征信息,以及各特征信息与热补丁信息的对应关系。例如,理论上,所述热补丁应用配置文件可以表征为一个配置列表,即该列表中包括有至少一个特征信息,且对应每一个特征信息都有相应的热补丁信息。具体的,本步骤103可采用如图4所示的方法实现,包括:
[0083]步骤301、获取所述当前系统进程中已加载程序模块的特征信息。
[0084]步骤302、根据所述热补丁应用配置文件中包括的特征信息和热补丁信息的对应关系,获取所述特征信息对应的热补丁信息。
[0085]其中,获取到的所述热补丁信息即为所述当前系统进程需要应用的热补丁信息。
[0086]步骤104、根据所述热补丁信息,对所述当前系统进程进行热补丁处理。
[0087]本实施例提供的技术方案通过加载热补丁应用配置文件,并根据所述热补丁应用配置文件确定当前系统进程是否需要加载热补丁,以及在确定出需要加载热补丁时,获取需要应用的热补丁信息,然后自动的根据所述热补丁信息对所述当前系统进程进行热补丁处理,进而实现了在系统运行过程中自动对系统进行缺陷修复的功能,提高了系统的防御能力,降低了系统存在的安全风险,确保了系统安全可靠的运行。
[0088]进一步的,上述实施例中所述的热补丁信息可以包括:校验信息及热补丁动态链接库DLL文件标识。如图5所示,上述实施例所述实现系统热补丁的方法中,步骤104可采用如下步骤实现,包括:
[0089]步骤401、根据所述校验信息,对所述热补丁信息进行校验。[0090]其中,所述校验信息可以包括CRC信息和版本信息。所述CRC信息是用于校验完整性的,所述版本信息是用于校验安全性的。当两个校验结果都为通过时,才能通过校验;若两个校验结果中只要有一个没通过,都应校验失败。
[0091]步骤402、若通过校验,则根据所述热补丁 DLL文件标识,获取对应的热补丁 DLL文件,并加载所述热补丁 DLL文件,以将所述热补丁 DLL文件拷贝至所述当前系统进程预留的补丁区中。 [0092]步骤403、获取所述当前系统进程中已加载程序模块的需要进行修补的函数地址。
[0093]其中,所述函数地址可从所述热补丁应用配置文件中获得,即所述热补丁应用配置文件中包含有对应每一个热补丁信息,应用该热补丁信息进行修补的对象(程序模块中的函数)的函数地址。实际上,包含在所述热补丁应用配置文件中的每一个热补丁信息都是程序人员发现系统漏洞后,专门针对该漏洞所编写的信息。因此,所述程序模块中的需要进行修补的函数(或指令)的地址可通过查询所述热补丁应用配置文件获得。当然,所述函数地址也可存储在除所述热补丁应用配置文件以外的其他文件中,本发明实施例不作具体限制。
[0094]步骤404、将所述函数地址处的指令替换为指向所述热补丁 DLL文件的跳转指令。
[0095]通过上述步骤将指令替换后,这样在所述当前系统进程的程序代码执行过程中,就可以在运行到所述跳转指令时,通过跳转指令跳转至所述热补丁 DLL文件,以执行相应的热补丁代码段,进而达到将原有具有漏洞的代码段替换为没有漏洞的代码段的目的,以避免漏洞。
[0096]这里需要说明的是:通常情况下一个系统进程其加载的程序模块可能不只一个,有两个或更多个。因此,上述实现所述步骤104的方法,如图5所示,还包括:
[0097]步骤405、获取挂接钩子Hook函数的地址。
[0098]其中,所述Hook函数用于监测所述当前系统进程继所述已加载程序模块之后加载的新程序模块。例如,在Windows XP系统中,可进行栈回溯,找到ntdll!LdrpCallInitRoutine 的地址,找到的所述 ntdll!LdrpCallInitRoutine 的地址即可作为所述Hook函数的地址。
[0099]步骤406、在所述地址处挂接所述Hook函数。
[0100]本实施例挂接所述Hook函数的原理是:系统程序通常是按照自己的加载顺序依次调用并加载其他程序模块的。所有程序模块中可能有部分存在漏洞,也可能都存在漏洞。当前程序模块一被加载但还未执行时,根据本实施例提供的热补丁处理方法就已经进行了热补丁处理。然而,继当前新加载的程序模块之后,系统程序是不知道加载什么程序模块的,所以要在加载的程序模块后面加Hook函数,以通过所述Hook函数对所述程序模块以后新加载的程序模块进行监测,这样后面系统程序只要一调用,系统程序就能最先知道有新的模块加载了。
[0101]再进一步的,基于上述各实施例,所述实现系统热补丁的方法中,上述步骤104、所述根据所述热补丁信息,对所述当前系统进程进行热补丁处理之后,还包括:
[0102]若通过所述Hook函数监测到所述当前系统进程继所述已加载程序模块之后加载了新程序模块,则循环跳转至所述通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁的步骤,并根据确定结果继续执行后续步骤,直至所述当前系统进程没有新程序模块加载为止。
[0103]S卩,若通过所述Hook函数监测到所述当前系统进程继所述已加载程序模块之后加载了新程序模块,则循环跳转至步骤102,并依次执行步骤103和104,依次循环执行直至所述当前系统进程没有新程序模块加载为止。
[0104]需要说明的是:对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0105]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0106]如图6所示,本发明实施例二提供的实现系统热补丁的装置的结构示意图。本实施例二提供的所述装置可实现上述实施例一提供的所述实现系统热补丁的方法。具体的,本实施例二提供的所述实现系统热补丁的装置,如图6所示,包括:加载解析模块1、确定模块2、获取模块3和处理模块4。其中,所述加载解析模块I用于根据接收到的热补丁触发指令,加载并解析热补丁应用配置文件。所述确定模块2用于通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁。所述获取模块3用于当所述确定模块确定出所述当前系统进程需要加载热补丁时,从所述热补丁应用配置文件中获取所述当前系统进程需要应用的热补丁信息。所述处理模块4用于根据所述热补丁信息,对所述当前系统进程进行热补丁处理。其中,所述当前系统进程为进程初始化已完成,但程序代码还未执行的进程,所述热补丁应用配置文件为存储在预设存储区内的共享文件。
[0107]本发明实施例提供的技术方案通过加载热补丁应用配置文件,并根据所述热补丁应用配置文件确定当前系统进程是否需要加载热补丁,以及在确定出需要加载热补丁时,获取需要应用的热补丁信息,然后自动的根据所述热补丁信息对所述当前系统进程进行热补丁处理,进而实现了在系统运行过程中自动对系统进行缺陷修复的功能,提高了系统的防御能力,降低了系统存在的安全风险,确保了系统安全可靠的运行。
[0108]进一步的,上述实施例中所述的确定模块可采用如下结构实现。具体的,所述确定模块包括:第一获取单元和查询确定单元。其中,所述第一获取单元用于获取所述当前系统进程中已加载程序模块的特征信息。所述查询确定单元用于查询所述热补丁应用配置文件中是否包含有所述特征信息,若有,则确定当前系统进程需要加载热补丁。其中,所述热补丁应用配置文件中包括有至少一个特征信息。所述程序模块的特征信息包括:程序模块的文件名、程序模块的文件路径,程序模块的时间戳字段(TimeStamp)、程序模块的校验和字段(Checksum)及程序模块的版本信息字段(VersionInfo)中的一个或任意多个的组合。
[0109]进一步的,上述实施例中所述的获取模块可采用如下结构实现。具体的,所述获取模块包括第二获取单元和第三获取单元。其中,所述第二获取单元,用于获取所述当前系统进程中已加载程序模块的特征信息。所述第三获取单元用于根据所述热补丁应用配置文件中包括的特征信息和热补丁信息的对应关系,获取所述特征信息对应的热补丁信息。其中,获取到的所述热补丁信息即为所述当前系统进程需要应用的热补丁信息;所述热补丁应用配置文件中包括有至少一个特征信息,以及各特征信息与热补丁信息的对应关系。
[0110]进一步的,所述热补丁信息包括:校验信息及热补丁动态链接库DLL文件标识。相应的,上述实施例中所述的处理模块可采用图7所示的结构实现。具体的如图7所示,所述处理模块4包括:校验单元41、加载单元42、第四获取单元43及替换单元44。其中,所述校验单元41用于根据所述校验信息,对所述热补丁信息进行校验。所述加载单元42用于当所述热补丁信息通过校验后,根据所述热补丁 DLL文件标识,获取对应的热补丁 DLL文件,并加载所述热补丁 DLL文件,以将所述热补丁 DLL文件拷贝至所述当前系统进程预留的补丁区中。所述第四获取单元43用于获取所述当前系统进程中已加载程序模块的需要进行修补的函数地址。所述替换单元44用于将所述函数地址处的指令替换为指向所述热补丁DLL文件的跳转指令。
[0111]再进一步的,如图7所示,所述处理模块4可以包括:第五获取单元45和挂接单元
46。其中,所述第五获取单元45用于获取挂接钩子Hook函数的地址,所述Hook函数用于监测所述当前系统进程继所述已加载程序模块之后加载的新程序模块。所述挂接单元46用于在所述地址处挂接所述Hook函数。
[0112]如图8所示,基于上述实施例,所述实现系统热补丁的装置还包括:循环跳转模块
5。所述循环跳转模块5用于当通过所述Hook函数监测到所述当前系统进程继所述已加载程序模块之后加载了新程序模块,则循环跳转至所述确定模块2以继续执行所述通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁的步骤,并根据确定结果继续调用实现后续步骤的模块,直至所述当前系统进程没有新程序模块加载为止;即若所述确定结果为所述当前系统进程需要加载热补丁,则调用所述获取模块获取所述当前系统进程需要应用的热补丁信息,然后调用所述处理模块根据所述热补丁信息,对所述当前系统进程进行热补丁处理;循环执行直至所述当前系统进程没有新程序模块加载为止。
[0113]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0114]可以理解的是,上述方法及交换机中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
[0115]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0116]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0117]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0118]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0119]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0120]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0121 ] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP )来实现根据本发明实施例的热补丁处理装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。[0122] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
【权利要求】
1.一种实现系统热补丁的方法,其特征在于,包括: 根据接收到的热补丁触发指令,加载并解析热补丁应用配置文件; 通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁; 若所述当前系统进程需要加载热补丁,则从所述热补丁应用配置文件中获取所述当前系统进程需要应用的热补丁信息; 根据所述热补丁信息,对所述当前系统进程进行热补丁处理; 其中,所述当前系统进程为进程初始化已完成,但程序代码还未执行的进程,所述热补丁应用配置文件为存储在预设存储区内的共享文件。
2.根据I所述的方法,其特征在于,所述通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁,包括: 获取所述当前系统进程中已加载程序模块的特征信息; 查询所述热补丁应用配置文件中是否包含有所述特征信息; 若有,则确定所述当前系统进程需要加载热补丁; 其中,所述热补丁应用配置文件中包括有至少一个特征信息。
3.根据权利要求1或2所述的方法,其特征在于,所述热补丁信息包括:校验信息及热补丁动态链接库DLL文件标识;相应的,所述根据所述热补丁信息,对所述当前系统进程进行热补丁处理,包括: 根据所述校验信息,对所述热补丁信息进行校验; 若通过校验,则根据所述热补丁 DLL文件标识,获取对应的热补丁 DLL文件,并加载所述热补丁 DLL文件,以将所述热补丁 DLL文件拷贝至所述当前系统进程预留的补丁区中;获取所述当前系统进程中已加载程序模块的需要进行修补的函数地址; 将所述函数地址处的指令替换为指向所述热补丁 DLL文件的跳转指令。
4.根据权利要求3所述的方法,其特征在于,所述根据所述热补丁信息,对所述当前系统进程进行热补丁处理,还包括: 获取挂接钩子Hook函数的地址,所述Hook函数用于监测所述当前系统进程继所述已加载程序模块之后加载的新程序模块; 在所述地址处挂接所述Hook函数。
5.根据权利要求4所述的方法,其特征在于,所述根据所述热补丁信息,对所述当前系统进程进行热补丁处理之后,还包括: 若通过所述Hook函数监测到所述当前系统进程继所述已加载程序模块之后加载了新程序模块,则循环跳转至所述通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁的步骤,并根据确定结果继续执行后续步骤,直至所述当前系统进程没有新程序模块加载为止。
6.一种实现系统热补丁的装置,其特征在于,包括: 加载解析模块,用于根据接收到的热补丁触发指令,加载并解析热补丁应用配置文件; 确定模块,用于通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁 ; 获取模块,用于当所述确定模块确定出所述当前系统进程需要加载热补丁时,从所述热补丁应用配置文件中获取所述当前系统进程需要应用的热补丁信息; 处理模块,用于根据所述热补丁信息,对所述当前系统进程进行热补丁处理; 其中,所述当前系统进程为进程初始化已完成,但程序代码还未执行的进程,所述热补丁应用配置文件为存储在预设存储区内的共享文件。
7.根据权利要求6所述的装置,其特征在于,所述确定模块,包括: 第一获取单元,用于获取所述当前系统进程中已加载程序模块的特征信息; 查询确定单元,用于查询所述热补丁应用配置文件中是否包含有所述特征信息,若有,则确定当前系统进程需要加载热补丁; 其中,所述热补丁应用配置文件中包括有至少一个特征信息。
8.根据权利要求6或7所述的装置,其特征在于,所述热补丁信息包括:校验信息及热补丁动态链接库DLL文件标识;相应的,所述处理模块,包括: 校验单元,用于根据所述校验信息,对所述热补丁信息进行校验; 加载单元,用于当所述热补丁信息通过校验后,根据所述热补丁 DLL文件标识,获取对应的热补丁 DLL文件,并加载所述热补丁 DLL文件,以将所述热补丁 DLL文件拷贝至所述当前系统进程预留的补丁区中; 第四获取单元,用于获取所述当前系统进程中已加载程序模块的需要进行修补的函数地址; 替换单元,用于将所述函数地址处的指令替换为指向所述热补丁 DLL文件的跳转指令。
9.根据权利要求8所述的装置,其特征在于,所述处理模块,还包括: 第五获取单元,用于获取挂接钩子Hook函数的地址,所述Hook函数用于监测所述当前系统进程继所述已加载程序模块之后加载的新程序模块; 挂接单元,用于在所述地址处挂接所述Hook函数。
10.根据权利要求9所述的装置,其特征在于,还包括: 循环跳转模块,用于当通过所述Hook函数监测到所述当前系统进程继所述已加载程序模块之后加载了新程序模块,则循环跳转至所述确定模块以继续执行所述通过查询所述热补丁应用配置文件,确定当前系统进程是否需要加载热补丁的步骤,并根据确定结果继续调用实现后续步骤的模块,直至所述当前系统进程没有新程序模块加载为止。
【文档编号】G06F9/445GK103942073SQ201410138703
【公开日】2014年7月23日 申请日期:2014年4月8日 优先权日:2014年4月8日
【发明者】张聪, 郑文彬 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1