补丁包识别方法、装置和终端与流程

文档序号:14249205阅读:234来源:国知局
补丁包识别方法、装置和终端与流程

本发明涉及补丁技术领域,具体而言,本发明涉及一种补丁包识别方法、装置和终端。



背景技术:

随着互联网科技的迅猛发展,网络中的信息安全问题也面临着严峻的挑战,各种信息安全事故层出不穷。其中,各大操作系统或者应用程序存在的漏洞成为大规模网络与信息安全事件和重大信息泄露事件的主要原因之一。在发现操作系统或者应用程序存在的缺陷之后,另外编制一个小程序使其完善,这种小程序俗称补丁。针对计算机漏洞带来的危害,加载相应的补丁是最有效、也是最经济的防范措施。信息时代,补丁技术成为了一个重要研究方向。

然而,补丁本身也是一种程序,并非是万能的。事实上,可能存在不适合的补丁包会在加载过程中造成系统崩溃。不难发现,由于各大操作系统或者应用程序复杂程度日益加深,相应的补丁数量也在不断增多。比如对一个中大型的企业而言,一般会应用到多种操作系统,成百上千个应用软件,有的产品每年就会发现50~70个漏洞。若在对这些漏洞打相应补丁的过程中出现了系统崩溃的情况,从中查找引起系统崩溃的补丁是件非常繁重的工作,甚至对其中安全有效的补丁包的加载也造成了障碍。因此,如何在系统崩溃后较快识别导致系统崩溃的补丁成为亟需解决的技术难题。



技术实现要素:

为克服上述技术问题或者至少部分地解决上述技术问题,特提出以下技术方案。

本发明提供一种补丁包识别方法,包括如下步骤:

系统重启后,获取内核状态信息及补丁包加载状态信息;

在所述内核状态信息中获取目标寄存器存储的地址信息,并生成地址列表;

针对地址列表中的任一地址,在补丁包加载状态信息中对比已加载的任一补丁包的起始地址和结束地址,若所述任一地址位于所述起始地址和所述结束地址的范围之内,则标记所述任一补丁包的状态为加载失败。

具体地,所述目标寄存器包括以下至少一项:

程序计数器;链接寄存器;堆栈。

进一步地,所述内核状态信息为系统重启前最后存储的内核状态信息。

更进一步地,所述在所述内核状态信息中获取目标寄存器存储的地址信息,并生成地址列表的步骤,包括:

获取程序寄存器存储的下条指令的访问地址;

获取链接寄存器存储的调用函数的返回地址;

获取堆栈存储的多个函数的返回地址;

根据所述下条指令的访问地址、所述调用函数的返回地址以及所述多个函数的返回地址中的至少一种生成地址列表。

进一步地,所述补丁包加载状态信息为系统重启前最后存储的各个补丁包的加载状态信息。

实际应用中,所述内核状态信息及所述补丁包加载状态信息存储在存储空间中,所述存储空间为持久化存储区域。

进一步地,所述方法还包括:

当所述地址列表中的地址依次对比后,标记为加载失败的补丁包个数为零,则确定所述补丁包加载状态信息对应的加载中的补丁包,标记所述加载中的补丁包的状态为加载失败。

进一步地,所述方法还包括:

系统重启次数大于预定次数阈值,则取消加载所述补丁包。

本发明还提供一种补丁包识别装置,包括:

获取模块,用于系统重启后,获取内核状态信息及补丁包加载状态信息;

生成模块,用于在所述内核状态信息中获取目标寄存器存储的地址信息,并生成地址列表;

标记模块,用于针对地址列表中的任一地址,在补丁包加载状态信息中对比已加载的任一补丁包的起始地址和结束地址,若所述任一地址位于所述起始地址和所述结束地址的范围之内,则标记所述任一补丁包的状态为加载失败。

具体地,所述目标寄存器包括以下至少一项:

程序计数器;链接寄存器;堆栈。

进一步地,所述内核状态信息为系统重启前最后存储的内核状态信息。

更进一步地,所述生成模块具体用于获取程序寄存器存储的下条指令的访问地址;以及,

