The invention discloses a hot patch injection method and device, relates to the field of computer software, the patch code loaded into the target process, first determine the address in the code to be replaced in the continuous N commands not by any thread running, the N commands for modifying jump to patch code the address of the first instruction in the process of operation can be realized by the replaced code jump to patch code, so as to realize the hot patch implantation, do not need to be injected into the process of the pre compiled, also reduce the heat consumption when injected into the patch. Because in the N command line modified to jump to the address of the first patch code before the instruction is determined to be replaced in the code first starting address for continuous N instruction is not any thread running, also reduce the operation risk of the patch loading.
【技术实现步骤摘要】
一种热补丁注入方法及装置
本专利技术涉及计算机软件领域,尤其涉及一种热补丁注入方法及装置。
技术介绍
对于正在运行的软件系统,想要进行一些功能扩展或者修补一些软件问题,而又要求不能复位系统,这就需要给系统打热补丁。热补丁就是把原来软件系统中的想要替换的函数单独修改重新编译组成热补丁单元,再通过热补丁加载工具加载到运行的目标软件系统中,替换原始函数。然而,目前使用的热补丁技术有两个问题,一是需要在被注入的进程中有事先编译进去的代码负责补丁函数对被补函数的替换;二是当将被替换函数的头几条指令修改为跳转到新的补丁函数时,补丁加载存在风险,解决这个风险的现有方案都存在应用面窄,不通用,增加额外的内存与cpu的消耗的问题。
技术实现思路
本专利技术提供一种热补丁注入方法及装置,以实现不依赖被注入的进程中有事先编译进去的代码进行热补丁注入,并减小热补丁注入时的消耗。依据本专利技术的一个方面,提供一种热补丁注入方法,包括:将补丁代码加载到目标进程中;确定被替换的代码中首地址开始的连续N行指令没有被任何线程运行,所述N大于或等于目标体系结构中跳转到内存任意地址所需要的最小指令数;将所述N行指令修改为跳转到补丁代码的首地址的指令。进一步,所述确定被替换的代码中首地址开始的连续N行指令没有被任何线程运行,具体包括:暂停目标进程内的所有线程;确定被替换的代码中首地址开始的连续N行指令为目标指令,并将该目标指令之外的至少一条指令修改为异常指令;让所有指针处于目标指令中的线程继续执行,当所有线程均被异常捕获工具捕捉时,确定所述目标指令没有被任何线程运行;此时,所述将所述N行指令修改为跳 ...
【技术保护点】
一种热补丁注入方法,其特征在于,包括:将补丁代码加载到目标进程中;确定被替换的代码中首地址开始的连续N行指令没有被任何线程运行,所述N大于或等于目标体系结构中跳转到内存任意地址所需要的最小指令数;将所述N行指令修改为跳转到补丁代码的首地址的指令。
【技术特征摘要】
1.一种热补丁注入方法,其特征在于,包括:将补丁代码加载到目标进程中;确定被替换的代码中首地址开始的连续N行指令没有被任何线程运行,所述N大于或等于目标体系结构中跳转到内存任意地址所需要的最小指令数;将所述N行指令修改为跳转到补丁代码的首地址的指令。2.如权利要求1所述的方法,其特征在于,所述确定被替换的代码中首地址开始的连续N行指令没有被任何线程运行,具体包括:暂停目标进程内的所有线程;确定被替换的代码中首地址开始的连续N行指令为目标指令,并将该目标指令之外的至少一条指令修改为异常指令;让所有指针处于目标指令中的线程继续执行,当所有线程均被异常捕获工具捕捉时,确定所述目标指令没有被任何线程运行;所述将所述N行指令修改为跳转到补丁代码的首地址的指令后,还包括:将所述修改为异常指令的至少一条指令恢复为原指令;继续执行目标进程内的所有线程。3.如权利要求2所述的方法,其特征在于,所述将该目标指令之外的至少一条指令修改为异常指令,具体包括:将该目标指令的后一条指令修改为异常指令。4.如权利要求1所述的方法,其特征在于,所述将补丁代码加载到目标进程中,具体包括:通过代码注入将补丁代码加载到目标进程...
【专利技术属性】
技术研发人员:段晶晶,李双全,谢柏利,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。