CN111324491A - 程序漏洞修复方法、装置及计算机可读存储介质 - Google Patents
程序漏洞修复方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111324491A CN111324491A CN202010195033.1A CN202010195033A CN111324491A CN 111324491 A CN111324491 A CN 111324491A CN 202010195033 A CN202010195033 A CN 202010195033A CN 111324491 A CN111324491 A CN 111324491A
- Authority
- CN
- China
- Prior art keywords
- function
- patch
- repair
- information
- identification information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 114
- 230000006870 function Effects 0.000 claims abstract description 368
- 230000008439 repair process Effects 0.000 claims abstract description 174
- 230000008569 process Effects 0.000 claims description 41
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 230000036316 preload Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种程序漏洞修复方法,该程序漏洞修复方法包括:获取应用程序中应用函数的函数标识信息及补丁列表信息;检测所述补丁列表信息中是否存储有所述函数标识信息;若所述补丁列表信息中存储有所述函数标识信息,则根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作。本发明还公开了一种程序漏洞修复装置和一种计算机可读存储介质。本发明能够实现减小补丁修复文件内存大小的功能,实现不通过整体替换的方法修复中间件程序漏洞的功能,实现通过动态加载修复中间件程序漏洞的功能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及程序漏洞修复方法、装置及计算机可读存储介质。
背景技术
目前,应用程序漏洞的修复方法都是直接替换应用程序,需要对整个应用程序都进行修改,并全部升级;这种修复方式需要在应用程序修复完成后重新启动才能生效。当需要修复应用程序的缺陷或者为应用程序增加功能,要中断应用程序和操作系统的运行,影响应用程序的正常运行,升级包占用的内存较大,升级包占用较多的网络资源。
发明内容
本发明的主要目的在于提出一种程序漏洞修复方法、装置及计算机可读存储介质,旨在实现不通过整体替换的方法修复应用程序漏洞。
为实现上述目的,本发明提供一种程序漏洞修复方法,所述程序漏洞修复方法包括如下步骤:
获取应用程序中应用函数的函数标识信息及补丁列表信息;
检测所述补丁列表信息中是否存储有所述函数标识信息;
若所述补丁列表信息中存储有所述函数标识信息,则根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作。
可选地,当所述应用函数的函数类型为Java函数类型时,所述根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作的步骤,包括:
将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;
将与所述修复标识信息对应的应用函数确定为修复函数;
根据所述补丁列表信息获取与所述修复标识信息对应的补丁函数;
将所述应用程序中的所述修复函数替换为所述补丁函数。
可选地,当所述应用函数的函数类型为native函数类型时,所述根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作的步骤,还包括:
将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;
将与所述修复标识信息对应的应用函数确定为修复函数;
根据所述补丁列表信息获取与所述修复标识信息对应的补丁地址信息;
当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数。
可选地,所述将与所述修复标识信息对应的应用函数确定为修复函数的步骤之后,包括:
根据所述补丁列表信息获取与所述修复标识信息对应的补丁偏移地址;
根据所述修复标识信息和所述补丁偏移地址,得到函数内存地址;
将所述函数内存地址替换为所述补丁地址信息。
可选地,所述根据修复标识信息和补丁偏移地址,得到函数内存地址的步骤,包括:
根据所述修复标识信息获取与所述修复标识信息对应的函数进程编号;
根据所述函数进程编号获取对应的内存运行地址;
基于所述内存运行地址和所述补丁偏移地址进行计算,得到函数内存地址。
可选地,所述当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数的步骤之前,包括:
通过所述补丁地址信息预加载所述修复函数,得到预加载结果;
检测所述预加载结果是否为正常执行结果;
若所述预加载结果为正常执行结果,则转到当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数的步骤。
可选地,所述检测所述预加载结果是否为正常执行结果的步骤之后,包括:
若所述预加载结果为非正常执行结果,检测所述补丁地址信息是否为正常地址信息;
若所述补丁地址信息为正常地址信息,则生成程序修复失败指令,并将所述程序修复失败指令发送至服务器。
可选地,所述获取应用程序中应用函数的函数标识信息及补丁列表信息的步骤之前,包括:
向服务器发送补丁文件获取指令;
接收所述服务器根据所述补丁文件获取指令返回的补丁修复文件;
根据所述补丁修复文件生成所述补丁列表信息。
此外,为实现上述目的,本发明还提供一种程序漏洞修复装置,所述程序漏洞修复装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序漏洞修复程序,所述程序漏洞修复程序被所述处理器执行时实现如上所述的程序漏洞修复方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有程序漏洞修复程序,所述程序漏洞修复程序被处理器执行时实现如上所述的程序漏洞修复方法的步骤。
本发明提供了一种程序漏洞修复方法、装置及计算机可读存储介质,获取应用程序中应用函数的函数标识信息及补丁列表信息;检测所述补丁列表信息中是否存储有所述函数标识信息;若所述补丁列表信息中存储有所述函数标识信息,则根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作。通过上述方式,本发明能够实现减小补丁修复文件内存大小的功能,实现不通过整体替换的方法修复应用程序漏洞的功能,实现通过动态加载修复应用程序漏洞的功能,实现在不重启的情况下,修复中间件程序的功能。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图;
图2为本发明程序漏洞修复方法第一实施例的流程示意图;
图3为本发明程序漏洞修复方法第二实施例的流程示意图;
图4为本发明程序漏洞修复方法第三实施例的流程示意图;
图5为本发明程序漏洞修复方法第四实施例的流程示意图;
图6为本发明程序漏洞修复方法第五实施例的流程示意图;
图7为本发明程序漏洞修复方法第六实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:获取应用程序中应用函数的函数标识信息及补丁列表信息;检测所述补丁列表信息中是否存储有所述函数标识信息;若所述补丁列表信息中存储有所述函数标识信息,则根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作。
现有的应用程序漏洞的修复方法都是直接替换应用程序,需要对整个应用程序都进行修改,并全部升级;这种修复方式需要在应用程序修复完成后重新启动才能生效。当需要修复应用程序的缺陷或者为应用程序增加功能,要中断应用程序和操作系统的运行,影响应用程序的正常运行,升级包占用的内存较大,升级包占用较多的网络资源。
本发明旨在实现不通过整体替换的方法修复应用程序漏洞。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端可以是PC,也可以是智能手机、平板电脑等具有显示功能的可移动式终端设备。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
优选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及程序漏洞修复程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的程序漏洞修复程序,并执行以下操作:
获取应用程序中应用函数的函数标识信息及补丁列表信息;
检测所述补丁列表信息中是否存储有所述函数标识信息;
若所述补丁列表信息中存储有所述函数标识信息,则根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作。
进一步地,处理器1001可以调用存储器1005中存储的程序漏洞修复程序,还执行以下操作:
将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;
将与所述修复标识信息对应的应用函数确定为修复函数;
根据所述补丁列表信息获取与所述修复标识信息对应的补丁函数;
将所述应用程序中的所述修复函数替换为所述补丁函数。
进一步地,处理器1001可以调用存储器1005中存储的程序漏洞修复程序,还执行以下操作:
将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;
将与所述修复标识信息对应的应用函数确定为修复函数;
根据所述补丁列表信息获取与所述修复标识信息对应的补丁地址信息;
当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数。
进一步地,处理器1001可以调用存储器1005中存储的程序漏洞修复程序,还执行以下操作:
根据所述补丁列表信息获取与所述修复标识信息对应的补丁偏移地址;
根据所述修复标识信息和所述补丁偏移地址,得到函数内存地址;
将所述函数内存地址替换为所述补丁地址信息。
进一步地,处理器1001可以调用存储器1005中存储的程序漏洞修复程序,还执行以下操作:
根据所述修复标识信息获取与所述修复标识信息对应的函数进程编号;
根据所述函数进程编号获取对应的内存运行地址;
基于所述内存运行地址和所述补丁偏移地址进行计算,得到函数内存地址。
进一步地,处理器1001可以调用存储器1005中存储的程序漏洞修复程序,还执行以下操作:
通过所述补丁地址信息预加载所述修复函数,得到预加载结果;
检测所述预加载结果是否为正常执行结果;
若所述预加载结果为正常执行结果,则转到当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数的步骤。
进一步地,处理器1001可以调用存储器1005中存储的程序漏洞修复程序,还执行以下操作:
若所述预加载结果为非正常执行结果,检测所述补丁地址信息是否为正常地址信息;
若所述补丁地址信息为正常地址信息,则生成程序修复失败指令,并将所述程序修复失败指令发送至服务器。
进一步地,处理器1001可以调用存储器1005中存储的程序漏洞修复程序,还执行以下操作:
向服务器发送补丁文件获取指令;
接收所述服务器根据所述补丁文件获取指令返回的补丁修复文件;
根据所述补丁修复文件生成所述补丁列表信息。
基于上述硬件结构,提出本发明程序漏洞修复方法实施例。
本发明程序漏洞修复方法。
参照图2,图2为本发明程序漏洞修复方法第一实施例的流程示意图。
本发明实施例中,该程序漏洞修复方法应用于程序漏洞修复装置,所述程序漏洞修复方法包括:
步骤S10,获取应用程序中应用函数的函数标识信息及补丁列表信息;
在本实施例中,在对应用程序进行修复之前,当应用程序运行时,程序漏洞修复装置获取应用程序中所有的应用函数的函数标识信息和函数地址信息,程序漏洞修复装置在程序漏洞修复装置的存储模块上获取补丁列表信息;其中,应用程序可以是运行在移动终端、固定终端、平板电脑上的应用程序;应用程序也可以是运行在电视终端框架层的应用程序;应用程序可以由若干个应用程序类别组成,应用程序类别有若干个应用函数组成;补丁列表信息是存储在程序漏洞修复装置的存储模块上的;其中,函数标识信息是应用函数的标识名称,是用于区别应用函数的;其中,函数地址信息是应用函数在执行时从哪个地址调用函数数据的信息。补丁列表信息是程序漏洞修复装置在检测到程序漏洞修复装置内的补丁文件需要更新时,程序漏洞修复装置向云端服务器发送补丁文件获取指令,程序漏洞修复装置向云端服务器发送补丁文件获取指令,云端服务器根据补丁文件获取指令查找与补丁文件获取指令对应的补丁修复文件;云端服务器将查找到的补丁修复文件发送至程序漏洞修复装置补丁,装置,程序漏洞修复装置接收云端服务器根据补丁文件获取指令返回的补丁修复文件,程序漏洞修复装置在接收到补丁修复文件之后,程序漏洞修复装置根据补丁修复文件生成的。
步骤S20,检测所述补丁列表信息中是否存储有所述函数标识信息;
在本实施例中,程序漏洞修复装置在获取到函数标识信息和补丁列表信息之后,程序漏洞修复装置读取补丁列表信息,程序漏洞修复装置检测补丁列表信息中是否存储有函数标识信息,即程序漏洞修复装置检测补丁列表信息中是否有与函数标识信息相同的补丁名称信息;其中,补丁列表信息由若干个补丁名称信息、若干个补丁进程信息、若干个补丁偏移地址和若干个补丁地址信息构成,每个补丁名称信息、补丁进程信息、补丁偏移地址和补丁地址信息通过表格的形式存储程序漏洞修复装置的存储模块上,补丁名称信息、补丁进程信息、补丁偏移地址和补丁地址信息有相对应的关系。其中,补丁名称信息为补丁函数的名称的信息,补丁进程信息为补丁函数是出于哪个运行进程的信息,补丁偏移地址为执行补丁函数的地址的偏移量,补丁地址信息为执行补丁函数时需要调用程序的地址的信息。其中,补丁进程信息与多个补丁进程信息相对应,补丁模块信息与多个补丁名称信息相对应,一个补丁名称信息对应一个补丁地址信息。
步骤S30,若所述补丁列表信息中存储有所述函数标识信息,则根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作。
在本实施例中,当程序漏洞修复装置检测补丁列表信息中存储有函数标识信息,即当程序漏洞修复装置检测补丁列表信息中有与函数标识信息相同的补丁名称信息;程序漏洞修复装置根据函数标识信息和补丁列表信息对应用函数执行对应的修复操作。
本实施例通过上述方案,获取应用程序中应用函数的函数标识信息及补丁列表信息;检测所述补丁列表信息中是否存储有所述函数标识信息;若所述补丁列表信息中存储有所述函数标识信息,则根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作。由此,实现了减小补丁修复文件内存大小的功能,实现了不通过整体替换的方法修复应用程序漏洞的功能,实现了通过动态加载修复应用程序漏洞的功能,实现了在不重启的情况下,修复中间件程序的功能。
进一步地,参照图3,图3为本发明程序漏洞修复方法第二实施例的流程示意图。基于上述图2所示的实施例,当所述应用函数的函数类型为Java函数类型时,步骤S30根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作,可以包括:
步骤S31,将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;
在本实施例中,当应用函数的函数类型为Java函数类型,程序漏洞修复装置检测补丁列表信息中存储有函数标识信息时;程序漏洞修复装置将补丁列表信息中存储有的函数标识信息确定为修复标识信息。
作为一种实施方式,在本实施例中,当程序漏洞修复装置检测补丁列表信息中有与函数标识信息相同的补丁名称信息时,程序漏洞修复装置查找出补丁列表信息中存储有的补丁标识信息,程序漏洞修复装置查找与补丁名称信息相同的函数标识信息,程序漏洞修复装置查找出的函数标识信息确定为修复标识信息。其中,修复名称信息为在应用函数中需要修复的函数对应的函数标识信息。其中,补丁列表信息由若干个补丁名称信息和若干个补丁函数数据,每个补丁名称信息和补丁函数数据通过表格的形式存储程序漏洞修复装置的存储模块上,补丁名称信息和补丁函数数据有相对应的关系。其中,补丁名称信息为补丁函数的名称的信息,补丁函数数据为补丁函数在执行或运行是运行的代码数据。其中,补丁名称信息与补丁函数数据具有一一对应关系。
步骤S32,将与所述修复标识信息对应的应用函数确定为修复函数;
在本实施例中,程序漏洞修复装置在确定了修复标识信息之后,程序漏洞修复装置将与修复标识信息对应的应用函数确定为修复函数;其中,修复函数为应用函数中需要修复的函数。
步骤S33,根据所述补丁列表信息获取与所述修复标识信息对应的补丁函数;
在本实施例中,程序漏洞修复装置在确定了修复函数之后,程序漏洞修复装置在补丁列表信息查找与修复标识信息对应的补丁函数。
作为一种实施方式,在本实施例中,程序漏洞修复装置在确定了修复函数之后,程序漏洞修复装置在补丁列表信息中查找与修复标识信息相同的补丁名称信息,进而根据补丁名称信息查找与补丁名称信息对应的补丁函数。
步骤S34,将所述应用程序中的所述修复函数替换为所述补丁函数。
在本实施例中,当程序漏洞修复装置获取到补丁函数之后,程序漏洞修复装置将应用程序中修复函数替换为补丁函数;当程序漏洞修复装置检测到修复函数运行时,程序漏洞修复装置执行补丁函数。
在本实施例中,程序漏洞修复装置在获取到修复标识信息对应的补丁函数之后,程序漏洞修复装置将修复函数替换为补丁函数,并进行预加载,程序漏洞修复装置得到预加载结果。程序漏洞修复装置得到预加载结果之后,程序漏洞修复装置检测预加载结果是否为正常执行结果;当中间件程序修复装置检测预加载结果为正常执行结果时,执行步骤S34。其中,预加载为对修复函数在程序漏洞修复装置中试运行。其中,正常执行结果为程序漏洞修复装置通过补丁函数能正常运行,不会出现错误的结果。
本实施例通过上述方案,获取应用程序中应用函数的函数标识信息及补丁列表信息;检测所述补丁列表信息中是否存储有所述函数标识信息;若所述补丁列表信息中存储有所述函数标识信息,则将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;将与所述修复标识信息对应的应用函数确定为修复函数;根据所述补丁列表信息获取与所述修复标识信息对应的补丁函数;将所述应用程序中的所述修复函数替换为所述补丁函数。由此,实现了减小补丁修复文件内存大小的功能,实现了不通过整体替换的方法修复应用程序漏洞的功能,实现了通过动态加载修复应用程序漏洞的功能,实现了在不重启的情况下,修复中间件程序的功能。
进一步地,参照图4,图4为本发明程序漏洞修复方法第三实施例的流程示意图。基于上述图2所示的实施例,当所述应用函数的函数类型为native函数类型时,步骤S30根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作,还可以包括:
步骤S35,将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;
在本实施例中,当程序漏洞修复装置检测补丁列表信息中存储有函数标识信息;程序漏洞修复装置将补丁列表信息中存储有的函数标识信息确定为修复标识信息。
作为一种实施方式,在本实施例中,当程序漏洞修复装置检测补丁列表信息中有与函数标识信息相同的补丁名称信息时,程序漏洞修复装置查找出补丁列表信息中存储有的补丁名称信息,程序漏洞修复装置查找与补丁名称信息相同的函数标识信息,程序漏洞修复装置查找出的函数标识信息确定为修复标识信息(可以是修复进程信息)。其中,修复标识信息为在应用函数中需要修复的函数对应的函数标识信息(可以是函数进程信息);其中,函数标识信息可以是应用函数的函数进程信息(即native service名字),函数进程信息为应用函数是处于哪个运行进程的信息。其中,补丁列表信息由若干个补丁进程信息、若干个补丁偏移地址和若干个补丁地址信息,每个补丁进程信息、补丁偏移地址和补丁地址信息通过表格的形式存储程序漏洞修复装置的存储模块上,补丁进程信息、补丁偏移地址和补丁地址信息有相对应的关系。其中,补丁进程信息为补丁函数是处于哪个运行进程的信息,补丁偏移地址(即native service URL)为补丁函数相对于补丁地址信息的偏移量,补丁地址信息为执行补丁函数时需要调用的地址的信息。其中,补丁进程信息、补丁偏移地址和补丁地址信息具有一一对应关系。
步骤S36,将与所述修复标识信息对应的应用函数确定为修复函数;
在本实施例中,程序漏洞修复装置在确定了修复标识信息之后,程序漏洞修复装置将与修复标识信息对应的应用函数确定为修复函数;其中,修复函数为应用函数中需要修复的函数。
步骤S37,根据所述补丁列表信息获取与所述修复标识信息对应的补丁地址信息;
在本实施例中,程序漏洞修复装置在确定了修复函数之后,程序漏洞修复装置在补丁列表信息查找与修复标识信息对应的补丁地址信息。
作为一种实施方式,在本实施例中,程序漏洞修复装置在确定了修复函数之后,程序漏洞修复装置在补丁列表信息中查找与修复标识信息(可以是函数进程信息)相同的补丁进程信息,进而根据补丁进程信息查找与补丁进程信息对应的补丁地址信息。
步骤S38,当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数。
在本实施例中,当程序漏洞修复装置获取到补丁地址信息之后,程序漏洞修复装置将修复函数需要调用的函数地址信息替换为调用补丁地址信息;当程序漏洞修复装置检测到修复函数运行时,程序漏洞修复装置通过调用补丁地址信息运行修复函数。
本实施例通过上述方案,获取应用程序中应用函数的函数标识信息及补丁列表信息;检测所述补丁列表信息中是否存储有所述函数标识信息;若所述补丁列表信息中存储有所述函数标识信息,则将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;将与所述修复标识信息对应的应用函数确定为修复函数;根据所述补丁列表信息获取与所述修复标识信息对应的补丁地址信息;当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数。由此,实现了减小补丁修复文件内存大小的功能,实现了不通过整体替换的方法修复应用程序漏洞的功能,实现了通过动态加载修复应用程序漏洞的功能,实现了在不重启的情况下,修复中间件程序的功能。
进一步地,参照图5,图5为本发明程序漏洞修复方法第四实施例的流程示意图。基于上述图4所示的实施例,步骤S37将与所述修复标识信息对应的应用函数确定为修复函数,可以包括:
步骤S371,根据所述补丁列表信息获取与所述修复标识信息对应的补丁偏移地址;
在本实施例中,程序漏洞修复装置在确定了修复函数之后,程序漏洞修复装置在补丁列表信息查找与修复标识信息对应的补丁偏移地址。
作为一种实施方式,在本实施例中,程序漏洞修复装置在确定了修复函数之后,程序漏洞修复装置在补丁列表信息中查找与修复标识信息(可以是修复进程信息)相同的补丁进程信息,进而根据补丁进程信息查找与补丁进程信息对应的补丁偏移地址。
步骤S372,根据所述修复标识信息和所述补丁偏移地址,得到函数内存地址;
在本实施例中,程序漏洞修复装置在获取了补丁偏移地址之后,程序漏洞修复装置根据修复标识信息和补丁偏移地址,在系统中通过查询和计算,得到函数内存地址。
步骤S372根据所述修复标识信息和所述补丁偏移地址,得到函数内存地址,可以包括:
步骤a1,根据所述修复标识信息获取与所述修复标识信息对应的函数进程编号;
步骤a2,根据所述函数进程编号获取对应的内存运行地址;
步骤a3,基于所述内存运行地址和所述补丁偏移地址进行计算,得到函数内存地址。
在本实施例中,程序漏洞修复装置根据修复标识信息在程序漏洞修复装置的系统中获取与修复标识信息对应的函数进程编号;程序漏洞修复装置根据函数进程编号在程序漏洞修复装置的进程子系统中获取与修复标识信息对应的内存运行地址,程序漏洞修复装置将与修复标识信息相对应的内存运行地址和补丁偏移地址进行叠加计算,得到函数内存地址。
步骤S373,将所述函数内存地址替换为所述补丁地址信息。
在本实施例中,程序漏洞修复装置在获取到函数内存地址之后,程序漏洞修复装置将函数内存地址替换为补丁地址信息。
本实施例通过上述方案,获取应用程序中应用函数的函数标识信息及补丁列表信息;检测所述补丁列表信息中是否存储有所述函数标识信息;若所述补丁列表信息中存储有所述函数标识信息,则将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;将与所述修复标识信息对应的应用函数确定为修复函数;根据所述补丁列表信息获取与所述修复标识信息对应的补丁偏移地址;根据所述修复标识信息和所述补丁偏移地址,得到函数内存地址;将所述函数内存地址替换为所述补丁地址信息;当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数。由此,实现了减小补丁修复文件内存大小的功能,实现了不通过整体替换的方法修复应用程序漏洞的功能,实现了通过动态加载修复应用程序漏洞的功能,实现了在不重启的情况下,修复中间件程序的功能。
进一步地,参照图6,图6为本发明程序漏洞修复方法第二实施例的流程示意图。基于上述图4所示的实施例,步骤S38当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数之前,可以包括:
步骤S41,通过所述补丁地址信息预加载所述修复函数,得到预加载结果;
在本实施例中,程序漏洞修复装置在获取到修复标识信息(可以是修复进程信息)对应的补丁地址信息之后,程序漏洞修复装置通过补丁地址信息对所述修复函数进行预加载,程序漏洞修复装置得到对修复函数预加载的预加载结果。其中,预加载为对修复函数在程序漏洞修复装置试运行。
步骤S42,检测所述预加载结果是否为正常执行结果;
在本实施例中,程序漏洞修复装置得到对修复函数预加载的预加载结果之后,程序漏洞修复装置检测预加载结果是否为正常执行结果;其中,正常执行结果为程序漏洞修复装置通过补丁地址信息能正常预加载修复函数,不会出现错误的结果。
步骤S42检测所述预加载结果是否为正常执行结果之后,可以包括:
步骤b1,若所述预加载结果为非正常执行结果,检测所述补丁地址信息是否为正常地址信息;
步骤b2,若所述补丁地址信息为正常地址信息,则生成程序修复失败指令,并将所述程序修复失败指令发送至服务器。
在本实施例中,当程序漏洞修复装置检测预加载结果不为正常执行结果时,程序漏洞修复装置检测补丁地址信息是否为正常地址信息;当程序漏洞修复装置检测补丁地址信息为正常地址信息时,应用程序修复失败的原因是补丁地址信息错误,程序漏洞修复装置生成程序修复失败指令,程序漏洞修复装置将程序修复失败指令发送至服务器,服务器接收到程序修复失败指令,管理人员通过服务器接收到应用程序修复失败的消息,管理人员查找应用程序修复失败的原因;其中,正常地址信息为程序漏洞修复装置能够查找到的补丁地址信息中包含的地址信息是一个真实的地址,不是一个空地址信息。
步骤b2若所述预加载结果为非正常执行结果,检测所述补丁地址信息是否为正常地址信息之后,可以包括:
步骤c,若所述补丁地址信息不为正常地址信息,则当所述修复函数运行时,通过与所述函数名称信息对应的函数地址信息运行所述修复函数。
在本实施例中,当程序漏洞修复装置检测到补丁地址信息不为正常地址信息时,程序漏洞修复装置判断出程序预加载失败的原因是补丁函数异常,此时,为了避免应用程序运行异常,当修复函数运行时,程序漏洞修复装置通过与函数标识信息(可以是函数进程信息)对应的函数地址信息运行修复函数;程序漏洞修复装置生成补丁下载异常指令,并将补丁下载异常指令发送至所述服务器。
步骤S43,若所述预加载结果为正常执行结果,则转到当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数的步骤。
在本实施例中,当程序漏洞修复装置检测预加载结果为正常执行结果时,执行步骤S38。
本实施例通过上述方案,获取应用程序中应用函数的函数标识信息及补丁列表信息;检测所述补丁列表信息中是否存储有所述函数标识信息;若所述补丁列表信息中存储有所述函数标识信息,则将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;将与所述修复标识信息对应的应用函数确定为修复函数;根据所述补丁列表信息获取与所述修复标识信息对应的补丁地址信息;通过所述补丁地址信息预加载所述修复函数,得到预加载结果;检测所述预加载结果是否为正常执行结果;若所述预加载结果为正常执行结果,则执行:当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数;当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数。由此,实现了减小补丁修复文件内存大小的功能,实现了不通过整体替换的方法修复应用程序漏洞的功能,实现了通过动态加载修复应用程序漏洞的功能,实现了在不重启的情况下,修复中间件程序的功能。
进一步地,参照图7,图7为本发明程序漏洞修复方法第二实施例的流程示意图。基于上述图2、图3、图4、图5或图6所示的实施例,步骤S10获取应用程序中应用函数的函数标识信息及补丁列表信息之前,可以包括:
步骤S50,向服务器发送补丁文件获取指令;
在本实施例中,程序漏洞修复装置在检测到应用程序修复装置内的补丁文件需要更新时,程序漏洞修复装置向云端服务器发送补丁文件获取指令。
步骤S60,接收所述服务器根据所述补丁文件获取指令返回的补丁修复文件;
在本实施例中,程序漏洞修复装置向云端服务器发送补丁文件获取指令,云端服务器根据补丁文件获取指令查找与补丁文件获取指令对应的补丁修复文件;云端服务器将查找到的补丁修复文件发送至程序漏洞修复装置,程序漏洞修复装置接收云端服务器根据补丁文件获取指令返回的补丁修复文件。
步骤S70,根据所述补丁修复文件生成所述补丁列表信息。
在本实施例中,程序漏洞修复装置在接收到补丁修复文件之后,程序漏洞修复装置根据补丁修复文件生成补丁列表信息。
本实施例通过上述方案,向服务器发送补丁文件获取指令;接收所述服务器根据所述补丁文件获取指令返回的补丁修复文件;根据所述补丁修复文件生成所述补丁列表信息;获取应用程序中应用函数的函数标识信息及补丁列表信息;检测所述补丁列表信息中是否存储有所述函数标识信息;若所述补丁列表信息中存储有所述函数标识信息,则根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作。由此,实现了减小补丁修复文件内存大小的功能,实现了不通过整体替换的方法修复应用程序漏洞的功能,实现了通过动态加载修复应用程序漏洞的功能,实现了在不重启的情况下,修复中间件程序的功能。
本发明还提供一种程序漏洞修复装置。
本发明程序漏洞修复装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序漏洞修复程序,所述程序漏洞修复程序被所述处理器执行时实现如上所述的程序漏洞修复方法的步骤。
其中,在所述处理器上运行的程序漏洞修复程序被执行时所实现的方法可参照本发明程序漏洞修复方法各个实施例,此处不再赘述。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有程序漏洞修复程序,所述程序漏洞修复程序被处理器执行时实现如上所述的程序漏洞修复方法的步骤。
其中,在所述处理器上运行的程序漏洞修复程序被执行时所实现的方法可参照本发明程序漏洞修复方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种程序漏洞修复方法,其特征在于,所述程序漏洞修复方法包括如下步骤:
获取应用程序中应用函数的函数标识信息及补丁列表信息;
检测所述补丁列表信息中是否存储有所述函数标识信息;
若所述补丁列表信息中存储有所述函数标识信息,则根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作。
2.如权利要求1所述的程序漏洞修复方法,其特征在于,当所述应用函数的函数类型为Java函数类型时,所述根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作的步骤,包括:
将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;
将与所述修复标识信息对应的应用函数确定为修复函数;
根据所述补丁列表信息获取与所述修复标识信息对应的补丁函数;
将所述应用程序中的所述修复函数替换为所述补丁函数。
3.如权利要求1所述的程序漏洞修复方法,其特征在于,当所述应用函数的函数类型为native函数类型时,所述根据所述函数标识信息和所述补丁列表信息对所述应用函数执行对应的修复操作的步骤,还包括:
将所述补丁列表信息中的所述函数标识信息确定为修复标识信息;
将与所述修复标识信息对应的应用函数确定为修复函数;
根据所述补丁列表信息获取与所述修复标识信息对应的补丁地址信息;
当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数。
4.如权利要求3所述的程序漏洞修复方法,其特征在于,所述将与所述修复标识信息对应的应用函数确定为修复函数的步骤之后,包括:
根据所述补丁列表信息获取与所述修复标识信息对应的补丁偏移地址;
根据所述修复标识信息和所述补丁偏移地址,得到函数内存地址;
将所述函数内存地址替换为所述补丁地址信息。
5.如权利要求4所述的程序漏洞修复方法,其特征在于,所述根据修复标识信息和补丁偏移地址,得到函数内存地址的步骤,包括:
根据所述修复标识信息获取与所述修复标识信息对应的函数进程编号;
根据所述函数进程编号获取对应的内存运行地址;
基于所述内存运行地址和所述补丁偏移地址进行计算,得到函数内存地址。
6.如权利要求3至5中任一项所述的程序漏洞修复方法,其特征在于,所述当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数的步骤之前,包括:
通过所述补丁地址信息预加载所述修复函数,得到预加载结果;
检测所述预加载结果是否为正常执行结果;
若所述预加载结果为正常执行结果,则转到当所述修复函数运行时,基于所述补丁地址信息运行所述修复函数的步骤。
7.如权利要求6所述的中间件程序修复方法,其特征在于,所述检测所述预加载结果是否为正常执行结果的步骤之后,包括:
若所述预加载结果为非正常执行结果,检测所述补丁地址信息是否为正常地址信息;
若所述补丁地址信息为正常地址信息,则生成程序修复失败指令,并将所述程序修复失败指令发送至服务器。
8.如权利要求1至5中任一项所述的程序漏洞修复方法,其特征在于,所述获取应用程序中应用函数的函数标识信息及补丁列表信息的步骤之前,包括:
向服务器发送补丁文件获取指令;
接收所述服务器根据所述补丁文件获取指令返回的补丁修复文件;
根据所述补丁修复文件生成所述补丁列表信息。
9.一种程序漏洞修复装置,其特征在于,所述程序漏洞修复装置包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行的程序漏洞修复程序,所述程序漏洞修复程序被所述处理器执行时实现如权利要求1至8中任一项所述的程序漏洞修复方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有程序漏洞修复程序,所述程序漏洞修复程序被处理器执行时实现如权利要求1至8中任一项所述的程序漏洞修复方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010195033.1A CN111324491A (zh) | 2020-03-18 | 2020-03-18 | 程序漏洞修复方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010195033.1A CN111324491A (zh) | 2020-03-18 | 2020-03-18 | 程序漏洞修复方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111324491A true CN111324491A (zh) | 2020-06-23 |
Family
ID=71171659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010195033.1A Pending CN111324491A (zh) | 2020-03-18 | 2020-03-18 | 程序漏洞修复方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324491A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024046260A1 (zh) * | 2022-08-30 | 2024-03-07 | 华为技术有限公司 | 一种热补丁方法及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060156032A1 (en) * | 2005-01-03 | 2006-07-13 | Panjwani Dileep K | Network-based patching machine |
CN103559449A (zh) * | 2013-11-15 | 2014-02-05 | 华为技术有限公司 | 一种代码改动的检测方法及装置 |
CN105159738A (zh) * | 2015-08-20 | 2015-12-16 | 上海斐讯数据通信技术有限公司 | 一种热补丁实现方法及系统 |
CN105607937A (zh) * | 2015-12-25 | 2016-05-25 | 京信通信技术(广州)有限公司 | 一种热补丁方法及设备 |
CN109492406A (zh) * | 2018-11-15 | 2019-03-19 | 百度在线网络技术(北京)有限公司 | 监测内核漏洞攻击的方法、装置和系统 |
-
2020
- 2020-03-18 CN CN202010195033.1A patent/CN111324491A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060156032A1 (en) * | 2005-01-03 | 2006-07-13 | Panjwani Dileep K | Network-based patching machine |
CN103559449A (zh) * | 2013-11-15 | 2014-02-05 | 华为技术有限公司 | 一种代码改动的检测方法及装置 |
CN105159738A (zh) * | 2015-08-20 | 2015-12-16 | 上海斐讯数据通信技术有限公司 | 一种热补丁实现方法及系统 |
CN105607937A (zh) * | 2015-12-25 | 2016-05-25 | 京信通信技术(广州)有限公司 | 一种热补丁方法及设备 |
CN109492406A (zh) * | 2018-11-15 | 2019-03-19 | 百度在线网络技术(北京)有限公司 | 监测内核漏洞攻击的方法、装置和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024046260A1 (zh) * | 2022-08-30 | 2024-03-07 | 华为技术有限公司 | 一种热补丁方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108768875B (zh) | 应用的灰度发布方法、装置及计算机可读存储介质 | |
CN107783795B (zh) | 应用程序启动方法、装置、计算机设备和存储介质 | |
US9110761B2 (en) | Resource data structures for firmware updates | |
CN108241500B (zh) | 一种硬件组件的修复方法、装置、系统和存储介质 | |
US20150169316A1 (en) | Firmware Update Discovery and Distribution | |
CN109558320B (zh) | 系统测试方法、装置、系统、设备及计算机可读存储介质 | |
US8762977B2 (en) | Mobile device software management method and apparatus | |
CN112162795B (zh) | 一种插件启动方法、装置、计算机设备和存储介质 | |
CN111723002A (zh) | 一种代码调试方法、装置、电子设备及存储介质 | |
CN110502263B (zh) | 升级包制作方法、系统及计算机可读存储介质 | |
CN110765394A (zh) | so文件加载方法、装置、存储介质及终端设备 | |
CN110413292B (zh) | 应用程序的轻应用安装方法、移动终端及存储介质 | |
CN111367518A (zh) | 页面布局方法、装置、计算设备及计算机存储介质 | |
CN111078256B (zh) | 自动化测试环境的升级方法、终端及可读存储介质 | |
CN111324491A (zh) | 程序漏洞修复方法、装置及计算机可读存储介质 | |
CN108235101B (zh) | 智能电视初始化方法、智能电视以及计算机可读存储介质 | |
CN114661581A (zh) | 终端测试方法、装置、电子设备及计算机可读存储介质 | |
CN107861827B (zh) | 卡屏检测方法、移动终端及计算机可读存储介质 | |
CN111131861B (zh) | 恢复分区的升级方法、终端和存储介质 | |
CN109032651B (zh) | 应用更新方法、智能终端及计算机可读存储介质 | |
CN115129348A (zh) | 应用程序的资源更新方法、装置、设备及可读存储介质 | |
CN111399892A (zh) | 中间件程序修复方法、装置及计算机可读存储介质 | |
CN113867756A (zh) | 软件升级方法、终端设备及可读存储介质 | |
CN111522564A (zh) | 系统升级状态的识别方法、装置和计算机可读存储介质 | |
CN109660585B (zh) | Aop增强对象服务的调用方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |