CN105573788A - 补丁处理的方法和设备以及生成补丁的方法和设备 - Google Patents
补丁处理的方法和设备以及生成补丁的方法和设备 Download PDFInfo
- Publication number
- CN105573788A CN105573788A CN201510934339.3A CN201510934339A CN105573788A CN 105573788 A CN105573788 A CN 105573788A CN 201510934339 A CN201510934339 A CN 201510934339A CN 105573788 A CN105573788 A CN 105573788A
- Authority
- CN
- China
- Prior art keywords
- function
- address
- instruction
- intermediate code
- patch file
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种补丁处理方法。该方法包括:当执行到第一函数中的第一调用指令,跳转到第二函数;当执行到第二函数的第一条指令,跳转到补丁文件的中间代码;按照中间代码的指令,将第一函数的表地址和第一调用指令的返回地址保存到补丁文件的预留空间;当执行到中间代码中的第二调用指令,跳转到补丁文件中用于对第二函数更新的第三函数;当完成第三函数的执行,按照第二调用指令的返回地址,返回中间代码;按照中间代码的指令,从预留空间中恢复第一函数的表地址和第一调用指令的返回地址;按照第一调用指令的返回地址,返回第一函数。此外,本发明实施例中还提供了一种补丁处理的设备以及一种补丁生成的方法和设备。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种补丁处理的方法和设备以及一种生成补丁文件的方法和设备。
背景技术
目前,为了修复程序漏洞或更新业务功能,各种电子设备可以通过补丁的方式对现有软件进行更新。例如,在各种通信网络中,网络设备通过补丁的方式对现有软件的更新,可以更新自身的通信业务功能。可以理解的是,在许多情况下,软件的更新需要在不中断软件运行的情况下进行。基于此,在线补丁技术应运而生。
在线补丁技术是以函数为单位对软件进行补丁的。图1所示的是一种现有的在线补丁技术。其中,软件中需要更新的原函数是第二函数,软件中第二函数是第一函数的调用对象,而补丁文件中包含有用于更新第二函数的第三函数,即第三函数是补丁函数。对于运行有该软件的设备来说,在利用补丁文件对软件进行补丁之后,当执行第一函数的过程中响应到调用第二函数的指令,第二函数的第一条指令指示该设备跳转去调用补丁文件中的第三函数,当执行完第三函数之后再返回到第一函数执行后续指令。可见,在设备运行软件的过程中,第三函数的执行替代了第二函数的执行,软件的更新得以实现。
需要说明的是,在线补丁技术通常应用于软件运行不能中断的场景中。例如,对于通信网络的网络设备来说,其通信业务需要由运行中的软件承载,而网络设备的通信业务是不能中断的,因此,网络设备的软件更新需要采用在线补丁技术。但是,发明人经过研究发现,采用现有的在线补丁技术对软件进行补丁更新之后,软件的运行却常常因异常、错误或故障而被中断。
发明内容
本发明实施例所要解决的技术问题是,提供一种补丁处理的方法和设备以及一种生成补丁文件的方法和设备,以解决现有技术中在在线补丁完成之后软件的运行容易发生中断的技术问题。
第一方面,本发明实施例提供了一种补丁处理方法,所述方法包括:
响应于执行到第一函数中的第一调用指令,跳转到第二函数;
响应于执行到所述第二函数的第一条指令,跳转到补丁文件的中间代码;
按照所述中间代码的指令,将所述第一函数的表地址和所述第一调用指令的返回地址保存到所述补丁文件的预留空间,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址;
响应于执行到所述中间代码中的第二调用指令,跳转到所述补丁文件的第三函数,所述第三函数用于对所述第二函数进行更新;
响应于完成所述第三函数的执行,按照所述第二调用指令的返回地址,返回所述中间代码;
按照所述中间代码的指令,从所述预留空间中恢复所述第一函数的表地址和所述第一调用指令的返回地址;
按照所述第一调用指令的返回地址,返回所述第一函数。
可选的,所述方法还包括:
获取所述补丁文件,并按照所述补丁文件获取所述第二函数的地址;
根据所述第二函数的地址,在所述第二函数中添加用于跳转到所述中间代码的指令,作为所述第二函数的第一条指令。
可选的,所述方法还包括:
响应于所述返回所述第一函数,监测所述第一函数的执行是否出现故障;
当监测到所述第一函数的执行出现故障时,删除所述第二函数中用于跳转到所述中间代码的第一条指令。
第二方面,本发明实施例提供了一种生成补丁文件的方法,所述方法包括:
获取OBJ格式的补丁文件,并根据所述OBJ格式的补丁文件生成PAT格式的补丁文件;
其中,所述PAT格式的补丁文件包括第三函数、中间代码和预留空间;
所述第三函数用于对第二函数进行更新,所述第二函数为第一函数的调用对象;
所述中间代码用于在所述第二函数跳转到所述中间代码时保存所述第一函数的表地址和所述第一调用指令的返回地址到所述预留空间以及在所述第三函数返回所述中间代码时从所述预留空间恢复所述第一函数的表地址和所述第一调用指令的返回地址,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址,所述第一调用指令为所述第一函数中用于调用所述第二函数的指令;
所述预留空间用于在所述中间代码调用所述第三函数的过程中存储所述第一函数的表地址和所述第一调用指令的返回地址。
可选的,所述根据所述OBJ格式的补丁文件生成PAT格式的补丁文件,包括:
对所述OBJ格式的补丁文件进行所述第三函数的重定位,并在所述OBJ格式的补丁文件中添加所述预留空间。
第三方面,本发明实施例提供了一种补丁处理设备,所述设备包括:
第一跳转单元,用于响应于执行到第一函数中的第一调用指令,跳转到第二函数;
第二跳转单元,用于响应于执行到所述第二函数的第一条指令,跳转到补丁文件的中间代码;
保存单元,用于按照所述中间代码的指令,将所述第一函数的表地址和所述第一调用指令的返回地址保存到所述补丁文件的预留空间,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址;
第三跳转单元,用于响应于执行到所述中间代码中的第二调用指令,跳转到所述补丁文件的第三函数,所述第三函数用于对所述第二函数进行更新;
第一返回单元,用于响应于完成所述第三函数的执行,按照所述第二调用指令的返回地址,返回所述中间代码;
恢复单元,用于按照所述中间代码的指令,从所述预留空间中恢复所述第一函数的表地址和所述第一调用指令的返回地址;
第二返回单元,用于按照所述第一调用指令的返回地址,返回所述第一函数。
可选的,所述设备还包括:
第一获取单元,用于获取所述补丁文件;
第二获取单元,用于按照所述补丁文件获取所述第二函数的地址;
添加单元,用于根据所述第二函数的地址,在所述第二函数中添加用于跳转到所述中间代码的指令,作为所述第二函数的第一条指令。
可选的,所述设备还包括:
监测单元,用于响应于所述返回所述第一函数,监测所述第一函数的执行是否出现故障;
删除单元,用于当监测到所述第一函数的执行出现故障时,删除所述第二函数中用于跳转到所述中间代码的第一条指令。
第四方面,本发明实施例提供了一种生成补丁文件的设备,所述设备包括:
获取单元,用于获取OBJ格式的补丁文件;
生成单元,用于根据所述OBJ格式的补丁文件生成PAT格式的补丁文件;
其中,所述PAT格式的补丁文件包括第三函数、中间代码和预留空间;
所述第三函数用于对第二函数进行更新,所述第二函数为第一函数的调用对象;
所述中间代码用于在所述第二函数跳转到所述中间代码时保存所述第一函数的表地址和所述第一调用指令的返回地址到所述预留空间以及在所述第三函数返回所述中间代码时从所述预留空间恢复所述第一函数的表地址和所述第一调用指令的返回地址,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址,所述第一调用指令为所述第一函数中用于调用所述第二函数的指令;
所述预留空间用于在所述中间代码调用所述第三函数的过程中存储所述第一函数的表地址和所述第一调用指令的返回地址。
可选的,所述生成单元包括:
重定位子单元,用于对所述OBJ格式的补丁文件进行所述第三函数的重定位;
添加子单元,用于在所述OBJ格式的补丁文件中添加所述预留空间。
与现有技术相比,本发明实施例至少具有以下优点:
在本发明实施例的技术方案中,补丁文件中包含有预留空间、中间代码和第三函数,其中,第三函数用于对第二函数进行更新,第二函数是第一函数的调用对象。当该补丁文件加载到软件之后,在软件运行的过程中,当执行到第一函数中用于调用第二函数的第一调用指令时跳转到第二函数,并在第二函数的第一条指令下跳转到补丁文件的中间代码,然后,按照中间代码的指令,保存第一函数的表地址和第一调用指令的返回地址到补丁文件的预留空间,当执行到中间代码中用于调用第三函数的第二调用指令时跳转到第三函数,当完成第三函数的执行时按照第二调用指令的返回地址返回所述中间代码,然后,按照中间代码的指令从预留空间恢复第一函数的表地址和第一调用指令的返回地址,再按照第一调用指令的返回地址返回第一函数。由此可见,在补丁文件的中间代码中,用于跳转至第三函数的第二调用指令之前具有用于保存第一函数的表地址的指令和用于保存第一调用指令的返回地址的指令,第二调用指令之后具有用于恢复第一函数的表地址的指令和用于保存第一调用指令的返回地址的指令,并且,在补丁文件还具有用于保存第一函数的表地址与第一调用指令的返回地址的预留空间。因此,一方面,中间代码调用第三函数时丢失的第一函数的表地址,可以在执行完第三函数返回第一函数之前从预留空间恢复,因此,返回第一函数之后,在执行第一函数的过程中可以按照已恢复的表地址从第一函数的表结构中查找调用对象的地址,从而避免了从第三函数返回第一函数之后再执行第一函数时无法查找到第一函数的调用对象,避免了软件的运行出现故障,减少了软件运行出现中断的情况;另一方面,虽然中间代码调用第三函数时第一调用指令的返回地址被替换成了第二调用指令的返回地址,但在执行完第三函数返回第一函数之前可以从预留空间中恢复第一调用指令的返回地址,按照已恢复的第一调用指令的返回地址可以返回第一函数,从而避免了第三函数执行完之后无法返回第一函数继续后续指令的执行,避免了软件的运行出现故障,减少了软件运行出现中断的情况;再一方面,在补丁文件中留出预留空间来保存第一函数的表地址和第一调用指令的返回地址,所保存的表地址和返回地址不会占用栈帧结构,从而保证了第三函数的调用与第二函数的调用具有相同的栈帧结构,避免了栈帧结构改变所造成的信息获取错误,进而避免了信息获取错误导致的软件运行中断。由此可见,通过本发明实施例,补丁文件对软件进行更新之后,导致软件中断运行的许多因素得以避免,因此,软件运行中断的可能性大大降低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为现有技术中的补丁处理方式;
图2为本发明实施例中一种补丁处理方法的流程示意图;
图3为本发明实施例中设备执行代码指令的流程示意图;
图4为本发明实施例中一种补丁文件的处理流程示意图;
图5为本发明实施例中一种生成补丁文件的方法的流程示意图;
图6为本发明实施例中一种补丁处理设备的结构示意图;
图7为本发明实施例中一种生成补丁文件的设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。
发明人经过研究发现,在图1所示的现有技术中,在执行第一函数的过程中,为了完成第一函数对各调用对象的调用指令,需要通过第一函数的表结构来查找第一函数的各调用对象的地址。而第一函数的表结构需要通过第一函数的表地址来查找。但是,当第一函数调用第二函数时,在第二函数的第一条指令下设备会跳转到补丁文件中的第三函数,在第三函数的执行过程中第一函数的表地址会丢失,因此,当第三函数执行完返回第一函数时,第一函数后续指令的执行过程中第一函数的表结构是无法查找到的,第一函数后续指令也就无法实现对调用对象的调用,因此,软件的运行就会出现故障,从而导致软件的运行出现中断。
为了解决现有技术的上述问题,在本发明实施例中,补丁文件包括第三函数、中间代码和预留空间,其中,在中间代码中,用于跳转至第三函数的第二调用指令之前具有用于保存第一函数的表地址的指令和用于保存第一调用指令的返回地址的指令,第二调用指令之后具有用于恢复第一函数的表地址的指令和用于保存第一调用指令的返回地址的指令,并且,预留空间用于保存第一函数的表地址与第一调用指令的返回地址。因此,中间代码调用第三函数时丢失的第一函数的表地址,可以在执行完第三函数返回第一函数之前从预留空间恢复,因此,返回第一函数之后,在执行第一函数后续指令的过程中第一函数的表结构能够被查找到,第一函数后续指令也就能够实现对调用对象的调用,从而避免了软件的运行出现故障,减少了软件运行出现中断的情况。此外,虽然中间代码调用第三函数时第一调用指令的返回地址被替换成了第二调用指令的返回地址,但在执行完第三函数返回第一函数之前可以从预留空间中恢复第一调用指令的返回地址并据此返回第一函数,从而避免了软件的运行出现故障,减少了软件运行出现中断的情况。再此外,第一函数的表地址和第一调用指令的返回地址保存在补丁文件中留出的预留空间中,所保存的表地址和返回地址不会改变栈帧结构,从而避免了栈帧结构改变所造成的信息获取错误,进而避免了信息获取错误导致的软件运行中断。由此可见,通过本发明实施例,补丁文件对软件进行更新之后,导致软件中断运行的许多因素得以避免,因此,软件运行中断的可能性大大降低。
下面结合附图,通过实施例来详细说明本发明中启动操作***的方法、相关设备和***的实现方式。
参见图2,示出了本发明实施例中一种补丁处理方法的流程示意图。在本实施例中,所述方法可以应用于运行软件的设备,所述软件是需要补丁处理的软件,所述设备例如可以是通信设备。该方法例如具体可以包括如下步骤:
S201、响应于执行到第一函数中的第一调用指令,跳转到第二函数。
其中,所述第一函数可以是软件的进程创建的函数,如主函数。所述第二所述第二函数能够被所述第一函数调用,也即,在所述第一函数的指令中包括有用于调用所述第二函数的第一调用指令。可以理解的是,所述第二函数是软件在加载补丁文件之前已经具有的函数,也即,所述第二函数是软件未补丁的原函数。在本实施例中,所述补丁处理可以是对所述第二函数进行的更新处理。
当设备运行软件的进程时,所述设备按照所述第一函数的指令顺序依次执行所述第一函数的各个指令。当执行到所述第一函数中用于调用所述第二函数的第一调用指令时,所述设备从所述第一函数的所述第一调用指令跳转到所述第二函数,开始按照所述第二函数的指令顺序执行所述第二函数的指令。
需要说明的是,当所述设备执行到所述第一函数的所述第一调用指令时,在跳转到所述第二函数之前,可以将所述第一函数中所述第一调用指令的下一条指令的地址记录为返回地址,以便在跳转到所述第二函数之后所述处理器能够返回到所述第一函数继续执行所述第一函数中所述第一调用指令之后的指令。
S202、响应于执行到所述第二函数的第一条指令,跳转到补丁文件的中间代码。
所述设备响应于所述第一函数的所述第一调用指令而跳转到所述第二函数之后,执行所述第二函数的第一条指令。在软件加载补丁文件之后,所述第二函数的第一条指令是用于调用所述补丁文件的中间代码的调用指令。所述设备执行到所述第二函数的第一条指令,所述设备从所述第二函数的第一条指令跳转到所述补丁文件的中间代码,开始执行所述中间代码的指令。可以理解的是,当所述设备执行到所述第二函数的第一条指令时,所述设备记录的返回地址不变。也即,在所述设备跳转到所述中间代码之后,所述设备记录的返回地址依然是所述第一函数中所述第一调用指令的下一条指令的地址令的地址。因此,在软件加载所述补丁文件之后,所述设备实际上不再执行软件未加载所述补丁文件之前所述第二函数中的所有指令,而是执行所述补丁文件中的指令。
需要说明的是,在软件加载到所述补丁文件的过程中,需要更新的所述第二函数中可以增加一条用于调用所述补丁文件提供的代码的指令,作为所述第二函数的第一条指令。此后,所述设备在调用所述第二函数时可以跳转到补丁文件提供的函数而不再执行所述第二函数的原有指令,因此,补丁文件就实现了对第二函数的更新。具体地,为了实现软件加载所述补丁文件,本实施例如还可以包括:获取所述补丁文件,并按照所述补丁文件获取所述第二函数的地址;根据所述第二函数的地址,在所述第二函数中添加用于跳转到所述中间代码的指令,作为所述第二函数的第一条指令。在具体实施方式中,所述补丁文件中记录有所述第二函数的标识或地址。所述设备在将所述补丁文件加载到软件的过程中可以根据所述补丁文件中的所述第二函数的标识或地址,确定所述补丁文件用于对所述第二函数进行更新,并获取所述第二函数的地址。根据所述第二函数的地址查找到所述第二函数,生成一条用于条状到所述补丁文件的中间代码的指令,并将这一条指令添加到所述第二函数作为所述第二函数的第一条指令。
S203、按照所述中间代码的指令,将所述第一函数的表地址和所述第一调用指令的返回地址保存到所述补丁文件的预留空间,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址。
具体地,补丁文件中具有用于保存表地址和返回地址的预留空间,并且,所述补丁文件的中间代码包含有用于保存表地址的指令和用于保存返回地址的指令。所述设备响应于所述第二函数的第一条指令而跳转到所述中间代码之后,执行所述中间代码的用于保存表地址的指令和用于保存返回地址的指令,将当前记录的所述第一函数的表地址和所述第一调用指令的返回地址保存到所述补丁文件的预留空间。
可以理解的是,在执行所述第一函数的过程中,为了实现第一函数中的各调用指令,所述设备需要在内存中记录有所述第一函数的表地址。具体地,所述设备按照所述第一函数的表地址查找到所述第一函数的表结构,在所述第一函数的表结构中查找所述第一函数的调用对象的地址。所述设备根据查找到的调用对象的地址,查找到所述第一函数的调用对象,实现调用指令的执行。因此,所述设备在跳转到所述中间代码之前是在执行所述第一函数,此时所述设备内存中记录的是所述第一函数的表地址。在执行所述中间代码的指令时,所述设备将其内存记录的表地址保存到所述预留空间,则所述预留空间中保存的表地址实际上是所述第一函数的表地址。
需要说明的是,在执行所述第一函数的所述第一调用指令的过程中,所述设备在内存中记录的返回地址是所述第一调用指令的返回地址,这样所述设备能够在所述第一调用指令的调用完全之后再返回所述第一函数继续执行后续指令。其中,所述第一调用指令的返回地址表示所述第一函数中所述第一调用指令的下一条指令的地址。所述设备在跳转到所述中间代码之前是在执行所述第一调用指令,此时所述设备内存中记录的返回地址是所述第一调用指令的返回地址。在执行所述中间代码的指令时,所述设备将其内存记录的返回地址保存到所述预留空间,则所述预留空间中保存的返回地址实际上是所述第一调用指令的返回地址。
S204、响应于执行到所述中间代码中的第二调用指令,跳转到所述补丁文件的第三函数,所述第三函数用于对所述第二函数进行更新。
所述中间代码中在用于保存表地址的指令和用于保存返回地址的指令之后包括所述第二调用指令。所述第二调用指令用于调用所述补丁文件中的第三函数。可见,所述设备执行到所述第一函数的所述第一调用指令之后,所述设备实际上执行的是所述补丁文件中的所述第三函数而不是所述第二函数,因此就实现了所述第三函数对所述第二函数进行更新。
可以理解的是,在跳转到所述第三函数之后,所述设备执行的是所述第三函数,此时,所述设备内存中记录的表地址是所述第三函数的表地址。而所述设备内存中原本记录的所述第一函数的表地址将被丢弃。在跳转到所述第三函数之前,所述设备是在执行所述中间代码的所述第二调用指令,此时,所述设备内存中记录的返回地址是所述第二调用指令的返回地址,即所述中间代码中所述第二调用指令的下一条指令的地址。而所述设备内存中原本记录的所述第一调用指令的返回地址将被丢弃。
S205、响应于完成所述第三函数的执行,按照所述第二调用指令的返回地址,返回所述中间代码。
可以理解的是,在所述第三函数执行完成之后,所述设备按照内存中记录的所述第二调用指令的返回地址,返回所述中间代码中所述第二调用指令的下一条指令。
S206、按照所述中间代码的指令,从所述预留空间中恢复所述第一函数的表地址和所述第一调用指令的返回地址。
在本实施例中,所述中间代码中在所述第二调用指令之后还包括用于恢复表地址和用于恢复返回地址的指令。当从所述第三函数返回到所述中间代码之后,所述设备可以响应于用于恢复表地址的指令从所述预留空间中读取所述第一函数的表地址恢复到内存中记录,并且,所述设备可以响应于用于恢复返回地址的指令从所述预留空间中读取所述第一调用指令的返回地址恢复到内存中记录。其中,恢复到内存的所述第一调用指令的返回地址,可以用于使所述设备执行完成所述第三函数之后最终返回到所述第一函数中所述第一调用指令的下一条指令。恢复到内存的所述第一函数的表地址,可以用于使所述设备从所述第三函数返回到所述第一函数之后执行所述第一函数的过程中能够正常调用所述第一函数的调用对象。
S207、按照所述第一调用指令的返回地址,返回所述第一函数。
在返回所述第一函数之后,由于所述设备内存中记录的是所述第一函数的表地址,所述设备在后续执行所述第一函数的过程中能够根据所述第一函数的表结构查找调用对象的地址,从而正确执行所述第一函数后续的各调用指令。
进一步而言,在返回所述第一函数之后,若所述设备执行所述第一函数的过程中出现故障或异常,则所述设备可以确定所述补丁文件的加载导致了这种故障或异常,此时,所述设备可以取消所述补丁文件的加载。具体地,本实施例例如还可以包括:响应于所述返回所述第一函数,监测所述第一函数的执行是否出现故障;当监测到所述第一函数的执行出现故障时,删除所述第二函数中用于跳转到所述中间代码的第一条指令。可以理解的是,用于跳转到所述中间代码的指令是在所述补丁文件加载到软件时添加到所述第二函数作为第一条指令的。在所述第二函数中用于跳转到所述中间代码的第一条指令被删除之后,所述设备跳转到所述第二函数时将执行所述第二函数的所有指令而不再执行所述补丁文件中的所述中间代码和所述第三函数。
图3所示的是本实施例中设备执行代码指令的流程示意图。第一函数为软件的进程函数。第二函数为所述第一函数的调用对象,是所述软件中需要更新的原函数。补丁文件包括预留空间、中间代码和第三函数。第三函数是用于对所述第二函数更新的新函数。所述第一函数包括用于调用所述第二函数的第一调用指令和指令a,所述指令a是所述第一调用指令的下一条指令,所述第一调用指令的返回地址即是所述指令a的地址。所述第二函数包括用于调用所述中间代码的指令b,所述指令b是所述第二函数的第一条指令。所述预留空间包括用于保存表地址的空间a和用于保存返回地址的空间b。所述中间代码包括用于保存表地址的指令c、用于保存返回地址的指令d、用于调用所述第三函数的第二调用指令、用于恢复表地址的指令e、用于恢复返回地址的指令f和用于返回所述第一函数的指令h。所述指令c和所述指令d位于所述第二调用指令之前,所述指令e和所述指令f位于所述第二调用指令之后,所述指令h是所述中间代码的最后一条指令。所述指令e是所述第二调用指令的下一条指令,所述第二调用指令的返回地址为所述指令e的地址,或者,所述指令f是所述第二调用指令的下一条指令,所述第二调用指令的返回地址为所述指令f的地址。所述第三函数的最后一条指令为用于返回所述中间代码的指令。
按照图3所示的代码执行流程,在设备执行所述第一函数的过程中,当执行到所述第一调用指令时,所述设备跳转到所述第二函数。当执行到所述指令b时,所述设备跳转到所述中间代码。当执行到指令c时,所述设备将所述第一函数的表地址保存到所述预留空间中的空间a,并将作为返回地址的所述指令a的地址保存到所述预留空间中的空间b。当执行到所述第二调用指令时,所述设备跳转到所述第三函数。当执行到所述第三函数的最后一条指令时,所述设备返回所述中间代码。当执行到所述指令e时,所述设备从所述预留空间的空间a中恢复所述第一函数的表地址。当执行到所述指令f时,所述设备从所述预留空间的空间b中恢复所述指令a的地址作为返回地址。当执行所述指令h时,所述设备返回所述第一函数中的指令a。
在具体实施方式中,所述设备对于所述补丁文件的处理过程可以采用如图4所示的处理流程。在加载阶段,用于跳转到所述补丁文件的中间代码的指令被添加到所述第二函数中作为所述第二函数的第一条指令,所述第三函数的地址被添加到所述中间代码中形成用于调用所述第三函数的所述第二调用指令。在激活阶段,所述设备运行所述软件,按照指令执行所述第一函数、所述第二函数、所述中间代码和所述第三函数。若所述软件的运行过程中出现异常或故障,则取消所述补丁文件的加载,将所述第二函数中用于调用所述中间代码的第一条指令删除。在运行阶段,所述设备正常运行所述软件,不再针对所述软件运行过程中出现的异常或故障而取消所述补丁文件的加载。在删除阶段,将所述第二函数中用于调用所述中间代码的第一条指令删除,并在所述设备上删除所述补丁文件。
在本发明实施例的技术方案中,一方面,中间代码调用第三函数时丢失的第一函数的表地址,可以在执行完第三函数返回第一函数之前从预留空间恢复,因此,返回第一函数之后,在执行第一函数的过程中可以按照已恢复的表地址从第一函数的表结构中查找调用对象的地址,从而避免了从第三函数返回第一函数之后再执行第一函数时无法查找到第一函数的调用对象,避免了软件的运行出现故障,减少了软件运行出现中断的情况;另一方面,虽然中间代码调用第三函数时第一调用指令的返回地址被替换成了第二调用指令的返回地址,但在执行完第三函数返回第一函数之前可以从预留空间中恢复第一调用指令的返回地址,按照已恢复的第一调用指令的返回地址可以返回第一函数,从而避免了第三函数执行完之后无法返回第一函数继续后续指令的执行,避免了软件的运行出现故障,减少了软件运行出现中断的情况;再一方面,在补丁文件中留出预留空间来保存第一函数的表地址和第一调用指令的返回地址,所保存的表地址和返回地址不会占用栈帧结构,从而保证了第三函数的调用与第二函数的调用具有相同的栈帧结构,避免了栈帧结构改变所造成的信息获取错误,进而避免了信息获取错误导致的软件运行中断。由此可见,通过本实施例的技术方案,补丁文件对软件进行更新之后,导致软件中断运行的许多因素得以避免,因此,软件运行中断的可能性大大降低。
参见图5,示出了本发明实施例中一种生成补丁文件的方法的流程示意图。在本实施例中,所述方法例如具体可以包括:
S501、获取OBJ格式的补丁文件;
S502、根据所述OBJ格式的补丁文件生成PAT格式的补丁文件;
其中,所述PAT格式的补丁文件包括第三函数、中间代码和预留空间;
所述第三函数用于对第二函数进行更新,所述第二函数为第一函数的调用对象;
所述中间代码用于在所述第二函数跳转到所述中间代码时保存所述第一函数的表地址和所述第一调用指令的返回地址到所述预留空间以及在所述第三函数返回所述中间代码时从所述预留空间恢复所述第一函数的表地址和所述第一调用指令的返回地址,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址,所述第一调用指令为所述第一函数中用于调用所述第二函数的指令;
所述预留空间用于在所述中间代码调用所述第三函数的过程中存储所述第一函数的表地址和所述第一调用指令的返回地址。
在具体实施方式中,所述S502例如可以包括:对所述OBJ格式的补丁文件进行所述第三函数的重定位,并在所述OBJ格式的补丁文件中添加所述预留空间。其中,所述OBJ包括所述第三函数。所述PAT文件包括所述第三函数、所述中间代码和所述预留空间。所述中间代码包括用于调用所述第三函数的第二调用指令。所述第三函数的地址可以在生成所述PAT文件时获取并添加到所述第二调用指令中,或者,所述PAT文件中可以携带有所述第三函数地址的获取指令,所述第三函数的地址也可以是所述PAT文件加载到运行有软件的设备时所述设备根据所述获取指令获取并添加到所述第二调用指令中的。
可以理解的是,所述PAT格式的补丁文件即相当于前述图2所示实施例中的补丁文件。所述补丁文件在设备上对软件的补丁方式可以参见前述图2所示的实施例,本实施例在此不再追溯。
采用本实施例生成的补丁文件对软件进行补丁,一方面,中间代码调用第三函数时丢失的第一函数的表地址,可以在执行完第三函数返回第一函数之前从预留空间恢复,因此,返回第一函数之后,在执行第一函数的过程中可以按照已恢复的表地址从第一函数的表结构中查找调用对象的地址,从而避免了从第三函数返回第一函数之后再执行第一函数时无法查找到第一函数的调用对象,避免了软件的运行出现故障,减少了软件运行出现中断的情况;另一方面,虽然中间代码调用第三函数时第一调用指令的返回地址被替换成了第二调用指令的返回地址,但在执行完第三函数返回第一函数之前可以从预留空间中恢复第一调用指令的返回地址,按照已恢复的第一调用指令的返回地址可以返回第一函数,从而避免了第三函数执行完之后无法返回第一函数继续后续指令的执行,避免了软件的运行出现故障,减少了软件运行出现中断的情况;再一方面,在补丁文件中留出预留空间来保存第一函数的表地址和第一调用指令的返回地址,所保存的表地址和返回地址不会占用栈帧结构,从而保证了第三函数的调用与第二函数的调用具有相同的栈帧结构,避免了栈帧结构改变所造成的信息获取错误,进而避免了信息获取错误导致的软件运行中断。由此可见,通过本实施例的技术方案,补丁文件对软件进行更新之后,导致软件中断运行的许多因素得以避免,因此,软件运行中断的可能性大大降低。
参见图6,示出了本发明实施例中一种补丁处理设备的结构示意图。在本实施例中,所述设备600例如具体可以包括:
第一跳转单元601,用于响应于执行到第一函数中的第一调用指令,跳转到所述第二函数;
第二跳转单元602,用于响应于执行到所述第二函数的第一条指令,跳转到补丁文件的中间代码;
保存单元603,用于按照所述中间代码的指令,将所述第一函数的表地址和所述第一调用指令的返回地址保存到所述补丁文件的预留空间,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址;
第三跳转单元604,用于响应于执行到所述中间代码中的第二调用指令,跳转到所述补丁文件的第三函数,所述第三函数用于对所述第二函数进行更新;
第一返回单元605,用于响应于完成所述第三函数的执行,按照所述第二调用指令的返回地址,返回所述中间代码;
恢复单元606,用于按照所述中间代码的指令,从所述预留空间中恢复所述第一函数的表地址和所述第一调用指令的返回地址;
第二返回单元607,用于按照所述第一调用指令的返回地址,返回所述第一函数。
在本实施例的一些实施方式中,所述设备600例如还可以包括:
第一获取单元,用于获取所述补丁文件;
第二获取单元,用于按照所述补丁文件获取所述第二函数的地址;
添加单元,用于根据所述第二函数的地址,在所述第二函数中添加用于跳转到所述中间代码的指令,作为所述第二函数的第一条指令。
在本实施例的另一些实施方式中,所述设备600例如还可以包括:
监测单元,用于响应于所述返回所述第一函数,监测所述第一函数的执行是否出现故障;
删除单元,用于当监测到所述第一函数的执行出现故障时,删除所述第二函数中用于跳转到所述中间代码的第一条指令。
在本发明实施例的技术方案中,一方面,中间代码调用第三函数时丢失的第一函数的表地址,可以在执行完第三函数返回第一函数之前从预留空间恢复,因此,返回第一函数之后,在执行第一函数的过程中可以按照已恢复的表地址从第一函数的表结构中查找调用对象的地址,从而避免了从第三函数返回第一函数之后再执行第一函数时无法查找到第一函数的调用对象,避免了软件的运行出现故障,减少了软件运行出现中断的情况;另一方面,虽然中间代码调用第三函数时第一调用指令的返回地址被替换成了第二调用指令的返回地址,但在执行完第三函数返回第一函数之前可以从预留空间中恢复第一调用指令的返回地址,按照已恢复的第一调用指令的返回地址可以返回第一函数,从而避免了第三函数执行完之后无法返回第一函数继续后续指令的执行,避免了软件的运行出现故障,减少了软件运行出现中断的情况;再一方面,在补丁文件中留出预留空间来保存第一函数的表地址和第一调用指令的返回地址,所保存的表地址和返回地址不会占用栈帧结构,从而保证了第三函数的调用与第二函数的调用具有相同的栈帧结构,避免了栈帧结构改变所造成的信息获取错误,进而避免了信息获取错误导致的软件运行中断。由此可见,通过本实施例的技术方案,补丁文件对软件进行更新之后,导致软件中断运行的许多因素得以避免,因此,软件运行中断的可能性大大降低。
参见图7,示出了本发明实施例中一种生成补丁文件的设备的结构示意图。在本实施例中,所述设备700例如具体可以包括:
获取单元701,用于获取OBJ格式的补丁文件;
生成单元702,用于根据所述OBJ格式的补丁文件生成PAT格式的补丁文件;
其中,所述PAT格式的补丁文件包括第三函数、中间代码和预留空间;
所述第三函数用于对第二函数进行更新,所述第二函数为第一函数的调用对象;
所述中间代码用于在所述第二函数跳转到所述中间代码时保存所述第一函数的表地址和所述第一调用指令的返回地址到所述预留空间以及在所述第三函数返回所述中间代码时从所述预留空间恢复所述第一函数的表地址和所述第一调用指令的返回地址,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址,所述第一调用指令为所述第一函数中用于调用所述第二函数的指令;
所述预留空间用于在所述中间代码调用所述第三函数的过程中存储所述第一函数的表地址和所述第一调用指令的返回地址。
可选的,所述生成单元702例如具体可以包括:
重定位子单元,用于对所述OBJ格式的补丁文件进行所述第三函数的重定位;
添加子单元,用于在所述OBJ格式的补丁文件中添加所述预留空间。
采用本实施例生成的补丁文件对软件进行补丁,一方面,中间代码调用第三函数时丢失的第一函数的表地址,可以在执行完第三函数返回第一函数之前从预留空间恢复,因此,返回第一函数之后,在执行第一函数的过程中可以按照已恢复的表地址从第一函数的表结构中查找调用对象的地址,从而避免了从第三函数返回第一函数之后再执行第一函数时无法查找到第一函数的调用对象,避免了软件的运行出现故障,减少了软件运行出现中断的情况;另一方面,虽然中间代码调用第三函数时第一调用指令的返回地址被替换成了第二调用指令的返回地址,但在执行完第三函数返回第一函数之前可以从预留空间中恢复第一调用指令的返回地址,按照已恢复的第一调用指令的返回地址可以返回第一函数,从而避免了第三函数执行完之后无法返回第一函数继续后续指令的执行,避免了软件的运行出现故障,减少了软件运行出现中断的情况;再一方面,在补丁文件中留出预留空间来保存第一函数的表地址和第一调用指令的返回地址,所保存的表地址和返回地址不会占用栈帧结构,从而保证了第三函数的调用与第二函数的调用具有相同的栈帧结构,避免了栈帧结构改变所造成的信息获取错误,进而避免了信息获取错误导致的软件运行中断。由此可见,通过本实施例的技术方案,补丁文件对软件进行更新之后,导致软件中断运行的许多因素得以避免,因此,软件运行中断的可能性大大降低。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的相关设备具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法、相关设备和***,可以通过其它的方式实现。例如,以上所描述的相关设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种补丁处理方法,其特征在于,所述方法包括:
响应于执行到第一函数中的第一调用指令,跳转到第二函数;
响应于执行到所述第二函数的第一条指令,跳转到补丁文件的中间代码;
按照所述中间代码的指令,将所述第一函数的表地址和所述第一调用指令的返回地址保存到所述补丁文件的预留空间,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址;
响应于执行到所述中间代码中的第二调用指令,跳转到所述补丁文件的第三函数,所述第三函数用于对所述第二函数进行更新;
响应于完成所述第三函数的执行,按照所述第二调用指令的返回地址,返回所述中间代码;
按照所述中间代码的指令,从所述预留空间中恢复所述第一函数的表地址和所述第一调用指令的返回地址;
按照所述第一调用指令的返回地址,返回所述第一函数。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取所述补丁文件,并按照所述补丁文件获取所述第二函数的地址;
根据所述第二函数的地址,在所述第二函数中添加用于跳转到所述中间代码的指令,作为所述第二函数的第一条指令。
3.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述返回所述第一函数,监测所述第一函数的执行是否出现故障;
当监测到所述第一函数的执行出现故障时,删除所述第二函数中用于跳转到所述中间代码的第一条指令。
4.一种生成补丁文件的方法,其特征在于,所述方法包括:
获取OBJ格式的补丁文件,并根据所述OBJ格式的补丁文件生成PAT格式的补丁文件;
其中,所述PAT格式的补丁文件包括第三函数、中间代码和预留空间;
所述第三函数用于对第二函数进行更新,所述第二函数为第一函数的调用对象;
所述中间代码用于在所述第二函数跳转到所述中间代码时保存所述第一函数的表地址和所述第一调用指令的返回地址到所述预留空间以及在所述第三函数返回所述中间代码时从所述预留空间恢复所述第一函数的表地址和所述第一调用指令的返回地址,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址,所述第一调用指令为所述第一函数中用于调用所述第二函数的指令;
所述预留空间用于在所述中间代码调用所述第三函数的过程中存储所述第一函数的表地址和所述第一调用指令的返回地址。
5.根据权利要求4所述的方法,其特征在于,所述根据所述OBJ格式的补丁文件生成PAT格式的补丁文件,包括:
对所述OBJ格式的补丁文件进行所述第三函数的重定位,并在所述OBJ格式的补丁文件中添加所述预留空间。
6.一种补丁处理设备,其特征在于,所述设备包括:
第一跳转单元,用于响应于执行到第一函数中的第一调用指令,跳转到第二函数;
第二跳转单元,用于响应于执行到所述第二函数的第一条指令,跳转到补丁文件的中间代码;
保存单元,用于按照所述中间代码的指令,将所述第一函数的表地址和所述第一调用指令的返回地址保存到所述补丁文件的预留空间,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址;
第三跳转单元,用于响应于执行到所述中间代码中的第二调用指令,跳转到所述补丁文件的第三函数,所述第三函数用于对所述第二函数进行更新;
第一返回单元,用于响应于完成所述第三函数的执行,按照所述第二调用指令的返回地址,返回所述中间代码;
恢复单元,用于按照所述中间代码的指令,从所述预留空间中恢复所述第一函数的表地址和所述第一调用指令的返回地址;
第二返回单元,用于按照所述第一调用指令的返回地址,返回所述第一函数。
7.根据权利要求6所述的设备,其特征在于,还包括:
第一获取单元,用于获取所述补丁文件;
第二获取单元,用于按照所述补丁文件获取所述第二函数的地址;
添加单元,用于根据所述第二函数的地址,在所述第二函数中添加用于跳转到所述中间代码的指令,作为所述第二函数的第一条指令。
8.根据权利要求6所述的设备,其特征在于,还包括:
监测单元,用于响应于所述返回所述第一函数,监测所述第一函数的执行是否出现故障;
删除单元,用于当监测到所述第一函数的执行出现故障时,删除所述第二函数中用于跳转到所述中间代码的第一条指令。
9.一种生成补丁文件的设备,其特征在于,所述设备包括:
获取单元,用于获取OBJ格式的补丁文件;
生成单元,用于根据所述OBJ格式的补丁文件生成PAT格式的补丁文件;
其中,所述PAT格式的补丁文件包括第三函数、中间代码和预留空间;
所述第三函数用于对第二函数进行更新,所述第二函数为第一函数的调用对象;
所述中间代码用于在所述第二函数跳转到所述中间代码时保存所述第一函数的表地址和所述第一调用指令的返回地址到所述预留空间以及在所述第三函数返回所述中间代码时从所述预留空间恢复所述第一函数的表地址和所述第一调用指令的返回地址,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址,所述第一调用指令为所述第一函数中用于调用所述第二函数的指令;
所述预留空间用于在所述中间代码调用所述第三函数的过程中存储所述第一函数的表地址和所述第一调用指令的返回地址。
10.根据权利要求9所述的设备,其特征在于,所述生成单元包括:
重定位子单元,用于对所述OBJ格式的补丁文件进行所述第三函数的重定位;
添加子单元,用于在所述OBJ格式的补丁文件中添加所述预留空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510934339.3A CN105573788B (zh) | 2015-12-15 | 2015-12-15 | 补丁处理的方法和设备以及生成补丁的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510934339.3A CN105573788B (zh) | 2015-12-15 | 2015-12-15 | 补丁处理的方法和设备以及生成补丁的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105573788A true CN105573788A (zh) | 2016-05-11 |
CN105573788B CN105573788B (zh) | 2019-02-26 |
Family
ID=55883961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510934339.3A Active CN105573788B (zh) | 2015-12-15 | 2015-12-15 | 补丁处理的方法和设备以及生成补丁的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105573788B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095416A (zh) * | 2016-06-01 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 一种在应用程序中的跳转处理方法、装置及智能终端 |
CN107357622A (zh) * | 2017-07-17 | 2017-11-17 | 迈普通信技术股份有限公司 | 热补丁实现方法及通信设备 |
CN109766145A (zh) * | 2019-01-22 | 2019-05-17 | 杭州云缔盟科技有限公司 | 一种Windows下通过HOOK技术实现函数热补丁的方法 |
CN110554998A (zh) * | 2018-03-30 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 一种通过替换函数内部指令的钩子方法、装置、终端及存储介质 |
CN111381905A (zh) * | 2018-12-27 | 2020-07-07 | 北京华为数字技术有限公司 | 一种程序处理方法、装置及设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1475909A (zh) * | 2002-08-16 | 2004-02-18 | 华为技术有限公司 | 一种嵌入式***软件补丁的实现和控制方法 |
JP2010134644A (ja) * | 2008-12-03 | 2010-06-17 | Dainippon Printing Co Ltd | Icカードおよびパッチ実行方法 |
CN101799763A (zh) * | 2009-02-10 | 2010-08-11 | 华为技术有限公司 | 内核在线补丁的方法、装置和*** |
CN103019787A (zh) * | 2012-12-14 | 2013-04-03 | 华为技术有限公司 | 函数调用关系确定方法、热补丁升级方法及装置 |
CN103197942A (zh) * | 2013-03-18 | 2013-07-10 | 华为技术有限公司 | 一种补丁的生成方法、打补丁的方法及装置 |
CN103309683A (zh) * | 2012-03-07 | 2013-09-18 | 京信通信***(中国)有限公司 | 硬件设备的软件补丁嵌入方法及装置 |
CN104125101A (zh) * | 2014-08-12 | 2014-10-29 | 烽火通信科技股份有限公司 | 通信***网元使用热补丁批量升级所属业务单盘的方法 |
CN104461625A (zh) * | 2014-12-04 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 一种热补丁实现方法和*** |
-
2015
- 2015-12-15 CN CN201510934339.3A patent/CN105573788B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1475909A (zh) * | 2002-08-16 | 2004-02-18 | 华为技术有限公司 | 一种嵌入式***软件补丁的实现和控制方法 |
JP2010134644A (ja) * | 2008-12-03 | 2010-06-17 | Dainippon Printing Co Ltd | Icカードおよびパッチ実行方法 |
CN101799763A (zh) * | 2009-02-10 | 2010-08-11 | 华为技术有限公司 | 内核在线补丁的方法、装置和*** |
CN103309683A (zh) * | 2012-03-07 | 2013-09-18 | 京信通信***(中国)有限公司 | 硬件设备的软件补丁嵌入方法及装置 |
CN103019787A (zh) * | 2012-12-14 | 2013-04-03 | 华为技术有限公司 | 函数调用关系确定方法、热补丁升级方法及装置 |
CN103197942A (zh) * | 2013-03-18 | 2013-07-10 | 华为技术有限公司 | 一种补丁的生成方法、打补丁的方法及装置 |
CN104125101A (zh) * | 2014-08-12 | 2014-10-29 | 烽火通信科技股份有限公司 | 通信***网元使用热补丁批量升级所属业务单盘的方法 |
CN104461625A (zh) * | 2014-12-04 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 一种热补丁实现方法和*** |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106095416A (zh) * | 2016-06-01 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 一种在应用程序中的跳转处理方法、装置及智能终端 |
CN107357622A (zh) * | 2017-07-17 | 2017-11-17 | 迈普通信技术股份有限公司 | 热补丁实现方法及通信设备 |
CN110554998A (zh) * | 2018-03-30 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 一种通过替换函数内部指令的钩子方法、装置、终端及存储介质 |
CN110554998B (zh) * | 2018-03-30 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 一种通过替换函数内部指令的钩子方法、装置、终端及存储介质 |
CN111381905A (zh) * | 2018-12-27 | 2020-07-07 | 北京华为数字技术有限公司 | 一种程序处理方法、装置及设备 |
CN111381905B (zh) * | 2018-12-27 | 2023-07-18 | 北京华为数字技术有限公司 | 一种程序处理方法、装置及设备 |
CN109766145A (zh) * | 2019-01-22 | 2019-05-17 | 杭州云缔盟科技有限公司 | 一种Windows下通过HOOK技术实现函数热补丁的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105573788B (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105573788A (zh) | 补丁处理的方法和设备以及生成补丁的方法和设备 | |
US8726262B2 (en) | Firmware update system and information apparatus, and program | |
CN102567128B (zh) | ***复位 | |
CN103473067A (zh) | 嵌入式Linux分区与数据还原方法、***及***开发方法 | |
CN103577567A (zh) | 一种Android***卸载应用删除垃圾文件的方法 | |
CN106970856B (zh) | 对数据进行备份、恢复及挂载的数据管理***及方法 | |
US7818622B2 (en) | Method for recovering data processing system failures | |
CN107924397B (zh) | 一种文件编辑方法和文件编辑器 | |
CN103677870A (zh) | ***升级方法及采用该方法升级的*** | |
CN113744064B (zh) | 在区块链节点中执行交易的方法及装置 | |
CN109324918A (zh) | 应用程序异常的处理方法及装置、终端及存储介质 | |
CN104969181A (zh) | 损坏的驱动器变量记录的替换 | |
CN105867962A (zh) | ***升级的方法和装置 | |
EP2966572B1 (en) | Database device, program, and data processing method | |
CN112182010A (zh) | 脏页刷新方法和装置、存储介质和电子设备 | |
CN113050965A (zh) | 一种嵌入式***升级方法、装置、设备及介质 | |
CN106055372A (zh) | 一种卸载应用程序的方法和装置 | |
CN110633096A (zh) | 节点控制方法及装置、版本控制方法及装置、分布式*** | |
CN106201570A (zh) | 一种应用程序免安装运行方法及装置 | |
CN108664255B (zh) | 一种软件升级方法及装置 | |
CN105550066A (zh) | 文件***崩溃的解决方法及*** | |
CN103019773A (zh) | ***升级掉电保护方法、***及移动终端 | |
CN105830067A (zh) | 一种文件信息处理方法、装置及文件处理设备、*** | |
CN111046003A (zh) | 一种土壤侵蚀因子数据的更新方法、装置和电子设备 | |
CN110618886A (zh) | 一种版本回退的方法、移动终端及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211229 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: Super fusion Digital Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |