[发明专利]使用补丁对软件进行动态升级与控制的方法和装置有效
申请号: | 200910151508.0 | 申请日: | 2009-06-29 |
公开(公告)号: | CN101937340A | 公开(公告)日: | 2011-01-05 |
发明(设计)人: | 黄忠华;朱怀云;邱静;李进波 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/445 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 余刚;吴孟秋 |
地址: | 518057 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 使用 补丁 软件 进行 动态 升级 控制 方法 装置 | ||
技术领域
本发明涉及补丁升级方法,更具体地,涉及使用补丁对软件进行动态升级与控制的方法和装置。
背景技术
随着软件规模和维护复杂度的不断增加,人们很难获得一个零错误的软件,这就需要在发布版本之后,对可能存在的错误,采用提供新软件或者通过发布软件补丁的方式进行修复。对于软件运行稳定性要求比较高的行业,特别是电信行业,需要在不影响原有业务正常运行的情况下,完成对系统软件错误修复的整个过程,即在软件运行过程中,用补丁模块替换存在软件错误的模块,而不能打断原有程序代码的正常运行。
这种动态补丁升级软件的主要方法是采用函数替换的方法,来实现动态打补丁,其工作原理是通过替换被补丁函数的第一条指令为跳转到替换函数中的指令,使程序跳转到新函数所在位置处执行,当替换函数中的补丁代码执行完毕后,回到调用老函数的代码中,从而完成整个调用过程。
在公开号为CN1475909的中国申请专利文件中,公开了一种嵌入式系统补丁软件的实现和控制方法。此方法分为两步骤执行:1)用补丁制作工具分析补丁目标文件的符号段,并将补丁目标文件的代码段和数据段提取出来,联同函数替换表以补丁单元的形式生成补丁文件。2)补丁控制部分加载控制补丁软件到希望被补丁修改的缓冲区中,根据函数替换表构造函数跳转指令,将被补丁函数地址上的第一条指令替换为跳转到补丁函数起始地址的函数跳转指令,使CPU执行到被补丁函数时,跳转到补丁函数地址,执行补丁函数。
该专利中关于动态补丁升级软件实现与控制的方法,存在如下缺陷:
1)该专利在软件补丁制作过程中,把整个目标文件的代码段和数据段都提取出来,然后构造成补丁文件,并在补丁加载时全部写入内存空间。这种方法会造成内存空间的浪费,也会增加加载过程的复杂度,甚至同一个函数或变量在内存中有多个拷贝,可能会造成函数调用或变量引用的不一致,严重的会导致系统崩溃。
2)该专利在补丁控制模块加载补丁文件到缓冲区中后,根据函数替换表构造函数跳转指令,动态的构造从被补丁函数跳转到替换函数的跳转指令。这种在目标机上构造跳转指令的做法会增加目标机侧代码维护的难度,并降低代码可移植性。
3)该专利没有提供完整的补丁控制方法,即没有提供打补丁失败后,恢复到原先状态的实现方法以及显示补丁是否升级成功等。
发明内容
为解决上述缺陷,本发明提出了使用补丁对软件进行动态升级的方法,包括以下步骤:将替换函数的预定参数从目标文件中提取出来,组成仅包含替换函数的新目标文件;以及根据新目标文件和内核镜像原文件生成补丁。
其中,预定参数包括代码段、数据段、重定位表和符号表中的至少一个。
其中,所述的提取预定参数的步骤包括:读取目标文件的头部信息,并根据头部信息将每个节头读取到内存中;以及提取替换函数的代码段,收集替换函数的重定位的信息,并提取替换函数的只读数据,其中,将只读数据节合并为新只读数据节。
其中,使用验证模块读取新目标文件,以验证新目标文件的正确性。
其中,所述的生成补丁的步骤还包括:读取新目标文件的头部信息,并根据头部信息将每个节头读取到内存中;合并新目标文件的代码段和只读数据节;读取内核镜像原文件的预留补丁区域地址和符号地址表;根据符号地址表对新目标文件的符号进行重定位;根据预留补丁区域地址构造函数替换指令表,用于指示对替换函数进行替换;以及生成补丁。
此外,本发明还提出了使用补丁对软件进行动态升级与控制的装置包括:替换函数提取模块,设置在主机侧,用于将替换函数的预定参数从目标文件中提取出来,组成仅包含替换函数的新目标文件;补丁生成模块,设置在主机侧,用于根据新目标文件和内核镜像原文件生成补丁;以及补丁控制模块,设置在目标机侧,用于控制补丁的状态的转换,并用于查询补丁的状态。
其中,替换函数提取模块包括:头部信息读取子模块,用于读取目标文件的头部信息,并根据头部信息将每个节头读取到内存中;预定参数提取子模块,用于提取预定参数;以及文件重组子模块,用于组成仅包含替换函数的新目标文件。
其中,补丁生成模块在生成补丁的过程中,根据从内核镜像原文件读取的预留补丁区域地址构造函数替换指令表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910151508.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:以太无源光网络系统及其光功率预算方法
- 下一篇:太阳能板控制方法