[发明专利]热补丁方法及装置有效
申请号: | 201210018144.0 | 申请日: | 2012-01-19 |
公开(公告)号: | CN102609241B | 公开(公告)日: | 2018-04-27 |
发明(设计)人: | 朱明星;阮芳芳 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/32 | 分类号: | G06F9/32 |
代理公司: | 北京康信知识产权代理有限责任公司11240 | 代理人: | 余刚,梁丽超 |
地址: | 518057 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 补丁 方法 装置 | ||
技术领域
本发明涉及通信领域,具体而言,涉及一种热补丁方法及装置。
背景技术
补丁技术的基本原理是将现有系统中正在运行的函数替换成补丁函数,从而改变了原函数的功能,以达到修改系统功能,或纠正现有系统故障的目的。目前公开的补丁技术有多种方案,比较典型的技术方案有以下两种:
补丁方案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指针转移过程的指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210018144.0/2.html,转载请声明来源钻瓜专利网。