[发明专利]一种补丁实现方法及装置在审
申请号: | 201610595842.5 | 申请日: | 2016-07-25 |
公开(公告)号: | CN107656753A | 公开(公告)日: | 2018-02-02 |
发明(设计)人: | 周淼;王丽平 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F8/70 | 分类号: | G06F8/70 |
代理公司: | 深圳鼎合诚知识产权代理有限公司44281 | 代理人: | 江婷,李发兵 |
地址: | 518057 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 补丁 实现 方法 装置 | ||
1.一种补丁实现方法,其特征在于,该方法包括:
根据提取的被补丁函数和补丁重定位段的符号所在文件以及偏移地址、为补丁文件预留的内存区地址生成补丁文件,并将所述补丁文件加载至内存,其中,所述所在文件、所述偏移地址以及为所述补丁文件预留的内存区地址信息存储在镜像文件和动态库文件的符号表中;
获取所述补丁文件内重定位段的符号的绝对地址;
根据所述绝对地址在所述预留的内存区中构造指定字节跳转指令区,其中,所述跳转指令区用于当前执行指令跳转到重定位表项中目标符号的地址;
修改所述被补丁函数入口指令以跳转至所述补丁文件中的补丁函数。
2.根据权利要求1所述的方法,其特征在于,所述补丁文件还包括补丁函数信息,其中所述补丁函数信息包括代码段,数据段,只读数据段,重定位段信息。
3.根据权利要求2所述的方法,其特征在于,所述补丁函数信息从补丁函数目标文件中提取得到。
4.根据权利要求1所述的方法,其特征在于,所述根据所述绝对地址在所述预留的内存区中构造指定字节跳转指令区包括:
根据所述绝对地址构造代码段和数据段,以得到所述指定字节跳转指令区;
其中,所述代码段包括将PC寄存器加8的内容赋给IP寄存器,将IP寄存器的内容赋给PC寄存器;
所述数据段包括当前地址加4,调用函数地址。
5.根据权利要求4所述的方法,其特征在于:所述指定字节跳转指令区的长度为16字节。
6.根据权利要求1所述的方法,所述补丁文件还包括补丁管理头部,其中所述补丁管理头部包括补丁版本号、补丁名字、补丁生成时间和补丁检验码信息。
7.根据权利要求1所述的方法,其特征在于,获取所述补丁文件内重定位段的符号的绝对地址包括:
若所述补丁文件内重定位段中的符号为外部符号,获取所述符号在镜像文件或共享文件中的相对地址;
在所述补丁文件加载到目标机侧后,所述相对地址加上所述镜像文件或共享文件首地址的绝对地址以得到所述补丁文件内重定位段的符号的绝对地址。
8.一种补丁实现装置,其特征在于,该装置包括:
生成模块,用于根据提取的被补丁函数和补丁重定位段的符号所在文件以及偏移地址、为补丁文件预留的内存区地址生成补丁文件,并将所述补丁文件加载至内存,其中,所述所在文件、所述偏移地址以及为所述补丁文件预留的内存区地址信息存储在镜像文件和动态库文件的符号表中;
获取模块,用于获取所述补丁文件内重定位段的符号的绝对地址;
构造模块,用于根据所述绝对地址在所述预留的内存区中构造指定字节跳转指令区,其中,所述跳转指令区用于将当前执行指令跳转到重定位表项中目标符号的地址;
修改模块,用于修改所述被补丁函数入口指令以跳转至所述补丁文件中的补丁函数。
9.根据权利要求8所述的装置,其特征在于,获取模块包括:
第一获取单元,用于在所述补丁文件内重定位段中的符号为外部符号时,获取所述符号在镜像文件或共享文件中的相对地址;
第二获取单元在所述补丁文件加载到目标机侧后,所述相对地址加上所述镜像文件或共享文件首地址的绝对地址以得到所述补丁文件内重定位段的符号的绝对地址。
10.根据权利要求8所述的装置,其特征在于,所述构造模块还用于根据所述绝对地址构造代码段和数据段,以得到所述指定字节跳转指令区;其中,所述代码段包括将PC寄存器加8的内容赋给IP寄存器,将IP寄存器的内容赋给PC寄存器;所述数据段包括当前地址加4,调用函数地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610595842.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种设备版本管控方法及装置
- 下一篇:恢复设置参数的方法及其用户设备