CN104424037A - 一种动态补丁函数的方法及装置 - Google Patents

一种动态补丁函数的方法及装置 Download PDF

Info

Publication number
CN104424037A
CN104424037A CN201310385256.4A CN201310385256A CN104424037A CN 104424037 A CN104424037 A CN 104424037A CN 201310385256 A CN201310385256 A CN 201310385256A CN 104424037 A CN104424037 A CN 104424037A
Authority
CN
China
Prior art keywords
task
patch function
instruction
bar
long jump
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
Application number
CN201310385256.4A
Other languages
English (en)
Other versions
CN104424037B (zh
Inventor
尹峰
朱明星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201310385256.4A priority Critical patent/CN104424037B/zh
Priority to RU2016109180A priority patent/RU2642362C2/ru
Priority to PCT/CN2014/080001 priority patent/WO2015027732A1/zh
Priority to US14/914,344 priority patent/US9483254B2/en
Priority to EP14840123.5A priority patent/EP3040854B1/en
Publication of CN104424037A publication Critical patent/CN104424037A/zh
Application granted granted Critical
Publication of CN104424037B publication Critical patent/CN104424037B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种动态补丁函数的方法及装置,其中,该方法包括:根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令,其中,N为大于等于3的整数;在当前任务退出运行时,将起始指令开始处的N条原有指令修改为长跳转指令,以动态补丁函数。通过运用本发明,在任务得到运行时根据需要先将已修改的被补丁函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令,在任务退出运行时再将起始指令开始处的N条原有指令修改为长跳转指令,完成了补丁函数的替换,实现函数的动态补丁,解决了在被补丁函数的起始指令被修改成长跳转指令后,修改后的***可能无法正常运行的问题。

Description

一种动态补丁函数的方法及装置
技术领域
本发明涉及通讯领域,特别是涉及一种动态补丁函数的方法及装置。 
背景技术
软件补丁一般是为了修改现有软件***某些功能或纠正现有软件***某些故障而发布的独立的软件单元。软件动态补丁升级技术能在不影响***正常运行的情况下完成对***功能或故障的修复,一般是将现有***中正在运行的函数替换成补丁函数,从而改变了函数的功能。 
在嵌入式***中,动态补丁升级的技术虽然有多种实现方案,总结起来主要包括以下几个关键步骤: 
1、在后台(一般是个人计算机)重新编写、编译补丁函数funcA,生成补丁文件fileB。 
2、将补丁文件fileB下载到前台目标机中。 
3、前台目标机中升级服务模块解析补丁文件,获取补丁函数funcA和被补丁函数funcC在内存中的地址。 
4、修改被补丁函数funcC首指令为跳转指令,跳转到补丁函数funcA。 
这样,调用函数funcC时,由于funcC的起始指令是一个跳转指令,于是直接跳转到函数funcA中去执行,返回时直接返回到调用函数funcC的下一条指令处,从而达到函数funcA取代函数funcC的目的。 
如果补丁函数funcA和被补丁函数funcC在内存中的相对地址较小位于短跳转地址范围内,使用短跳转就能实现动态补丁升级。但是随着软件规模的不断增大,当版本的映像文件的代码段和数据段的大小超过短跳转地址范围时, 补丁函数和被补丁函数在内存中的相对距离也超过短跳转地址范围时,使用短跳转就无法实现了。 
现有技术长跳转指令至少要用三条指令来完成,如果被补丁函数的起始指令被修改成长跳转指令,也就至少要修改从被补丁函数起始指令开始处的三条指令,就会出现如下几种情况: 
1.正好有任务A的程序计数器(Program Counter,简称为PC)指针位于被补丁函数的起始第二条或第三条指令处,则当任务A再次得到调度运行时将会产生不可预知的后果。2.任务B的PC指针位于被补丁函数的起始第一条指令处,则任务B再次得到调度运行时能正常执行补丁函数。3.任务C的PC指针位于被补丁函数的未被修改的指令处,则任务C再次得到调度运行时能正常执行被补丁函数。 
基于上述过程可以看出,现有技术在被补丁函数的起始指令被修改成长跳转指令后,没有一种能够保证修改后的***正常运行的方法。 
发明内容
本发明提供了一种动态补丁函数的方法及装置,用以解决现有技术在被补丁函数的起始指令被修改成长跳转指令后,修改后的***可能无法正常运行的问题。 
为解决上述技术问题,一方面,本发明提供一种动态补丁函数的方法,包括:根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令,其中,所述N为大于等于3的整数;在当前任务退出运行时,将所述起始指令开始处的N条所述原有指令修改为长跳转指令,以动态补丁函数。 
进一步,根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令之前,还包括:历遍***中所有任务,以确定待修改型任务,其中,所述待修改型任务为PC指针位于 所述被补丁函数起始指令处的N条指令的任务,所述N条指令的位置用于记录已修改的所述被补丁函数的长跳转指令;对所述待修改型任务进行标记,以确定当前所述所有任务的类型。 
进一步,对所述待修改型任务进行标记之后,还包括:当要再次运行所述所有任务中的任务的情况下,判断当前要运行的任务是否被标记;在当前要运行的任务被标记的情况下,将所述被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令。 
进一步,所述方法还包括:当即将退出当前运行的任务时,判断所述当前任务是否为被标记的任务;在所述当前任务为所述被标记的任务的情况下,则再判断该任务的PC指针是否仍位于所述被补丁函数起始指令处的N条指令范围内;如果是,则将所述被补丁函数起始指令处的N条原有指令恢复成所述被补丁函数的长跳转指令;如果否,则先取消即将退出运行的当前任务的标记,再将所述被补丁函数起始指令处的N条原有指令恢复成所述被补丁函数的长跳转指令;在所述当前任务不是所述被标记的任务的情况下,则跳转至即将运行的任务。。 
进一步,遍历***中所有正在运行的任务以确定待修改型任务之后,还包括:修改所述被补丁函数起始指令处的N条原有指令为长跳转指令,并备份原有指令。 
另一方面,本发明还提供一种动态补丁函数的装置,包括:恢复模块,用于根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令,其中,所述N为大于等于3的整数;第一修改模块,用于在当前任务退出运行的情况下,将所述起始指令开始处的N条所述原有指令修改为长跳转指令,以动态补丁函数。 
进一步,所述装置还包括:确定模块,用于遍历***中所有任务,以确定待修改型任务,其中,所述待修改型任务为PC指针位于所述被补丁函数起始指令处的N条指令的任务,所述N条指令的位置用于记录已修改的所述被补 丁函数的长跳转指令;标记模块,用于对所述待修改型任务进行标记,以确定所述所有任务的类型。 
进一步,所述装置还包括:第一判断模块,用于当要再次运行所述所有任务中的任务的情况下,判断当前要运行的任务是否被标记;所述恢复模块,还用于在当前要运行的任务被标记的情况下,将所述被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令。 
进一步,所述装置还包括:第二判断模块,用于在即将退出当前运行的任务时,判断所述当前任务是否为被标记的任务;还用于在所述当前任务为所述被标记的任务的情况下,再判断该任务的PC指针是否仍位于所述被补丁函数起始指令处的N条指令范围内;所述恢复模块,还用于在所述PC指针位于所述N条指令范围内的情况下,将所述被补丁函数起始指令处的N条原有指令恢复成所述被补丁函数的长跳转指令;所述标记模块,还用于在所述PC指针不再位于所述N条指令范围内的情况下,取消即将退出运行的当前任务的标记,再触发所述恢复模块将所述被补丁函数起始指令处的N条原有指令恢复成所述被补丁函数的长跳转指令;跳转模块,用于在所述当前任务不是所述被标记的任务的情况下,则跳转至即将运行的任务。 
进一步,所述装置还包括:第二修改模块,用于修改所述被补丁函数起始指令处的N条原有指令为长跳转指令,并备份原有指令。 
本发明先将已修改的被补丁函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令,在当前任务退出运行时,再将起始指令开始处的N条原有指令修改为长跳转指令,就完成了补丁函数的替换,实现函数的动态补丁,解决了在被补丁函数的起始指令被修改成长跳转指令后,修改后的***可能无法正常运行的问题。 
附图说明
图1是本发明实施例中动态补丁函数的方法的流程图; 
图2是本发明实施例中动态补丁函数的装置的第一种结构示意图; 
图3是本发明实施例中动态补丁函数的装置的第二种结构示意图; 
图4是本发明实施例中动态补丁函数的装置的第三种结构示意图; 
图5是本发明实施例中动态补丁函数的装置的第四种结构示意图; 
图6是本发明实施例中动态补丁函数的装置的又一种优选结构示意图; 
图7是本发明优选实施例中动态补丁函数初始化流程图; 
图8是本发明优选实施例中任务A切换到任务B的钩子函数处理流程图。 
具体实施方式
为了解决现有技术在被补丁函数的起始指令被修改成长跳转指令后,修改后的***可能无法正常运行的问题,本发明提供了一种动态补丁函数的方法及装置,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。 
本实施例提供了一种动态补丁函数的方法,该方法的流程如图1所示,包括步骤S102至步骤S104。 
步骤S102,根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令,其中,N为大于等于3的整数。 
实施时,N的取值是根据实际的长跳转指令的条数来确定的,在调用当前任务时,将被补丁函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令,原程序就可以照常执行。 
步骤S104,在当前任务退出运行时,将起始指令开始处的N条原有指令修改为长跳转指令,以动态补丁函数。 
将起始指令开始处的N条原有指令再次修改为长跳转指令后,就完成了补丁函数的替换,实现函数的动态补丁,解决了在被补丁函数的起始指令被修改成长跳转指令后,修改后的***可能无法正常运行的问题。 
根据当前运行任务的预先标记,将已修改的被补丁函数起始指令处的N条 长跳转指令恢复成被补丁函数的原有指令之前,可以先遍历***中所有任务,以确定哪些任务为待修改型任务,其中,待修改型任务为PC指针位于被补丁函数起始指令处的N条指令的任务;在确定了待修改型任务后,对待修改型任务进行标记,以方便后续过程中对该类任务的识别。例如,将待修改型任务标记为1,则后续实施过程中,只要检测到被标记1的任务就可以确定为待修改型任务。 
在遍历***中所有正在运行的任务以确定待修改型任务之后,还可以直接修改被补丁函数起始指令处的N条原有指令为长跳转指令,并备份原有指令,完成补丁函数的修改;再注册任务切换钩子函数,生成的任务切换钩子函数可以在发生任务切换时***作***调用,通过调用任务切换钩子函数来根据需要临时恢复补丁函数的原有指令,此处对任务切换钩子函数不做具体说明,本领域技术人员能够根据本实施例公开的内容设计该函数。 
实施过程中,当要再次运行所有任务中的任务的情况下,判断当前要运行的任务是否被标记。在当前要运行的任务被标记的情况下,将被补丁函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令。如果并未被标记,则正常运行该程序。 
当即将退出当前运行的任务时,判断当前任务是否为被标记的任务;在当前任务为被标记的任务的情况下,再判断该任务的PC指针是否仍位于被补丁函数起始指令处的N条指令范围内;如果是,说明下次再运行该任务时仍然会出现问题,则将被补丁函数起始指令处的N条原有指令恢复成被补丁函数的长跳转指令;如果否,说明下次再运行该任务时不会出现问题,则先取消即将退出运行的当前任务的标记,再将被补丁函数起始指令处的N条原有指令恢复成被补丁函数的长跳转指令;在当前任务不是被标记的任务的情况下,则跳转至即将运行的任务。 
本实施例还提供了一种动态补丁函数的装置,该装置的结构示意如图2所示,包括:恢复模块10,用于根据当前运行任务的预先标记将已修改的被补丁 函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令,其中,N为大于等于3的整数;第一修改模块12,与恢复模块10耦合,用于在当前任务退出运行的情况下,将起始指令开始处的N条原有指令修改为长跳转指令,以动态补丁函数。 
图3示出了上述装置的一种优选结构示意图,在图2的基础上,还包括:确定模块14,用于遍历***中所有任务,以确定待修改型任务,其中,待修改型任务为PC指针位于被补丁函数起始指令处的N条指令的任务,N条指令的位置用于记录已修改的被补丁函数的长跳转指令;标记模块16,与确定模块14和恢复模块10耦合,用于对待修改型任务进行标记,以确定当前所有任务的类型。 
图4示出了上述装置的另一种优选结构示意图,在图3的基础上,还包括:第一判断模块20,用于当要再次运行所有任务中的任务的情况下,判断当前要运行的任务是否被标记;恢复模块10,与第一判断模块20耦合,还用于在当前要运行的任务被标记的情况下,将被补丁函数起始指令处的N条长跳转指令恢复成被补丁函数的原有指令。 
图5示出了上述装置的又一种优选结构示意图,在图4的基础上,还包括:第二判断模块22,与标记模块16和恢复模块10耦合,用于在即将退出当前运行的任务时,判断当前任务是否为被标记的任务;还用于在当前任务为被标记的任务的情况下,再判断该任务的PC指针是否仍位于被补丁函数起始指令处的N条指令范围内;恢复模块10,还用于在PC指针位于N条指令范围内的情况下,将被补丁函数起始指令处的N条原有指令恢复成被补丁函数的长跳转指令;标记模块16,还用于在PC指针不再位于N条指令范围内的情况下,取消即将退出运行的当前任务的标记,再触发恢复模块将被补丁函数起始指令处的N条原有指令恢复成被补丁函数的长跳转指令;跳转模块24,与第二判断模块22耦合,用于在当前任务不是被标记的任务的情况下,则跳转至即将运行的任务。 
图6示出了上述装置的又一种优选结构示意图,在图3的基础上,还包括:第二修改模块30,与标记模块16和恢复模块10耦合,用于修改被补丁函数起始指令处的N条原有指令修改为长跳转指令,并备份原有指令。 
优选实施例 
针对现有技术可以看出,使用长跳转指令时,只需要避免上述PC指针位于被补丁函数起始指令处的N条指令范围内的情况即可。本实施例提供了一种动态补丁函数的方法,其中,长跳转指令为三条,该方法能够在上述第一种情况中任务A再次得到调度运行时,将已修改的被补丁函数起始指令处的三条长跳转指令临时恢复成原有的被补丁函数的指令,等任务A退出调度时再把被补丁函数起始指令开始处的三条指令改成长跳转指令。该方法可以应用于对嵌入式***进行动态补丁升级,尤其是补丁函数和补丁函数的相对地址超过短跳转地址范围的情况。 
在进行动态补丁升级时,其初始化流程如图7所示,具体步骤如下(步骤S702至步骤S712): 
步骤S702,锁中断,禁止任务切换。 
步骤S704,遍历***中所有正在运行的任务,判断任务的PC指针是否位于被补丁函数开头的三条指令范围内。如果是,则执行步骤S706,否则执行步骤S708。 
步骤S706,对于PC指针位于被补丁函数起始指令的三条指令处的任务,在其任务的任务控制块中设置一个标志1。这个标志1用来标识任务得到调度后,运行时需要将被补丁函数起始长跳转指令恢复成原有指令。 
步骤S708,修改被补丁函数起始指令开始的三条指令为长跳转指令,并备份原有指令。 
步骤S710,注册任务切换钩子函数,这样在发生任务切换时,***会调用到这个钩子函数。 
步骤S712,开中断,允许任务切换。 
上述过程为***中当前运行任务进行标记,经过上述的标记,使得对需要恢复为原始指令的任务的区分更加方便。 
当发生任务切换时,例如即将从当前运行的任务A切换到即将运行的任务B,任务切换钩子函数的具体实现流程如图8所示,包括如下步骤(步骤S802至步骤S816): 
步骤S802,锁中断,禁止任务切换。 
步骤S804,判断任务A的任务控制块中是否有标志1。如果是,说明任务A前面运行时需要把被补丁函数起始指令处的三条指令恢复成原有指令,则执行步骤S806,否则,说明被补丁函数起始指令处的指令为长跳转指令,执行步骤S812。 
步骤S806,判断任务A的PC指针是否仍然位于被补丁函数起始指令处三条指令范围内。如果是,说明任务A以后再次得到运行时,仍然需要恢复被补丁函数起始指令为原有被补丁函数指令,则执行步骤S810,否则,说明任务A再次得到调度运行时无需恢复被补丁函数起始指令为原有被补丁函数指令,执行步骤S808。 
步骤S808,此时清除任务A的任务控制块中的标志1。 
步骤S810,修改被补丁函数起始指令处的三条指令为长跳转指令,并备份原有指令。至此,结束运行任务A的过程执行完毕,接下来,是即将开始运行的任务B的流程。 
步骤S812,判断任务B的任务控制块中是否有标志1。如果是,说明任务B是待修改型的任务,则执行步骤S814,否则,执行步骤S816。 
步骤S814,将被补丁函数的起始指令处的长跳转指令恢复成原有指令。 
步骤S816,开中断,允许任务切换。 
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。 

Claims (10)

1.一种动态补丁函数的方法,其特征在于,包括:
根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令,其中,所述N为大于等于3的整数;
在当前任务退出运行时,将所述起始指令开始处的N条所述原有指令修改为长跳转指令,以动态补丁函数。
2.如权利要求1所述的方法,其特征在于,根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令之前,还包括:
遍历***中所有任务,以确定待修改型任务,其中,所述待修改型任务为程序计数器PC指针位于所述被补丁函数起始指令处的N条指令的任务,所述N条指令的位置用于记录已修改的所述被补丁函数的长跳转指令;
对所述待修改型任务进行标记,以确定所述所有任务的类型。
3.如权利要求2所述的方法,其特征在于,对所述待修改型任务进行标记之后,还包括:
当要再次运行所述所有任务中的任务的情况下,判断当前要运行的任务是否被标记;
在当前要运行的任务被标记的情况下,将所述被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
当即将退出当前运行的任务时,判断所述当前任务是否为被标记的任务;
在所述当前任务为所述被标记的任务的情况下,则再判断该任务的PC指针是否仍位于所述被补丁函数起始指令处的N条指令范围内;
如果是,则将所述被补丁函数起始指令处的N条原有指令恢复成所述被补丁函数的长跳转指令;
如果否,则先取消即将退出运行的当前任务的标记,再将所述被补丁函数起始指令处的N条原有指令恢复成所述被补丁函数的长跳转指令;
在所述当前任务不是所述被标记的任务的情况下,则跳转至即将运行的任务。
5.如权利要求2所述的方法,其特征在于,遍历***中所有任务以确定待修改型任务之后,还包括:
修改所述被补丁函数起始指令处的N条原有指令为长跳转指令,并备份原有指令。
6.一种动态补丁函数的装置,其特征在于,包括:
恢复模块,用于根据当前运行任务的预先标记将已修改的被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令,其中,所述N为大于等于3的整数;
第一修改模块,用于在当前任务退出运行的情况下,将所述起始指令开始处的N条所述原有指令修改为长跳转指令,以动态补丁函数。
7.如权利要求6所述的装置,其特征在于,还包括:
确定模块,用于遍历***中所有任务,以确定待修改型任务,其中,所述待修改型任务为程序计数器PC指针位于所述被补丁函数起始指令处的N条指令的任务,所述N条指令的位置用于记录已修改的所述被补丁函数的长跳转指令;
标记模块,用于对所述待修改型任务进行标记,以确定所述所有任务的类型。
8.如权利要求7所述的装置,其特征在于,还包括:
第一判断模块,用于当要再次运行所述所有任务中的任务的情况下,判断当前要运行的任务是否被标记;
所述恢复模块,还用于在当前要运行的任务被标记的情况下,将所述被补丁函数起始指令处的N条长跳转指令恢复成所述被补丁函数的原有指令。
9.如权利要求8所述的装置,其特征在于,还包括:
第二判断模块,用于在即将退出当前运行的任务时,判断所述当前任务是否为被标记的任务;还用于在所述当前任务为所述被标记的任务的情况下,再判断该任务的PC指针是否仍位于所述被补丁函数起始指令处的N条指令范围内;
所述恢复模块,还用于在所述PC指针位于所述N条指令范围内的情况下,将所述被补丁函数起始指令处的N条原有指令恢复成所述被补丁函数的长跳转指令;
所述标记模块,还用于在所述PC指针不再位于所述N条指令范围内的情况下,取消即将退出运行的当前任务的标记,再触发所述恢复模块将所述被补丁函数起始指令处的N条原有指令恢复成所述被补丁函数的长跳转指令;
跳转模块,用于在所述当前任务不是所述被标记的任务的情况下,则跳转至即将运行的任务。
10.如权利要求7所述的装置,其特征在于,还包括:
第二修改模块,用于修改所述被补丁函数起始指令处的N条原有指令为长跳转指令,并备份原有指令。
CN201310385256.4A 2013-08-29 2013-08-29 一种动态补丁函数的方法及装置 Active CN104424037B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201310385256.4A CN104424037B (zh) 2013-08-29 2013-08-29 一种动态补丁函数的方法及装置
RU2016109180A RU2642362C2 (ru) 2013-08-29 2014-06-16 Способ, устройство и носитель информации для динамического внесения изменений в функцию
PCT/CN2014/080001 WO2015027732A1 (zh) 2013-08-29 2014-06-16 一种动态补丁函数的方法及装置、存储介质
US14/914,344 US9483254B2 (en) 2013-08-29 2014-06-16 Method, apparatus and storage medium for dynamically patching a function
EP14840123.5A EP3040854B1 (en) 2013-08-29 2014-06-16 Method, apparatus and storage medium for dynamically patching function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310385256.4A CN104424037B (zh) 2013-08-29 2013-08-29 一种动态补丁函数的方法及装置

Publications (2)

Publication Number Publication Date
CN104424037A true CN104424037A (zh) 2015-03-18
CN104424037B CN104424037B (zh) 2018-12-14

Family

ID=52585509

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310385256.4A Active CN104424037B (zh) 2013-08-29 2013-08-29 一种动态补丁函数的方法及装置

Country Status (5)

Country Link
US (1) US9483254B2 (zh)
EP (1) EP3040854B1 (zh)
CN (1) CN104424037B (zh)
RU (1) RU2642362C2 (zh)
WO (1) WO2015027732A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105607937A (zh) * 2015-12-25 2016-05-25 京信通信技术(广州)有限公司 一种热补丁方法及设备
CN106874022A (zh) * 2015-12-11 2017-06-20 中兴通讯股份有限公司 一种热补丁注入方法及装置
CN110262838A (zh) * 2019-06-14 2019-09-20 深圳乐信软件技术有限公司 一种程序崩溃的处理方法、装置、终端及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809018B (zh) * 2015-05-18 2018-01-02 烽火通信科技股份有限公司 一种嵌入式***软件注入热补丁的方法及***
RU2695054C1 (ru) * 2018-06-18 2019-07-18 Общество с ограниченной ответственностью "Аби Продакшн" Детектирование баркодов на изображениях
CN109947414A (zh) * 2019-01-31 2019-06-28 苏州德铂思电子科技有限公司 一种基于Vxworks***的动态钩子函数实现方法
CN111868684A (zh) * 2020-01-17 2020-10-30 深圳市汇顶科技股份有限公司 为芯片打补丁的方法及芯片
CN113434233B (zh) * 2021-06-28 2023-10-24 青岛海尔科技有限公司 界面跳转方法、装置、存储介质及电子装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101004681A (zh) * 2006-12-22 2007-07-25 中兴通讯股份有限公司 嵌入式***动态补丁长跳转的实现方法
US20100146248A1 (en) * 2008-12-04 2010-06-10 Analog Devices, Inc. Methods and apparatus for performing jump operations in a digital processor
CN102722387A (zh) * 2012-05-29 2012-10-10 华为技术有限公司 动态打补丁的方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US6928536B2 (en) 2001-11-29 2005-08-09 Hewlett-Packard Development Company, L.P. Dynamic execution layer interface for replacing instructions requiring unavailable hardware functionality with patch code and caching
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7509636B2 (en) * 2003-12-15 2009-03-24 Microsoft Corporation System and method for updating files utilizing delta compression patching
CN101561764B (zh) * 2009-05-18 2012-05-23 华为技术有限公司 一种多核环境下的补丁方法与补丁装置
CN102156661B (zh) * 2010-02-11 2013-06-12 华为技术有限公司 在线补丁的激活方法、装置及***
CN101794272B (zh) * 2010-03-26 2012-07-25 成都市华为赛门铁克科技有限公司 为共享代码段打补丁的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101004681A (zh) * 2006-12-22 2007-07-25 中兴通讯股份有限公司 嵌入式***动态补丁长跳转的实现方法
US20100146248A1 (en) * 2008-12-04 2010-06-10 Analog Devices, Inc. Methods and apparatus for performing jump operations in a digital processor
CN102722387A (zh) * 2012-05-29 2012-10-10 华为技术有限公司 动态打补丁的方法和装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106874022A (zh) * 2015-12-11 2017-06-20 中兴通讯股份有限公司 一种热补丁注入方法及装置
CN106874022B (zh) * 2015-12-11 2021-06-25 中兴通讯股份有限公司 一种热补丁注入方法及装置
CN105607937A (zh) * 2015-12-25 2016-05-25 京信通信技术(广州)有限公司 一种热补丁方法及设备
CN105607937B (zh) * 2015-12-25 2019-01-18 京信通信***(中国)有限公司 一种热补丁方法及设备
CN110262838A (zh) * 2019-06-14 2019-09-20 深圳乐信软件技术有限公司 一种程序崩溃的处理方法、装置、终端及存储介质

Also Published As

Publication number Publication date
EP3040854A4 (en) 2016-08-03
US20160210142A1 (en) 2016-07-21
WO2015027732A1 (zh) 2015-03-05
EP3040854B1 (en) 2019-05-01
EP3040854A1 (en) 2016-07-06
CN104424037B (zh) 2018-12-14
US9483254B2 (en) 2016-11-01
RU2016109180A (ru) 2017-10-02
RU2642362C2 (ru) 2018-01-24

Similar Documents

Publication Publication Date Title
CN104424037A (zh) 一种动态补丁函数的方法及装置
US8499289B2 (en) Method, device and system for realizing kernel online patching
US11016761B2 (en) Container based application reification
CN100570558C (zh) 一种芯片固件升级方法
WO2016101503A1 (zh) 一种热补丁的实现方法和装置
CN109070345B (zh) 机器人控制器***及方法
TW201512988A (zh) 軟體相容性預先檢測方法與其系統
CN103473067A (zh) 嵌入式Linux分区与数据还原方法、***及***开发方法
CN105468717A (zh) 数据库操作方法和装置
CN102597963B (zh) 集群中的动态副本卷交换
CN104579802A (zh) 一种多路服务器快速故障恢复的方法
CN104503823A (zh) 基于oem操作***的p2v迁移及配置方法
CN107506293B (zh) 一种软件性能数据采集方法和装置
CN110286996B (zh) 容器实例ip切换方法、装置、计算机设备及存储介质
EP3316518B1 (en) Method and device for upgrading virtual network element, and computer storage medium
US20130262532A1 (en) Garbage collection for virtual environments
CN101794272A (zh) 为共享代码段打补丁的方法及装置
CN113051122B (zh) 性能数据获取方法、装置、电子设备和介质
KR101653925B1 (ko) 엔지니어링 장치, 엔지니어링 시스템 및 다운로드 처리 방법
CN113678101A (zh) 信息处理装置、移动体以及信息处理方法
CN111752682A (zh) 一种网络端口资源管理方法、装置及电子设备和存储介质
CN104331308A (zh) 一种pe程序文件加载执行方法
KR20140069936A (ko) 하이퍼바이저 컴퍼넌트를 업그레이드하는 방법 및 그 시스템
CN110347476B (zh) 一种信息化***的耗时任务管理方法和装置
CN109976792B (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