一种热补丁处理方法、装置及存储介质与流程

文档序号:31709810发布日期:2022-10-04 17:26阅读:78来源:国知局
一种热补丁处理方法、装置及存储介质与流程

1.本发明涉及软件技术领域,尤其涉及一种热补丁处理方法、装置及存储介质。


背景技术:

2.热补丁技术是无需重启正在运行的程序而修改程序代码或程序代码的业务逻辑的一种技术。在以往没有热补丁技术的时代,想要更新软件,须先关闭程序,然后启动修改后的新程序。这种重启的方案,会造成服务长时间中断;而且重启程序会丢失内存中暂存的状态信息,程序重启之后没有保存的信息无法再恢复了。使用热补丁技术则无需重启程序,可以保留暂存的信息,同时减少服务中断的时间。
3.现有技术通过用一条无条件跳转指令覆盖内存中的被补丁函数代码的头部,直接跳过被补丁函数后续逻辑的执行,转而执行补丁函数。而直接覆盖代码是一个很危险的操作,如果被覆盖的代码正在被执行,则可能造成程序逻辑错误,甚至被补丁程序崩溃。
4.进程热补丁通常需要同时修复多个函数,这些函数相互关联。如果部分函数正在执行时应用热补丁,在应用补丁后可能出现修复前版本函数和修复后版本函数同时处于运行状态的情况,造成程序逻辑错误,甚至被补丁程序崩溃。
5.针对上述两种不安全的情况,部分现有方案采取了安全性检查操作。但是现有进程热补丁技术在安全性检查方面通常使用两种策略。一种不执行安全性检查步骤。这种方案不暂停程序的执行,不检查程序的函数栈,直接替换函数,虽然操作耗时很短、效率很高,但是极其危险,很容易造成程序逻辑错误,甚至被补丁程序崩溃。另一种使用未经优化的安全性检查。这种方案种安全性检查耗时很长、效率低下,造成程序长时间处于暂停状态,长时间不响应,典型的应用案例中服务中断时间长达半小时。


技术实现要素:

