[发明专利]在线补丁的激活方法、装置及系统有效
申请号: | 201310157498.8 | 申请日: | 2010-02-11 |
公开(公告)号: | CN103218262B | 公开(公告)日: | 2017-03-15 |
发明(设计)人: | 余加强;郑伟 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/45 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 在线 补丁 激活 方法 装置 系统 | ||
1.一种在线补丁激活方法,其特征在于,包括:
在待打补丁程序编译时,在所述程序的每个函数入口位置前或后预留中间区;
定位补丁函数的地址和待打补丁函数的入口地址;
基于所述补丁函数的地址和所述待打补丁函数的入口地址,在所述中间区写入用于跳转到所述补丁函数的长跳转指令,其中所述中间区为处于待打补丁函数入口位置前或后,且能放置至少一条长跳转指令的存储空间;
将待打补丁函数入口位置处的指令修改为跳转到所述中间区的短跳转指令,使得所述短跳转指令被执行后,跳转到所述中间区,通过所述中间区指令的执行跳转到所述补丁函数执行;
其中,所述在待打补丁程序编译时,在所述程序的每个函数入口位置前或后预留所述中间区的步骤,包括:
将待打补丁程序的源文件编译生成汇编文件后,查找所述汇编文件中表示函数的关键字字符串;
在找到的表示函数的关键字字符串所指示的函数入口位置的前或后,插入指定字节数的初始指令以预留中间区;其中,所述指定字节数表示所述中间区的大小;
对插入有所述初始指令的汇编文件重新编译生成新的汇编文件,并将新的汇编文件编译生成目标文件,由多个目标文件链接生成待打补丁程序的可执行文件。
2.如权利要求1所述的在线补丁激活方法,其特征在于,被修改为短跳转指令的指令为待打补丁函数入口位置处的首条指令,且长度大于或等于两字节。
3.如权利要求1所述的在线补丁激活方法,其特征在于,被修改为短跳转指令的指令为待打补丁函数入口位置处的非首条指令,且长度大于或等于两字节,所述方法还包括:在所述中间区写入处于所述被修改指令前的操作指令的反操作指令。
4.如权利要求3所述的在线补丁激活方法,其特征在于,所述待打补丁函数入口位置处的非首条指令为入栈指令push之后的指令;
所述处于被修改指令前的操作指令的反操作指令为出栈指令pop。
5.一种通信系统,其特征在于,所述通信系统包括至少一个CPU、内存编译器,所述CPU上运行有Linux操作系统,所述Linux操作系统之上运行有至少一种应用程序,所述应用程序关联有补丁管理线程和至少一个业务线程,其中:
所述内存中载入有包含至少一个待打补丁函数的应用程序和包含补丁函数的补丁文件,其中,所述待打补丁函数的入口位置前或后具有能放置至少一条长跳转指令的存储空间;
所述编译器用于在对待打补丁程序进行编译时,在所述待打补丁程序的每个函数入口位置前或后预留能放置至少一条长跳转指令的存储空间;
所述补丁管理线程用于在所述应用程序的运行过程中,定位所述补丁函数的地址和所述待打补丁函数的入口地址,并在所述存储空间写入用于跳转到所述补丁函数的长跳转指令,以及将所述待打补丁函数入口位置处的指令修改为用于跳转到所述存储空间的短跳转指令;
所述业务线程用于执行到待打补丁函数入口位置处的短跳转指令,跳转到所述存储空间,通过所述存储空间中指令的执行跳转到所述补丁函数执行;
其中,所述编译器具体用于:将待打补丁程序的源文件编译生成汇编文件后,查找所述汇编文件中表示函数的关键字字符串,并在找到的表示函数的关键字字符串所指示的函数入口位置的前或后,插入指定字节数的初始指令以预留能放置至少一条长跳转指令的存储空间;对插入有所述初始指令的汇编文件重新编译生成新的汇编文件,并将新的汇编文件编译生成目标文件,由多个目标文件链接生成待打补丁程序的可执行文件;其中,所述指定字节数表示所述存储空间的大小。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310157498.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种阵列基板及其制造方法和显示装置
- 下一篇:封框胶及其制备方法