获取链接寄存器存储的调用函数的返回地址;以及,

获取堆栈存储的多个函数的返回地址;以及,

根据所述下条指令的访问地址、所述调用函数的返回地址以及所述多个函数的返回地址中的至少一种生成地址列表。

进一步地,所述补丁包加载状态信息为系统重启前最后存储的各个补丁包的加载状态信息。

实际应用中,所述内核状态信息及所述补丁包加载状态信息存储在存储空间中,所述存储空间为持久化存储区域。

进一步地,所述标记模块还用于当所述地址列表中的地址依次对比后,标记为加载失败的补丁包个数为零,则确定所述补丁包加载状态信息对应的加载中的补丁包,标记所述加载中的补丁包的状态为加载失败。

进一步地,所述装置还包括:

取消模块,用于当系统重启次数大于预定次数阈值时,取消加载所述补丁包。

本发明还提供一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的补丁包识别方法。

本发明还提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述的补丁包识别方法。

上述的补丁包识别方法、装置和终端,在系统重启后,获取内核状态信息及补丁包加载状态信息;在所述内核状态信息中获取目标寄存器存储的地址信息,并生成地址列表;针对地址列表中的任一地址,在补丁包加载状态信息中对比已加载的任一补丁包的起始地址和结束地址,若所述任一地址位于所述起始地址和所述结束地址的范围之内,则标记所述任一补丁包的状态为加载失败,本发明通过有据可循的内核状态信息来推断已经加载的补丁中可能导致系统崩溃的补丁并及时标记,以便重新打补丁时可以根据补丁包的状态信息迅速排除,避免该补丁包可能再一次引起系统崩溃的情况,为顺利加载其他安全有效的补丁提供了保障。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例提供的补丁包识别方法的流程示意图;