6.有鉴于此,本发明实施例提供一种热补丁处理方法、装置及存储介质。
7.本发明实施例技术方案是这样实现的:
8.本发明实施例提供一种热补丁处理方法,包括:
9.确定执行补丁操作的补丁线程的参数信息,其中,所述参数信息至少包括:所述补丁线程的线程数和/或,指示所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长的信息;
10.确定所述参数信息是否满足补丁执行条件;
11.根据所述参数信息是否满足补丁执行条件,确定是否执行热补丁的操作。
12.上述方案中,所述根据所述参数信息是否满足补丁执行条件,确定是否执行热补丁的操作,包括:
13.在所述参数信息满足补丁执行条件时,执行热补丁的操作;
14.或,
15.在所述参数信息不满足补丁执行条件时,跳过热补丁的操作。
16.上述方案中,所述参数信息满足补丁执行条件,包括:
17.所述补丁线程的线程数不超过第一预设阈值,
18.和/或,
19.所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长不超过第二预设阈值。
20.上述方案中,所述方法还包括:
21.暂停所述补丁线程;
22.对所述暂停后的所述补丁线程,进行安全性检查;
23.所述执行热补丁的操作,包括:
24.在通过所述安全性检查之后,执行所述热补丁的操作。
25.上述方案中,所述方法还包括:
26.确定所述补丁线程是否需要进行所述安全性检查;
27.所述对所述暂停后的所述补丁线程,进行安全性检查,包括:
28.在确定所述补丁线程需要进行所述安全性检查时,执行所述安全性检查的操作,并为所述补丁线程配置缓存空间;
29.其中,所述缓存空间,提供所述补丁线程进行安全性检查所需的存储容量。
30.上述方案中,所述确定所述补丁线程是否需要进行所述安全性检查,包括:
31.在确定所述补丁线程不需要进行所述安全性检查时,跳过所述安全性检查的操作。
32.上述方案中,所述对所述暂停后的所述补丁线程,进行安全性检查,包括:
33.确定所述安全性检查的检查结果;
34.根据所述检查结果,在确定所述补丁线程的安全性检查通过时,执行所述热补丁的操作。
35.上述方案中,所述确定所述安全性检查的检查结果,还包括:
36.根据所述检查结果,确定所述补丁线程的安全性检查不通过时,跳过屏蔽热补丁的操作。
37.本发明实施例还提供了一种热补丁处理装置,所述装置包括:确定模块、判断模块和执行模块;其中,
38.确定模块,用于确定执行补丁操作的补丁线程的参数信息,其中,所述参数信息至少包括:所述补丁线程的线程数和/或,指示所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长的信息;
39.判断模块,用于确定所述参数信息是否满足补丁执行条件;
40.执行模块,用于根据所述参数信息是否满足补丁执行条件,确定是否执行热补丁的操作。
41.本发明实施例还提供了一种热补丁处理装置,所述装置包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;
42.其中,所述处理器用于运行所述计算机程序时,执行上述任一项实施例提供的步骤。
43.本发明实施例还提供了一种计算机存储介质,其特征在于,所述计算机存储介质
存储有计算机可执行指令;所述计算机可执行指令被处理器执行后,能够实现上述任一项实施例提供的方法。
44.本发明实施例中,通过对执行补丁操作的补丁线程中的线程数进行限定,达到了在进行热补丁操作之前,对执行热补丁操作的服务中断时长进行保障的效果;此外,所述补丁线程在补丁操作过程中,通过对执行安全性检测时中断被补丁程序的中断时长的进行限定,对补丁线程进行安全性检查的时长进行限定,解决了现有技术中安全性检查耗时很长、效率低下,使得程序长时间处于暂停、不响应状态的问题;通过对补丁线程的线程数和补丁程序的中断时长进行限制,避免了在执行热补丁操作时服务的长时间中断。
附图说明
45.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
46.图1是本发明提供的热补丁处理方法的流程示意图;
47.图2为本发明中提供的一种补丁线程的安全性检查方法的流程示意图;
48.图3为本发明提供的一种热补丁处理装置的结构示意图;
49.图4为本发明提供的另一种热补丁处理装置的结构示意图;
50.图5为本发明提供的另一种热补丁处理方法的流程示意图。
具体实施方式
51.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
52.在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
53.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
54.本发明实施例提供一种热补丁处理方法。图1为本发明提供的热补丁处理方法的流程示意图;如图1所示,所述方法包括:
55.步骤s101:确定执行补丁操作的补丁线程的参数信息,其中,所述参数信息至少包括:所述补丁线程的线程数和/或,指示所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长的信息;
56.步骤s102:确定所述参数信息是否满足补丁执行条件;
57.步骤s103:根据所述参数信息是否满足补丁执行条件,确定是否执行热补丁的操作。
58.热补丁技术分为内核热补丁和进程热补丁。内核热补丁特指修改linux kernel等操作系统内核的热补丁技术,而进程热补丁是修改用户程序的热补丁技术。进程热补丁的工作原理是用补丁函数替换程序中有错误的函数。
59.本实施例中,在步骤s102中,参数信息满足补丁执行条件,则说明被补丁程序当前可以执行热补丁操作;或者被补丁程序执行热补丁操作时,不会因为补丁线程数的过多或者在安全性检查过程中,中断被补丁程序的中断时长过长,而导致出现程序长时间处于暂停或不响应状态。通过对补丁线程进行安全性检测,也避免了被补丁程序执行热补丁操作时出线业务逻辑错误、补丁失败的问题。
60.在所述步骤s101中,在一实施例中,确定执行补丁操作的补丁线程的参数信息可以为确定需要被补丁文件进行补丁的补丁进程中补丁线程的参数信息;这里,参数信息包括所述补丁进程中补丁线程的线程数和/或,指示所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长的信息;其中,所述中断时长的信息可以为所述补丁线程被中断进行安全性检测时的被中断时长。
61.在所述步骤s103中,执行热补丁的操作包括:执行热补丁的加载操作或者执行热补丁的卸载操作。
62.通过在确定执行补丁操作的补丁线程中的线程数满足预设条件时,才执行热补丁操作,避免了因为补丁线程中的线程数过多,而导致对执行热补丁操作的过程中,程序长时间处于暂停、不响应状态;服务中断时间长的现象;通过对执行安全性检测时,中断被补丁程序的中断时长进行时长限制,实现了对补丁线程进行安全性检查的时长进行限定,解决了现有技术中在安全性检查的过程中耗时长、效率低下,且使得程序长时间处于暂停或不响应状态的问题;通过对补丁线程的线程数和补丁程序的中断时长这两个补丁执行条件进行限制,避免了在执行热补丁操作时服务的长时间中断。
63.进一步地,在所述步骤s101之前,将补丁文件加载到执行补丁操作的补丁线程的内存空间。其中,补丁文件包括:待补丁的函数编译得到的二进制代码。
64.进一步地,所述步骤s103中还包括:在所述参数信息满足补丁执行条件时,执行热补丁的操作;和/或,在所述参数信息不满足补丁执行条件时,跳过热补丁的操作。
65.具体来说,在确定所述参数信息满足补丁执行条件时,执行对热补丁的加载或者卸载操作;和/或,在所述参数信息不满足补丁执行条件时,补丁线程跳过热补丁的操作。在一些实施例中,在确定所述补丁线程的线程数不满足补丁执行条件时,跳过热补丁的操作;等待用户指令,在所述补丁线程的线程数满足补丁执行条件时,再次执行热补丁操作。和/或,在确定所述补丁线程进行安全性检测的过程中,所述中断被补丁程序的中断时长不满足补丁执行条件时,停止此时的安全性检查操作,取消热补丁的任何动作,恢复所述补丁线程的运行,此次热补丁加载或卸载操作失败;等待用户的下一次热补丁操作的启动,直到所述补丁线程满足补丁执行条件时,执行热补丁的操作,完成补丁所述补丁线程的操作。
66.进一步地,所述参数信息满足补丁执行条件,包括:所述补丁线程的线程数不超过第一预设阈值,和/或,所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长不超过第二预设阈值。具体地,所述第一预设阈值可以为所述补丁进程中补丁线程的最大允许线程数量;在一些实施例中,所述第一预设阈值可以由用户自行配置。
67.在另一些实施例中,所述第一预设阈值可以为所述补丁线程预先配置的默认值或
经验值。
68.这里所述第一预设阈值可以根据计算机的单核心可运行线程数和物理核心数决定,所述第一预设阈值可以为小于所述计算机的单核心可运行线程数和物理核心数乘积的任意数值。
69.所述第二预设阈值可以为所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的最大允许中断时长;在一些实施例中,所述第二预设阈值可以由用户自行配置;在另一些实施例中,所述第二预设阈值可以为所述补丁线程预先配置的默认值。
70.具体来说,在所述补丁线程的线程数不超过所述补丁线程的最大允许的线程数量,和/或,所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长不超过最大允许中断时长时,则确定为所述补丁线程的参数信息满足补丁执行条件,可以执行对热补丁的加载或者卸载操作。
71.其中,所述中断时长可以为:执行当前安全性检测的实时时间与执行当前安全性检测的起始时间的差值。
72.需要说明的是,本实施例中,通过对执行补丁操作的补丁线程中的线程数进行限定,达到了在进行热补丁操作之前,对执行热补丁操作的服务中断时长进行保障的效果;此外,所述补丁线程在补丁操作过程中,通过对执行安全性检测时中断被补丁程序的中断时长的信息设置第二阈值,对补丁线程进行安全性检查的时长进行限定,解决了现有技术中安全性检查耗时很长、效率低下,使得程序长时间处于暂停、不响应状态的问题;通过对补丁线程的线程数和补丁程序的中断时长进行限制,避免了在执行热补丁操作时服务的长时间中断。
73.进一步地,所述步骤s103中还包括:暂停所述补丁线程;对所述暂停后的所述补丁线程,进行安全性检查;所述执行热补丁的操作,包括:在通过所述安全性检查之后,执行所述热补丁的操作。
74.具体地,所述暂停所述补丁线程可以通过用户输入对应系统的暂停线程命令暂停所述补丁线程;在linux系统中可以通过ptrace attach命令行暂停所述补丁运行;在windows系统可以通过suspendthread暂停所述补丁线程的运行;所述补丁线程所在的系统可以为任意一个系统,这里不做限定;所述暂停所述补丁线程的方法可以为任意一种方式,这里也不做限定。
75.具体来说,在暂停所述补丁线程后,对所述补丁线程进行安全性检查,在所述补丁线程全部通过安全性检查时,执行所述热补丁的加载或卸载的操作。
76.进一步地,所述安全性检查用于检查所述被补丁线程中的所有函数是否存在有包含在栈中的函数;所述栈用于存储正在运行的函数。即确定所述栈中的正在运行的函数是否包含所述被补丁线程中的函数。
77.具体地,根据所述被补丁函数代码中的内存地址范围,确定所述执行补丁操作的补丁线程在栈顶针所对应的函数的栈顶帧地址,是否存在于所述被补丁函数代码中的内存地址范围。
78.如果存在,这说明所述栈顶帧所对应的函数为需要被补丁的函数,但是由于所述函数在栈中,即正在运行中;因此,该补丁线程中包含正在运行的待补丁函数,此时,如果进行热补丁操作,将会使得被补丁线程出线业务逻辑错误、线程奔溃或者补丁失败的问题。进
而,在这种情况下,所述安全性检查将被认为不通过。
79.如果不存在,则说明所述栈顶帧所对应的函数无需被补丁。
80.进一步地,依次确定所述补丁线程在栈中的其他函数是否存在于所述被补丁函数代码中的内存地址范围。在所述栈中的所有补丁线程的函数均不在需要被补丁函数代码中的内存地址范围内时,确定为所述栈中不存在所述被补丁线程中的函数,所述安全性检查通过。
81.进一步地,所述对所述暂停后的所述补丁线程,进行安全性检查之前,还包括:确定所述补丁线程是否需要进行所述安全性检查;所述对所述暂停后的所述补丁线程,进行安全性检查,包括:在确定所述补丁线程需要进行所述安全性检查时,执行所述安全性检查的操作,并为所述补丁线程配置缓存空间;其中,所述缓存空间,提供所述补丁线程中进行安全性检查所需的存储容量。
82.具体地,所述安全性检查可以通过由用户对所述补丁下线程进行允许安全性检查的列表或禁止安全性检查的列表的设置,其中,允许列表和禁止列表由用户二者选一进行设置,不能同时生效;所述允许列表和禁止列表支持模糊匹配或者表达式匹配。
83.其中,所述允许列表包含:需要进行安全性检查的被补丁进程中的补丁线程的名称。
84.所述禁止列表包含:不需要进行安全性检查的被补丁进程中的补丁线程的名称。
85.所述确定所述补丁线程需要进行所述安全性检查可以为:确定所述补丁线程的进程标识(pid,process id)或名称与所述允许列表匹配,还可以为所述补丁线程的pid或名称与所述禁止列表不匹配。
86.具体来说,在一实施例中,由用户选择设置允许所述补丁线程进行安全检查的允许列表。在完成允许列表的设定后,所述补丁线程根据所述允许列表,在所述允许列表中查询所述补丁线程的pid和/或名称。确定在所述允许列表中查询到所述补丁线程pid或名称时,则称所述补丁线程与所述允许列表匹配,此时,确定所述补丁线程需要进行所述安全性检查,执行所述安全性检查的操作,并为所述补丁线程配置缓存空间。
87.在另一实施例中,用户选择设置禁止所述补丁线程进行安全检查的禁止列表。在完成禁止列表的设定后,所述补丁线程根据所述禁止列表,在所述禁止列表中查询所述补丁线程的pid和/或名称。确定在所述禁止列表中没有查询到所述补丁线程pid和/或名称时,则称所述补丁线程与所述禁止列表不匹配,此时,确定所述补丁线程需要进行所述安全性检查,执行所述安全性检查的操作,为所述补丁线程配置缓存空间。
88.具体地,所述缓存空间用于在所述补丁线程中安全性检查时,缓存进行安全性检查的所述补丁线程在内存中的函数顶帧地址之间的地址偏移量。
89.需要说明的是,根据所述缓存空间,通过在安全性检查过程中引入缓存机制,将进行安全性检查的所述补丁线程在内存中的函数顶帧地址之间的地址偏移量,缓存入所述缓存空间;进而在对所述补丁线程进行安全性检查的过程中,可以通过查询缓存空间中的地址偏移量,跳过耗时的地址偏移量计算,加速检查,大幅提高了安全性检查步骤的效率,缩短了中断时间,从而实现了安全、快速的操作进程热补丁。
90.进一步地,在确定所述补丁线程不需要进行所述安全性检查时,跳过所述安全性检查的操作。
91.具体来说,在一实施例中,由用户选择设置允许所述补丁线程进行安全检查的允许列表。在完成允许列表的设定后,所述补丁线程根据所述允许列表,在所述允许列表中查询所述补丁线程的pid和/或名称。确定在所述允许列表中没有查询到所述补丁线程pid和/或名称时,则称所述补丁线程与所述允许列表不匹配,此时,确定所述补丁线程不需要进行所述安全性检查,跳过对所述补丁线程进行安全性检查的操作。
92.在另一实施例中,用户选择设置禁止所述补丁线程进行安全检查的禁止列表。在完成禁止列表的设定后,所述补丁线程根据所述禁止列表,在所述禁止列表中查询所述补丁线程的pid和/或名称。确定在所述禁止列表中查询到所述补丁线程pid和/或名称时,则称所述补丁线程与所述禁止列表匹配,此时,确定所述补丁线程不需要进行所述安全性检查,跳过对所述补丁线程进行安全性检查的操作。
93.需要说明的是,设置允许列表或禁止列表,将所述补丁线程pid或名称等特征和允许列表或禁止列表进行匹配,过滤出需要进行安全检查的线程,在满足进行安全性检查的条件时才执行安全性检查操作,减少了耗时的安全性检查步骤执行次数,从而减少检查的工作量,提高了效率。
94.进一步地,在对所述暂停后的所述补丁线程,进行安全性检查之后,包括:确定所述安全性检查的检查结果;根据所述检查结果,在确定所述补丁线程的安全性检查通过时,执行所述热补丁的操作。
95.进一步地,根据所述检查结果,确定所述补丁线程的安全性检查不通过时,跳过热补丁的操作。
96.本发明实施例提供一种补丁线程的安全性检查方法。图2为本发明提供的补丁线程的安全性检查方法的流程示意图;如图2所示,所述方法包括:
97.步骤s201:获取所述补丁线程中正在执行的函数的栈顶帧在rip寄存器中的rip地址,其中,rip地址指示所述补丁线程当前运行函数的栈顶帧的内存地址。
98.具体地,eip寄存器在64位模式下扩展为rip 64位指令寄存器;指令寄存器标志当前进程将要执行的指令的位置。在本实施例中,所述获取所述补丁线程中正在执行的函数的栈顶帧在rip寄存器中的当前帧地址,为确定所述补丁线程中正在执行的函数的栈顶帧的内存地址;所述栈顶帧的内存地址为该函数开始指令的机器码地址。
99.具体来说,获取所述补丁线程中当前正在运行的函数在rip寄存器中的函数开始指令的内存地址;这里,所述函数开始指令的内存地址被称之为当前帧地址。
100.步骤s202:判断所述当前帧地址是否属于补丁文件的内存地址范围。
101.步骤s203:如果所述当前帧地址在所述补丁文件的内存地址范围内,则所述当前帧所对应的函数为被补丁函数,即所述补丁线程在栈中;此时安全性检查不通过,结束所述安全性检查。
102.具体地,如果当前帧地址在所述补丁文件的内存地址的范围内,则当前帧所对应的函数需要被补丁函数所替换,但由于当前帧在栈中,则当前帧所对应的函数正在运行;此时,如果执行热补丁操作,将会导致程序逻辑错误,甚至被补丁线程程序奔溃;因此,步骤s203判定为安全性检查不通过。
103.步骤s204:如果所述当前帧地址不在所述补丁文件的内存地址范围内,则所述当前帧的安全性检查通过,执行步骤s205。
attach命令行,暂停所有补丁线程。
122.步骤4:逐个判断所有补丁线程是否需要做安全性检查,对于需要进行安全性检查的补丁线程,执行后续安全性检查步骤;不需进行安全性检查的补丁线程,则跳过检查步骤。
123.步骤4.1:由用户输入并设置允许列表和禁止列表,作为是否需要做安全性检查的判断依据。其中,允许列表和禁止列表只能二者选一,不能同时生效允许列表和禁止列表可以支持模糊匹配或者表达式匹配。
124.步骤4.2:在linux系统中,通过进程目录下进程对应文件夹中task目录下的线程文件夹中的comm文件,获取补丁线程的名称。
125.步骤4.3:如果补丁线程进程标识(pid)或名称和允许列表相匹配,则继续后续的安全性检查操作;否则跳过对所述补丁线程的安全性检查。
126.步骤4.4:如果补丁线程进程标识(pid)或名称和禁止列表相匹配,则跳过后续的安全性检查操作;否则执行对所述补丁线程的安全性检查。
127.步骤5:对于需要进行安全性检查的补丁线程,在检查线程安全性过程中引入缓存操作进行加速。
128.步骤5.1:对于进行安全性检查的补丁线程,先获取线程中正在执行的rip寄存器中的值,该值指向补丁线程栈顶帧所运行的函数。在linux系统中,通过ptrace函数获取寄存器值。
129.步骤5.2:判断rip地址是否属于被补丁函数代码的内存地址范围。如果在被补丁函数代码的内存地址范围内,则当前帧所执行的函数为需要被补丁的函数,意味着被补丁函数在栈中,安全性检查不通过。
130.步骤5.3:当前帧安全性检查通过,则以rip值为线索在缓存空间中查询下一帧和当前帧之间的地址偏移量。如果缓存空间中有结果,则跳过耗时的偏移量计算过程,执行步骤5.7;否则,执行步骤5.4。
131.步骤5.4:在linux系统中,按照dwarf标准进行计算下一帧和当前帧之间的地址偏移量。:
132.步骤5.5:将计算的地址偏移量结果加入缓存空间中。
133.步骤5.6:根据当前帧的地址、下一帧的地址偏移量计算下一帧地址。
134.步骤5.7:判断下一帧是否到达栈底。如果到达栈底,则表示补丁线程中的所有帧都通过了安全性检查,该补丁线程对于热补丁操作是安全的。
135.步骤5.8:如果未到栈底,则不进到下一帧,并获取此帧的rip寄存器值,然后继续步骤5.2的操作。
136.步骤6:在进行安全性检查时,计算进程已暂停时间,判断是否超时,超时则恢复所有线程运行。
137.步骤6.1:设置所述补丁线程被中断进行安全性检测时的所允许的最大允许中断时长。其中,最大允许中断时长可以由用户配置,或使用预先配置的默认值。
138.步骤6.2:记录补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的起始时间。
139.步骤6.3:在安全性检查结束后获取中断被补丁程序的中断时间,计算被补丁进程
已经暂停的时间,如果暂停时间大于最大允许中断时长,则恢复所有线程运行,避免服务长时间中断,此时本次热补丁操作失败。
140.步骤7:处理完所有补丁线程,且所有补丁线程的安全性检查都没有问题,则对原函数执行热补丁操作,完成热补丁文件的加载或者卸载。
141.步骤8:在linux系统中,通过ptrace detach调用恢复线程运行。恢复所有补丁线程的运行,热补丁操作流程结束。
142.如图3所示,为本发明实施例提供的热补丁处理装置的结构示意图,该热补丁处理装置包括:确定模块301、判断模块302和执行模块303。其中,
143.所述确定模块301,用于确定执行补丁操作的补丁线程的参数信息,其中,所述参数信息至少包括:所述补丁线程的线程数和/或,指示所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长的信息;
144.所述判断模块302,用于确定所述参数信息是否满足补丁执行条件;
145.所述执行模块303,用于根据所述参数信息是否满足补丁执行条件,确定是否执行热补丁的操作。
146.为实现本发明实施例的方法,本发明实施例提供的一种热补丁处理装置,具体来说,如图4所示,所述装置40包括处理器401和用于存储能够在处理器上运行的计算机程序的存储器402;
147.其中,所述处理器401用于运行所述计算机程序时,执行:确定执行补丁操作的补丁线程的参数信息,其中,所述参数信息至少包括:所述补丁线程的线程数和/或,指示所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长的信息;确定所述参数信息是否满足补丁执行条件;根据所述参数信息是否满足补丁执行条件,确定是否执行热补丁的操作。
148.在一实施例中,所述处理器401还用于运行所述计算机程序时,执行:在所述参数信息满足补丁执行条件时,执行热补丁的操作;或,在所述参数信息不满足补丁执行条件时,跳过热补丁的操作。
149.在一实施例中,所述处理器401还用于运行所述计算机程序时,执行:确定所述参数信息满足补丁执行条件,包括:所述补丁线程的线程数不超过第一预设阈值,和/或,所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长不超过第二预设阈值。
150.在一实施例中,所述处理器401还用于运行所述计算机程序时,执行:暂停所述补丁线程;对所述暂停后的所述补丁线程,进行安全性检查;所述执行热补丁的操作,包括:在通过所述安全性检查之后,执行所述热补丁的操作。
151.在一实施例中,所述处理器401还用于运行所述计算机程序时,执行:确定所述补丁线程是否需要进行所述安全性检查;所述对所述暂停后的所述补丁线程,进行安全性检查,包括:在确定所述补丁线程需要进行所述安全性检查时,执行所述安全性检查的操作,并为所述补丁线程配置缓存空间;其中,所述缓存空间,提供所述补丁线程进行安全性检查所需的存储容量。
152.在一实施例中,所述处理器401还用于运行所述计算机程序时,执行:所述确定所述补丁线程是否需要进行所述安全性检查,包括:在确定所述补丁线程不需要进行所述安
全性检查时,跳过所述安全性检查的操作。
153.在一实施例中,所述处理器401还用于运行所述计算机程序时,执行:所述对所述暂停后的所述补丁线程,进行安全性检查,包括:确定所述安全性检查的检查结果;根据所述检查结果,在确定所述补丁线程的安全性检查通过时,执行所述热补丁的操作。
154.在一实施例中,所述处理器401还用于运行所述计算机程序时,执行:所述确定所述安全性检查的检查结果,还包括:根据所述检查结果,确定所述补丁线程的安全性检查不通过时,跳过热补丁的操作。
155.需要说明的是:上述实施例提供的热补丁处理装置与热补丁处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
156.当然,实际应用时,如图4所示,该装置40还可以包括:至少一个网络接口403。热补丁处理装置40中的各个组件通过总线系统404耦合在一起。可理解,总线系统404用于实现这些组件之间的连接通信。总线系统404除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统404。其中,所述处理器401的个数可以为至少一个。网络接口403用于热补丁处理装置40与其他设备之间有线或无线方式的通信。
157.本发明实施例中的存储器402用于存储各种类型的数据以支持热补丁处理装置40的操作。
158.上述本发明实施例揭示的方法可以应用于处理器401中,或者由处理器401实现。处理器401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器、数字信号处理器(dsp,digital signal processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器401可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器402,处理器401读取存储器1002中的信息,结合其硬件完成前述方法的步骤。
159.在示例性实施例中,热补丁处理装置40可以被一个或多个应用专用集成电路(asic,application specific integrated circuit)、dsp、可编程逻辑器件(pld,programmable logic device)、复杂可编程逻辑器件(cpld,complex programmable logic device)、现场可编程门阵列(fpga,field-programmable gate array)、通用处理器、控制器、微控制器(mcu,micro controller unit)、微处理器(microprocessor)、或其他电子元件实现,用于执行前述方法。
160.在示例性实施例中,本发明实施例还提供了一种计算机可读存储介质,例如包括计算机程序的存储器402,上述计算机程序可由热补丁处理装置40的处理器401执行,以完成前述方法所述步骤。
161.具体地,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行:确定执行补丁操作的补丁线程的参数信息,其中,所述参数信息至少包括:所述补丁线程的线程数和/或,指示所述补丁线程在补丁操作
过程中执行安全性检测时中断被补丁程序的中断时长的信息;确定所述参数信息是否满足补丁执行条件;根据所述参数信息是否满足补丁执行条件,确定是否执行热补丁的操作。
162.在一实施例中,所述计算机程序被处理器运行时,执行:在所述参数信息满足补丁执行条件时,执行热补丁的操作;或,在所述参数信息不满足补丁执行条件时,跳过热补丁的操作。
163.在一实施例中,所述计算机程序被处理器运行时,执行:确定所述参数信息满足补丁执行条件,包括:所述补丁线程的线程数不超过第一预设阈值,和/或,所述补丁线程在补丁操作过程中执行安全性检测时中断被补丁程序的中断时长不超过第二预设阈值。
164.在一实施例中,所述计算机程序被处理器运行时,执行:暂停所述补丁线程;对所述暂停后的所述补丁线程,进行安全性检查;所述执行热补丁的操作,包括:在通过所述安全性检查之后,执行所述热补丁的操作。
165.在一实施例中,所述计算机程序被处理器运行时,执行:确定所述补丁线程是否需要进行所述安全性检查;所述对所述暂停后的所述补丁线程,进行安全性检查,包括:在确定所述补丁线程需要进行所述安全性检查时,执行所述安全性检查的操作,并为所述补丁线程配置缓存空间;其中,所述缓存空间,提供所述补丁线程进行安全性检查所需的存储容量。
166.在一实施例中,所述计算机程序被处理器运行时,执行:所述确定所述补丁线程是否需要进行所述安全性检查,包括:在确定所述补丁线程不需要进行所述安全性检查时,跳过所述安全性检查的操作。
167.在一实施例中,所述计算机程序被处理器运行时,执行:所述对所述暂停后的所述补丁线程,进行安全性检查,包括:确定所述安全性检查的检查结果;根据所述检查结果,在确定所述补丁线程的安全性检查通过时,执行所述热补丁的操作。
168.在一实施例中,所述计算机程序被处理器运行时,执行:所述确定所述安全性检查的检查结果,还包括:根据所述检查结果,确定所述补丁线程的安全性检查不通过时,跳过热补丁的操作。
169.需要说明的是:本发明实施例提供的计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、flash memory、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
170.以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1