CN102609241B - 热补丁方法及装置 - Google Patents

热补丁方法及装置 Download PDF

Info

Publication number
CN102609241B
CN102609241B CN201210018144.0A CN201210018144A CN102609241B CN 102609241 B CN102609241 B CN 102609241B CN 201210018144 A CN201210018144 A CN 201210018144A CN 102609241 B CN102609241 B CN 102609241B
Authority
CN
China
Prior art keywords
instruction
patch
function
index value
patch function
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.)
Active
Application number
CN201210018144.0A
Other languages
English (en)
Other versions
CN102609241A (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 CN201210018144.0A priority Critical patent/CN102609241B/zh
Publication of CN102609241A publication Critical patent/CN102609241A/zh
Application granted granted Critical
Publication of CN102609241B publication Critical patent/CN102609241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种热补丁方法及装置,该方法包括:确定调用指令与补丁函数之间的距离超过短跳转指令能够跳转的范围;将调用指令替换为带索引值的非法指令,其中索引值对应于补丁函数。本发明利用指令异常机制,将调用指令替换成带索引值的非法指令,并将该索引值对应于补丁函数,这样,当目标机执行与该非法指令对应的异常处理函数并返回时可以直接执行补丁函数,从而用单条指令实现了长跳转功能,避免了程序中断的问题。

Description

热补丁方法及装置
技术领域
本发明涉及通信领域,具体而言,涉及一种热补丁方法及装置。
背景技术
补丁技术的基本原理是将现有***中正在运行的函数替换成补丁函数,从而改变了原函数的功能,以达到修改***功能,或纠正现有***故障的目的。目前公开的补丁技术有多种方案,比较典型的技术方案有以下两种:
补丁方案1
1.将补丁函数funcA重新编译,生成可重定位的目标文件fileB。
2.在目标机中解析目标文件fileB,提取出代码段、data段、bss段到内存中。
3.分析目标机中的内存符号表,解析出被补丁函数funcC的地址。
4.修改被补丁函数funcC的首指令为跳转指令,跳转到补丁函数funcA。
这样,假设当被补丁函数funcC被调用时,由于funcC的起始指令是一个跳转指令,于是直接跳转到补丁函数funcA中去执行,返回时直接返回到被补丁函数funcC的下一条指令处,从而达到补丁函数funcA取代被补丁函数funcC的目的。
补丁方案2
1.将需要补丁函数funcA重新编译,生成可重定位的目标文件fileB。
2.解析目标文件fileB,解析出补丁函数funcA的位置、尺寸等信息以及funcB引用外部符号的信息,生成补丁信息infoE。
3.将补丁信息infoE和可重定位的目标文件fileB合在一起生成一个新的补丁文件fileF。
4.在目标机中解析补丁文件fileF,提取目标文件fileB的text段、data段、bss段到内存中。
5.在目标机种解析补丁文件fileF,提取补丁信息infoE,根据补丁信息infoE所记录的被补丁函数funcD名称在内存符号表中进行检索,找到被补丁函数funcD的地址。
6.修改被补丁函数funcD首指令为跳转指令,跳转到补丁函数funcA。
补丁函数的具体执行过程和补丁方案1完全一样,不再赘述。
目前上述两个方案均存在如下缺陷,即无法支持需要进行长跳转的函数,至少需要两条指令实现长跳转,可能导致程序中断,甚至***故障。
发明内容
本发明提供了一种热补丁方法及装置,以至少解决相关技术中,补丁技术实现从被补丁函数重定位到补丁函数的长跳转至少需要两条指令,可能导致程序中断,甚至***故障的问题。
根据本发明的一个方面,提供了一种热补丁方法,包括:确定调用指令与补丁函数之间的距离超过短跳转指令能够跳转的范围;将调用指令替换为带索引值的非法指令,其中索引值对应于补丁函数。
优选地,将调用指令替换为带索引值的非法指令包括:确定用于执行替换操作的指令属于长跳转指令;获取用于执行替换操作的指令中的用于控制PC指针转移过程的指令;将用于控制PC指针转移过程的指令替换为带索引值的非法指令。
优选地,获取用于执行替换操作的指令中的用于控制PC指针转移过程的指令包括:在用于执行替换操作的指令中搜索长跳转指令,得到用于控制PC指针转移过程的指令。
优选地,在将调用指令替换为带索引值的非法指令之前,上述方法还包括:确定被补丁函数是静态函数;确定被补丁函数所属的文件。
优选地,确定被补丁函数所属的文件包括:在映像文件的符号表中查找被补丁函数所属的文件的符号;遍历符号表,查找到与被补丁函数名称相同的符号;记录查找到的符号在符号表中的下标。
优选地,在将调用指令替换为带索引值的非法指令之后,上述方法还包括:目标机在执行与非法指令对应的异常处理函数的过程中,根据索引值获取补丁函数的地址;目标机将异常处理函数的返回地址修改为补丁函数地址。
根据本发明的另一方面,提供了一种热补丁装置,包括:第一确定模块,用于确定调用指令与补丁函数之间的距离超过短跳转指令能够跳转的范围;替换模块,用于将调用指令替换为带索引值的非法指令,其中索引值对应于补丁函数。
优选地,替换模块包括:确定子模块,用于确定用于执行替换操作的指令属于长跳转指令;获取子模块,用于获取用于执行替换操作的指令中的用于控制PC指针转移过程的指令;替换子模块,用于将用于控制PC指针转移过程的指令替换为带索引值的非法指令。
优选地,获取子模块包括:搜索单元,用于在用于执行替换操作的指令中搜索长跳转指令,得到用于控制PC指针转移过程的指令。
优选地,上述装置还包括:第二确定模块,用于确定被补丁函数是静态函数;第三确定模块,用于确定被补丁函数所属的文件。
本发明利用指令异常机制,将需要执行的长跳转指令替换成带索引值的非法指令,并将该索引值对应于补丁函数,这样,当目标机执行与该非法指令对应的异常处理函数并返回时可以直接执行补丁函数,从而用单条指令实现了长跳转功能,避免了程序中断的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的热补丁方法的流程图;
图2是根据本发明优选实施例一的热补丁技术的流程图;
图3是根据本发明优选实施例二的热补丁技术的流程图;
图4是根据本发明优选实施例三的对静态函数进行补丁的流程图;
图5是根据本发明实施例的热补丁装置的结构框图;
图6是根据本发明优选实施例的热补丁装置的结构框图一;
图7是根据本发明优选实施例的热补丁装置的结构框图二;
图8是根据本发明优选实施例的热补丁装置的结构框图三;
图9是根据本发明优选实施例的热补丁装置的结构框图四。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
本发明提供了一种热补丁方法,图1是根据本发明实施例的热补丁方法的流程图,如图1所示,包括如下的步骤S102至步骤S104。
步骤S102,确定调用指令与补丁函数之间的距离超过短跳转指令能够跳转的范围。
步骤S104,将调用指令替换为带索引值的非法指令,其中索引值对应于补丁函数。
相关技术中,补丁技术实现从被补丁函数重定位到补丁函数的长跳转至少需要两条指令,可能导致程序中断,甚至***故障。例如,从函数A跳转到函数B(此处指长跳转),现有技术中至少使用两条指令实现该跳转过程,其中,一条或一条以上指令实现函数B地址的获取,一条指令实现跳转。在热补丁技术中,这样很可能会造成***崩溃,具体原因如下:需要在被补丁函数首地址处至少修改两条指令,如指令INST1和指令INST2,而在修改过程中,很有可能某个任务TASK刚刚执行完指令INST1,还未执行到指令INST2,就被补丁任务打断。如果此时补丁任务修改了指令INST1和指令INST2为跳转指令,当任务TASK继续运行时,由于指令INST2已经被修改,且与刚刚执行的指令INST1完全无法匹配,就会导致CPU计算数据错误,进而引起***故障。
本发明实施例中,利用指令异常机制,将需要执行的长跳转指令替换成带索引值的非法指令,并将该索引值对应于补丁函数,这样,当目标机执行与该非法指令对应的异常处理函数并返回时可以直接执行补丁函数,从而用单条指令实现了补丁技术中的长跳转功能,避免了程序中断的问题。
考虑到长跳转指令一般由多条指令组成,前面若干个指令负责获取被调用函数的地址,最后一条指令控制PC指针的转移过程。因此,在修改属于长跳转指令的用于执行替换操作的指令时,关键是找到多条指令的最后一条指令。此指令即为真正需要替换的指令。所以作为本发明的一个优选实施方式,上述步骤S104包括:确定用于执行替换操作的指令属于长跳转指令;获取用于执行替换操作的指令中的用于控制PC指针转移过程的指令;将用于控制PC指针转移过程的指令替换为带索引值的非法指令。本优选实施方式中,获取长跳转指令中用于控制PC指针转移过程的指令,即真正需要替换的指令,这样可以更有针对性的将其替换为带索引值的非法指令。
进一步地,获取用于执行替换操作的指令中的用于控制PC指针转移过程的指令包括:在用于执行替换操作的指令中搜索长跳转指令中的各个指令,得到用于控制PC指针转移过程的指令。上述获取方式简便、准确。
另外,考虑到在目标机的内存符号表中,一般不存在静态符号,所以现有技术中不能对静态函数打补丁。对此,本发明提供了一种不需要借助目标机的内存符号表的热补丁方法。
现在嵌入式***中流行的可执行文件格式主要是Linux的ELF。ELF文件标准中将***采用的ELF格式的文件分为四种:可重定位文件、可执行文件、共享目标文件和核心转储文件。本发明所提供的优选的热补丁方法只涉及到可重定位文件和可执行文件,就实现了补丁函数的定位。其中,可重定位文件中包含的信息有text段、bss段、data段、重定位段、字符表、符号表、debug段等;可执行文件中包含的信息有text段、bss段、data段、字符表、符号表、debug段等。
上述优选的热补丁方法的基本原理如下:分析目标机所使用的可执行文件,解析出所有跳转到被补丁函数的位置,将所有跳转到被补丁函数的指令调整为跳转到补丁函数处,这样即可实现补丁的安装过程。
在可执行文件中,存在一个名为.symtab的符号表段,与目标机中的内存符号表不同,.symtab段包含所有的全局函数符号和局部函数符号。但由于可能存在多个静态函数的符号名称完全相同,所以在实现对静态函数补丁功能时,需要增加对静态函数所在文件的指定,即指定被补丁函数位于哪个文件中。
基于上述优选的热补丁方法以及上述分析,本发明可以通过如下方案解决现有技术中不能对静态函数打补丁的问题。
在图1所示的步骤S104之前,还需要执行如下步骤:确定被补丁函数是静态函数;确定被补丁函数所属的文件。优选地,确定被补丁函数所属的文件包括:在映像文件的符号表中查找被补丁函数所属的文件的符号;遍历符号表,查找到与被补丁函数名称相同的符号;记录查找到的符号在符号表中的下标。利用确定静态函数所属的文件,即可唯一确定一个静态函数。
优选地,在步骤S104之后,上述方法还包括:目标机在执行与非法指令对应的异常处理函数的过程中,根据索引值获取补丁函数的地址;目标机将异常处理函数的返回地址修改为补丁函数地址。
下面将结合实例对本发明实施例的实现过程进行详细描述。
优选实施例一
本发明的热补丁方法主要利用CPU的指令异常机制,将需要执行长跳转的指令替换成带索引值的非法指令,其中,索引值对应补丁函数。当CPU执行调用指令(长跳转指令)时,即执行替换后的非法指令,产生Program异常,在Program异常处理中,根据非法指令的索引值获取补丁函数的地址(实际要跳转的位置),将异常处理返回时所要执行的PC指针修改为获取的补丁函数的地址,从而实现热补丁技术中单条指令的长跳转功能。
图2是根据本发明优选实施例一的热补丁技术的流程图,如图2所示,包括如下的步骤S202至步骤S212。
步骤S202,创建带索引值的非法指令表,建立非法指令与目的地址(补丁函数的地址)的映射关系。
步骤S204,将调用指令修改为带索引值(映射关系)的非法指令,每个索引值对应一个补丁函数。
此处需要确定调用指令本身属于长跳转指令还是短跳转指令。长跳转指令实施较为复杂,这是由于长跳转指令本身一般由多条指令组成,前面若干个指令负责获取被调用函数的地址,最后一条指令控制PC指针的转移过程。在修改长跳转指令时,关键是找到多条长跳转指令的最后一条指令。虽然此指令并不出现在重定位指令列表内,但一般会出现在前面多条指令之后,所以可以在重定位表中根据前面的长跳转指令搜索到最后的这条指令,最后的这条指令即为真正需要替换的指令。如果调用指令本身为短跳转指令,则该指令本身为真正需要替换的指令,且出现在重定位表中,不需要做额外的搜索操作。
步骤S206,当CPU执行带索引值的非法指令时,产生Program异常。
步骤S208,在Program异常处理函数中,根据非法指令索引值获取相应的补丁函数的地址。
步骤S210,将异常返回PC指令地址修改为补丁函数的地址。
步骤S212,CPU从Program异常返回至补丁函数处,直接执行目的地址(即补丁函数处)的指令。
补丁函数执行完毕后,CPU返回到被补丁函数的下一条指令处继续执行。
优选实施例二
图3是根据本发明优选实施例二的热补丁技术的流程图,如图3所示,包括如下的步骤S302至步骤S320。
步骤S302,文本编辑器编写补丁函数A,生成补丁源文件,经过编译器处理后,生成可重定位目标文件B。
步骤S304,判断被补丁函数D是静态函数还是全局函数。如果被补丁函数D是静态函数,则执行步骤S306。如果被补丁函数D是全局函数,则执行步骤S308。
步骤S306,确定被补丁函数D所在的文件G,遍历映像文件C的符号表,查找与文件G对应的符号H,记录其在符号表中的下标symbollndex。如果找到对应的符号H,则执行步骤S310。如果没找到对应的符号H,则执行步骤S312。
步骤S308,遍历映像文件C的符号表,查找与被补丁函数D对应的符号,记录其在符号表中的下标。
步骤S310,遍历映像文件C的符号表中H之后的所有函数类符号。
步骤S312,失败退出。
步骤S314,判断是否找到函数名称为A的符号。若找到,则执行步骤S316。若没找到,则执行步骤S318。
步骤S316,记录该符号在符号表中的索引i。
步骤S318,是否遇到下一个文件名符号。若是,则执行步骤S312,若否,则执行步骤S310。
步骤S320,补丁制作工具遍历映像文件C的重定位表,找到所有和symbollndex相同的重定位表段入口。
步骤S322,补丁制作工具将重定位表段与其关联的符号生成补丁信息E。将补丁信息E和可重定位目标文件B整合在一起,形成补丁文件F。
这里,假设映像文件C中存在静态函数的重定位表,如果没有,可以通过修改链接脚本来保留静态函数的重定位段信息。通过重定位入口,即可定位出所有需要被重定位的指令在内存中运行的偏移地址,即被补丁函数D在“何处被引用”的指令地址,以及指令的修正方式。将这些重定位入口从映像文件C提取出来,并和其关联的符号生成补丁信息E。
目标机中补丁控制任务处理输入,接受加载补丁文件的请求,并将补丁文件放在目标机的预留的补丁缓冲区内。补丁控制任务解析新补丁文件,将补丁文件的代码段和数据段加载到内存中特定的位置,并记录每个补丁函数在内存中的地址。补丁控制任务解析补丁文件,抽取补丁信息E,E包含了所有需要重定位的指令的地址,它们的值由当前补丁函数A在内存中的运行地址和E中指定的指令修正方式来确定。另外,还需检查需要修改的指令地址和补丁函数地址的距离是否超过了短跳转的范围。如果没有超过,按照重定位规则修改指令即可。如果超过了,则需要通过单指令长跳转的方法来修改指令。指令修改完毕后,调用被补丁函数处的指令修改为跳转到补丁函数起始地址的函数跳转指令,当CPU调用被补丁函数时,实际上是跳转到补丁函数入口,执行补丁函数。以此实现了在不中断程序的情况下对程序进行修改。
优选实施例三
在嵌入式***中,存在大量的静态函数,这些静态函数和全局函数一样,同样会存在实现补丁的需求。但在嵌入式式***目标机的内存符号表中,一般不会存在有静态符号。同时,由于不同文件中的静态函数可以取相同的名字,依赖现有技术方案无法实现静态函数的补丁功能。本发明中,由于完全利用了可重定位文件和可执行文件来实现补丁函数的定位,不再借助目标机中的内存符号表,使得对静态函数实现补丁功能成为可能。
在可执行文件中,存在一个名为.symtab的符号表段,与目标机中的内存符号表不同,.symtab段包含所有的全局函数符号和局部函数符号。但由于可能存在多个静态函数的符号名称完全相同,所以在实现对静态函数补丁功能时,需要增加对静态函数所在文件的指定,即指定被补丁函数是位于哪个文件中。图4是根据本发明优选实施例三的对静态函数进行补丁的流程图,如图4所示,包括如下的步骤S402至步骤S404。
步骤S402,确定被补丁函数D(此优选实施例中,D为静态函数)所在的文件G,补丁制作工具解析目标机中运行所使用的映像文件C,查找定义文件G的符号H,如果没有找到,则失败退出。这里,类型为FILE的符号所对应的名称即为文件名,类型为FUNC的符号所对应的名称即为函数名,遍历符号表即可找到名称为G的符号H。
步骤S404,在映像文件C的符号表中找到符号H后,遍历之后出现的所有函数类符号,直到出现下一个文件符号。如果找到和被补丁函数D名称相同的符号,记录该符号在符号表中的下标symbollndex。如果没有找到,则失败退出。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了一种热补丁装置,该热补丁装置可以用于实现上述热补丁方法。图5是根据本发明实施例的热补丁装置的结构框图,如图5所示,包括第一确定模块52和替换模块54。下面对其结构进行详细描述。
第一确定模块52,用于确定调用指令与补丁函数之间的距离超过短跳转指令能够跳转的范围;替换模块54,连接至第一确定模块52,用于将第一确定模块52确定是长跳转指令的调用指令替换为带索引值的非法指令,其中索引值对应于补丁函数。
上述实施例利用指令异常机制,将第一确定模块52确定是长跳转指令的调用指令由替换模块54替换成带索引值的非法指令,并将该索引值对应于补丁函数,这样,当目标机执行与该非法指令对应的异常处理函数并返回时可以直接执行补丁函数,从而用单条指令实现了补丁技术中的长跳转功能,避免了程序中断的问题。
考虑到长跳转指令一般由多条指令组成,前面若干个指令负责获取被调用函数的地址,最后一条指令控制PC指针的转移过程。因此,在修改属于长跳转指令的用于执行替换操作的指令时,需要找到多条指令的最后一条指令。所以,本发明提供了以下优选方案,图6是根据本发明优选实施例的热补丁装置的结构框图一,如图6所示,替换模块54包括:确定子模块542,用于确定用于执行替换操作的指令属于长跳转指令;获取子模块544,连接至确定子模块542,用于获取用于执行替换操作的指令中的用于控制PC指针转移过程的指令;替换子模块546,连接至获取子模块544,用于将获取子模块544获取的用于控制PC指针转移过程的指令替换为带索引值的非法指令。
图7是根据本发明优选实施例的热补丁装置的结构框图二,如图7所示,获取子模块544包括:搜索单元5442,用于在用于执行替换操作的指令中搜索长跳转指令,得到用于控制PC指针转移过程的指令。
图8是根据本发明优选实施例的热补丁装置的结构框图三,如图8所示,上述装置还包括:第二确定模块56,用于确定被补丁函数是静态函数;第三确定模块58,连接至第二确定模块56,用于确定由第二确定模块56确定是静态函数的被补丁函数所属的文件。
图9是根据本发明优选实施例的热补丁装置的结构框图四,如图9所示,第三确定模块58包括:查找子模块582,用于在映像文件的符号表中查找被补丁函数所属的文件的符号;遍历子模块584,连接至查找子模块582,用于遍历符号表,查找到与被补丁函数名称相同的符号;记录子模块586,连接至遍历子模块584,用于记录遍历子模块584遍历以后查找到的与被补丁函数名称相同的符号在符号表中的下标。
需要说明的是,装置实施例中描述的热补丁装置对应于上述的方法实施例,其具体的实现过程在方法实施例中已经进行过详细说明,在此不再赘述。
综上所述,根据本发明的上述实施例,提供了一种热补丁方法及装置。本发明利用指令异常机制,将调用指令替换成带索引值的非法指令,并将该索引值对应于补丁函数,这样,当目标机执行与该非法指令对应的异常处理函数并返回时可以直接执行补丁函数,从而用单条指令实现了长跳转功能,避免了程序中断的问题。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种热补丁方法,其特征在于包括:
确定调用指令与补丁函数之间的距离超过短跳转指令能够跳转的范围;
将所述调用指令替换为带索引值的非法指令,其中所述索引值对应于所述补丁函数;
将所述调用指令替换为带索引值的非法指令包括:确定用于执行所述替换操作的指令属于长跳转指令;获取所述用于执行所述替换操作的指令中的用于控制PC指针转移过程的指令;将所述用于控制PC指针转移过程的指令替换为带索引值的非法指令。
2.根据权利要求1所述的方法,其特征在于,获取所述用于执行所述替换操作的指令中的用于控制PC指针转移过程的指令包括:在所述用于执行所述替换操作的指令中搜索长跳转指令,得到所述用于控制PC指针转移过程的指令。
3.根据权利要求1所述的方法,其特征在于,在将所述调用指令替换为带索引值的非法指令之前,还包括:
确定被补丁函数是静态函数;
确定所述被补丁函数所属的文件;
在所述文件中,执行将所述调用指令替换为带索引值的非法指令的操作。
4.根据权利要求3所述的方法,其特征在于,确定所述被补丁函数所属的文件包括:
在映像文件的符号表中查找所述被补丁函数所属的文件的符号;
遍历所述符号表,查找与所述符号的名称相同的符号;
记录查找到的所述符号在所述符号表中的下标。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在将所述调用指令替换为带索引值的非法指令之后,还包括:
目标机接收到替换后的所述调用指令;
所述目标机在执行与所述非法指令对应的异常处理函数的过程中,根据所述索引值获取所述补丁函数的地址;
所述目标机将所述异常处理函数的返回地址修改为所述补丁函数地址。
6.一种热补丁装置,其特征在于包括:
第一确定模块,用于确定调用指令与补丁函数之间的距离超过短跳转指令能够跳转的范围;
替换模块,用于将所述调用指令替换为带索引值的非法指令,其中所述索引值对应于所述补丁函数;
所述替换模块包括:确定子模块,用于确定用于执行所述替换操作的指令属于长跳转指令;获取子模块,用于获取所述用于执行所述替换操作的指令中的用于控制PC指针转移过程的指令;替换子模块,用于将所述用于控制PC指针转移过程的指令替换为带索引值的非法指令。
7.根据权利要求6所述的装置,其特征在于,所述获取子模块包括:搜索单元,用于在所述用于执行所述替换操作的指令中搜索长跳转指令,得到所述用于控制PC指针转移过程的指令。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于确定被补丁函数是静态函数;
第三确定模块,用于确定所述被补丁函数所属的文件。
CN201210018144.0A 2012-01-19 2012-01-19 热补丁方法及装置 Active CN102609241B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210018144.0A CN102609241B (zh) 2012-01-19 2012-01-19 热补丁方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210018144.0A CN102609241B (zh) 2012-01-19 2012-01-19 热补丁方法及装置

Publications (2)

Publication Number Publication Date
CN102609241A CN102609241A (zh) 2012-07-25
CN102609241B true CN102609241B (zh) 2018-04-27

Family

ID=46526642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210018144.0A Active CN102609241B (zh) 2012-01-19 2012-01-19 热补丁方法及装置

Country Status (1)

Country Link
CN (1) CN102609241B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103197942B (zh) * 2013-03-18 2016-03-02 华为技术有限公司 一种补丁的生成方法、打补丁的方法及装置
CN103399775A (zh) * 2013-08-05 2013-11-20 北京华为数字技术有限公司 一种热补丁方法及设备
CN106484369B (zh) * 2013-10-24 2019-11-29 华为技术有限公司 一种在线补丁激活的方法及装置
CN103559449B (zh) * 2013-11-15 2016-09-21 华为技术有限公司 一种代码改动的检测方法及装置
CN105740001A (zh) * 2014-12-10 2016-07-06 中兴通讯股份有限公司 一种进程初始化阶段热补丁升级的方法、装置及终端设备
CN104809018B (zh) * 2015-05-18 2018-01-02 烽火通信科技股份有限公司 一种嵌入式***软件注入热补丁的方法及***
CN105159738A (zh) * 2015-08-20 2015-12-16 上海斐讯数据通信技术有限公司 一种热补丁实现方法及***
US10860322B2 (en) * 2015-10-30 2020-12-08 Arm Limited Modifying behavior of a data processing unit using rewritable behavior mappings of instructions
CN106874022B (zh) * 2015-12-11 2021-06-25 中兴通讯股份有限公司 一种热补丁注入方法及装置
CN105607937B (zh) * 2015-12-25 2019-01-18 京信通信***(中国)有限公司 一种热补丁方法及设备
CN107797820B (zh) * 2017-11-13 2021-03-23 北京百度网讯科技有限公司 用于生成补丁的方法和装置
CN110633090B (zh) * 2019-08-14 2022-04-12 华为技术有限公司 补丁方法、相关装置及***
CN111666096B (zh) * 2020-07-02 2021-03-16 腾讯科技(深圳)有限公司 目标应用的热更新方法和装置、存储介质和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246449A (zh) * 2008-02-25 2008-08-20 华为技术有限公司 跟踪函数调用轨迹的方法和装置
CN102156661A (zh) * 2010-02-11 2011-08-17 华为技术有限公司 在线补丁的激活方法、装置及***

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1230744C (zh) * 2002-08-16 2005-12-07 华为技术有限公司 一种嵌入式***软件补丁的实现和控制方法
US7913243B2 (en) * 2005-06-21 2011-03-22 International Business Machines Corporation Method and system for generating and applying patches to a computer program concurrently with its execution
CN100432931C (zh) * 2006-12-22 2008-11-12 中兴通讯股份有限公司 嵌入式***动态补丁长跳转的实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246449A (zh) * 2008-02-25 2008-08-20 华为技术有限公司 跟踪函数调用轨迹的方法和装置
CN102156661A (zh) * 2010-02-11 2011-08-17 华为技术有限公司 在线补丁的激活方法、装置及***

Also Published As

Publication number Publication date
CN102609241A (zh) 2012-07-25

Similar Documents

Publication Publication Date Title
CN102609241B (zh) 热补丁方法及装置
US7890941B1 (en) Binary profile instrumentation framework
KR101029160B1 (ko) 이미지 데이터베이스에 신규 이미지 및 이에 대한 정보를 추가하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
CN106599695B (zh) 一种基于路径合并的可引导符号执行漏洞检测方法
CN104346267B (zh) 生成程序缺陷定位信息的方法及装置
US7698692B1 (en) Preparing a binary file for future instrumentation
CN106294134A (zh) 代码的崩溃定位方法及装置
CN102567565B (zh) 一种电缆参数的处理方法和***
CN103559123A (zh) 基于VxWorks操作***的函数调用栈分析方法及装置
CN103631573A (zh) 可迁移函数执行时间的获得方法及***
CN102959538B (zh) 给文档编索引
CN113051514B (zh) 元素的定位方法、装置、电子设备及存储介质
CN107480476A (zh) 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法
CN102004692B (zh) 进程调试方法及装置
KR102013657B1 (ko) 연관된 다중 파일 정적 분석 장치
US8799716B2 (en) Heap dump occurrence detection
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
KR101851330B1 (ko) 코드 재사용 공격 탐지 장치 및 그 방법
JP2001147837A (ja) プログラムトレース装置及び記憶媒体
KR20150080545A (ko) 시스템 구축 지원 장치
CN105550575A (zh) 一种未导出的函数地址和数据结构偏移的获取方法及装置
US9489451B2 (en) Visual data definition for identifying data items in loosely-structured data
CN112528193A (zh) 页面文案处理方法、页面文案管理方法、装置、终端设备、计算机设备及服务器
CN110196952A (zh) 程序代码的搜索处理方法、装置、设备及存储介质
CN112231225B (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