图2为本发明实施例提供的补丁包识别装置的框架示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通讯链路上,执行双向通讯的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通讯设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通讯设备;pcs(personalcommunicationsservice,个人通讯系统),其可以组合语音、数据处理、传真和/或数据通讯能力;pda(personaldigitalassistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或gps(globalpositioningsystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通讯终端、上网终端、音乐/视频播放终端,例如可以是pda、mid(mobileinternetdevice,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。

本技术领域技术人员可以理解,这里所使用的远端网络设备,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云。在此,云由基于云计算(cloudcomputing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。本发明的实施例中,远端网络设备、终端设备与wns服务器之间可通过任何通讯方式实现通讯,包括但不限于,基于3gpp、lte、wimax的移动通讯、基于tcp/ip、udp协议的计算机网络通讯以及基于蓝牙、红外传输标准的近距无线传输方式。

本发明实施例中,一个大补丁包作为一个完整的补丁文件,加载后在运行内存中运行相应的补丁功能。其中大补丁包由多个小补丁包组成,每个小补丁包对应唯一的id,大包的id是小包的集合。考虑到在这些补丁包的加载过程中若出现了系统崩溃的情况,从中查找引起系统崩溃的补丁是件非常繁重的工作,甚至对其中安全有效的补丁包的加载也造成了障碍。基于此,本发明实施例提供了一种补丁包识别方法、装置和终端,下面通过实施例进行介绍。

本发明实施例提供了一种补丁包识别方法,如图1所示,包括:

步骤s101:系统重启后,获取内核状态信息及补丁包加载状态信息。

一方面,对重要的运行信息进行记录是操作系统通用的手段,常见的形式包括log日志等,可以编写脚本来扫描这些日志,并基于它们的内容去执行某些功能。

本发明实施例中,内核状态信息是通过log文件的形式存储在存储空间中,只要操作系统在运行过程中,就可以采用一定的规则在log文件中不断写入新的内核状态信息,例如每加载一个小补丁包就进行一次更新。考虑到log文件的容量问题,每次写入新的内核状态信息时,可以将此时文件中最早保存的信息删除,避免过度冗余。

一旦系统崩溃后重新启动,只需获取系统重启前最后存储的内核状态信息,通过分析就可以明确系统崩溃时运行状态及系统发生崩溃的原因。

另一方面,由补丁加载异常而引发系统崩溃前或由人为重启系统前,正在打补丁的引擎模块会保存补丁包的加载状态信息,加载状态信息包括但不限于:加载成功、未加载、加载失败,加载中、加载成功次数、加载成功的补丁的地址信息、加载失败的补丁的原因等,并将这些信息存放进存储空间。

一旦系统崩溃后重新启动,只需获取系统重启前最后存储的各个补丁包的加载状态信息,即可以明确系统崩溃时补丁包的加载状态和加载信息,通过分析可以找到其中导致系统崩溃的补丁包。

上述存储空间是指持久化存储介质,包括:机身储存、sd卡、tf卡、cf卡、磁盘、固态硬盘、san(storageareanetwork,存储区域网络),等等技术领域内所公知的任意其它形式的持久化存储介质,因此内核状态信息和补丁包加载状态信息不会随着系统崩溃而消失,便于重启后读取,从而进行后续的分析、推断工作。

需要说明的是,除了内核状态信息和补丁包加载状态信息,补丁包文件也存放在该存储空间中。

系统崩溃后重新启动,可以在存储空间中获取内核状态信息及补丁包加载状态信息,以便执行步骤s102。

步骤s102:在内核状态信息中获取目标寄存器存储的地址信息,并生成地址列表。

其中,目标寄存器包括以下至少一项:

程序计数器(programcounter,pc)、链接寄存器(linkregister,lr)、堆栈(stack)。

程序计数器在cpu中起到的作用是,确定下一条指令的地址。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入程序计数器,因此程序计数器的内容即是从存储空间提取的指令的地址。当执行指令时,cpu将自动修改程序计数器的内容,即每执行一条指令程序计数器会增加一个量,这个量等于指令所含的字节数,使其总是保持将要执行的下条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对程序计数器加1,当程序转移时,转移指令执行的最终结果就是要改变程序计数器的内容,也就是将要执行的下条指令的地址,以此实现转移。

链接寄存器在cpu中起到的作用是,当调用一个函数时,自动保存其返回地址,在函数返回时有效。这使得快速进入和返回不调用其它函数的函数成为可能。如果函数是分支的一部分(即函数中又调用另一个函数),则链接寄存器必须入栈。

而表示栈和堆两种数据结构的堆栈在cpu中起到的作用是暂时存放数据和地址,通常用来保护断点和现场。

因此,本发明实施例中,采用保证程序能够连续地执行下去的目标寄存器来分析操作系统的运行情况,从而推断可能出现问题的进程。

具体地,从目标寄存器中获取地址信息,并生成地址列表包括以下步骤:

获取程序寄存器存储的下条指令的访问地址。

以及,获取链接寄存器存储的调用函数的返回地址。

以及,获取堆栈存储的多个函数的返回地址。

根据下条指令的访问地址、调用函数的返回地址以及多个函数的返回地址中的至少一种生成地址列表。

步骤s103:针对地址列表中的任一地址,在补丁包加载状态信息中对比已加载的任一补丁包的起始地址和结束地址,若任一地址位于起始地址和结束地址的范围之内,则标记任一补丁包的状态为加载失败。

也就是说,查找地址列表中的是否有地址位于补丁包中,那么可能正在运行该补丁包的过程中导致了系统崩溃,标记该补丁包的状态为加载失败,并更新存储至存储空间。

作为示例地,若地址列表中的某一地址为:0x00000004,而运行某第一补丁包所指向的地址为0x00000040~0x00000080,因为0x00000004不在0x00000040~0x00000080范围内,可以跳过该第一补丁包,继续寻找下个补丁包。若某第二补丁包的地址范围为0x00000000~0x00000040,因为0x00000004在0x00000000~0x00000040范围内,则标记该补丁包的状态为加载失败。

步骤s104:当地址列表中的地址依次对比后,标记为加载失败的补丁包个数为零,则确定补丁包加载状态信息对应的加载中的补丁包,标记加载中的补丁包的状态为加载失败。

若不是由系统重启前加载完成的补丁在运行过程中导致了系统崩溃,可能就是正在加载中的补丁包引起的,因此标记加载中的补丁包的状态为加载失败,并更新存储至存储空间。

标记加载失败的补丁包,在后续的打补丁过程中会忽略加载,避免再次导致系统崩溃,影响安全有效的补丁包的加载,提高了打补丁的成功率。

此后,一个大补丁包作为一个完整的补丁文件在运行内存中加载完成后,将全部加载数据进行写盘存储,确保补丁文件的完整性。

进一步地,系统重启次数大于预定次数阈值,则取消加载所述补丁包。当系统过多次异常重启时,在不能辨别是由哪个补丁包引起异常的情况下,可以考虑取消这次打补丁操作。

其中,本领域技术人员可根据实际需要设置该预定次数阈值,在此不做限制。

本发明实施例提供的补丁包识别方法,在系统重启后,获取内核状态信息及补丁包加载状态信息;在所述内核状态信息中获取目标寄存器存储的地址信息,并生成地址列表;针对地址列表中的任一地址,在补丁包加载状态信息中对比已加载的任一补丁包的起始地址和结束地址,若所述任一地址位于所述起始地址和所述结束地址的范围之内,则标记所述任一补丁包的状态为加载失败,本发明通过有据可循的内核状态信息来推断已经加载的补丁中可能导致系统崩溃的补丁并及时标记,以便重新打补丁时可以根据补丁包的状态信息迅速排除,避免该补丁包可能再一次引起系统崩溃的情况,为顺利加载其他安全有效的补丁提供了保障。

本发明实施例还提供了一种补丁包识别装置,包括:

获取模块201用于系统重启后,获取内核状态信息及补丁包加载状态信息;

生成模块202,用于在内核状态信息中获取目标寄存器存储的地址信息,并生成地址列表;

标记模块203,用于针对地址列表中的任一地址,在补丁包加载状态信息中对比已加载的任一补丁包的起始地址和结束地址,若任一地址位于起始地址和结束地址的范围之内,则标记任一补丁包的状态为加载失败。

具体地,目标寄存器包括以下至少一项:

程序计数器;链接寄存器;堆栈。

进一步地,内核状态信息为系统重启前最后存储的内核状态信息。

更进一步地,生成模块202具体用于获取程序寄存器存储的下条指令的访问地址;

以及,获取链接寄存器存储的调用函数的返回地址;

以及,获取堆栈存储的多个函数的返回地址;

以及,根据下条指令的访问地址、调用函数的返回地址以及多个函数的返回地址中的至少一种生成地址列表。

进一步地,补丁包加载状态信息为系统重启前最后存储的各个补丁包的加载状态信息。

实际应用中,内核状态信息及补丁包加载状态信息存储在存储空间中,存储空间为持久化存储区域。

进一步地,标记模块203还用于当地址列表中的地址依次对比后,标记为加载失败的补丁包个数为零,则确定补丁包加载状态信息对应的加载中的补丁包,标记加载中的补丁包的状态为加载失败。

进一步地,本发明实施例提供的补丁包识别装置还包括:

取消模块204,用于当系统重启次数大于预定次数阈值时,取消加载所述补丁包。

本发明还提供一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述任一实施例所述的补丁包识别方法。

本发明还提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述的补丁包识别方法。

本发明实施例所提供的补丁包识别装置可以为设备上的特定硬件或者加载于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容,在此不再赘述。

上述的补丁包识别方法、装置和终端,在系统重启后,获取内核状态信息及补丁包加载状态信息;在内核状态信息中获取目标寄存器存储的地址信息,并生成地址列表;针对地址列表中的任一地址,在补丁包加载状态信息中对比已加载的任一补丁包的起始地址和结束地址,若任一地址位于起始地址和结束地址的范围之内,则标记任一补丁包的状态为加载失败,本发明通过有据可循的内核状态信息来推断已经加载的补丁中可能导致系统崩溃的补丁并及时标记,以便重新打补丁时可以根据补丁包的状态信息迅速排除,避免该补丁包可能再一次引起系统崩溃的情况,为顺利加载其他安全有效的补丁提供了保障。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1