一种在线补丁激活的方法及装置制造方法及图纸

技术编号:14778401 阅读:32 留言:0更新日期:2017-03-09 14:14
本发明专利技术涉及计算机技术领域,具体涉及一种在线补丁激活的方法和装置。其中方法包括:定位补丁函数地址和待打补丁函数的第一条入口指令;将包含补丁函数地址的信息写入跳转表,并获取该信息在该跳转表中的索引;将该跳转表地址写入寄存器;获取该待打补丁函数的第一条入口指令的长度,并构造一条长度小于或等于该待打补丁函数的第一条入口指令长度的短指令,该短指令包含该寄存器的标识和该索引;将该待打补丁函数的第一条入口指令替换为该短指令,使得该待打补丁函数被调用时,该短指令被执行,该补丁函数被激活。使用本发明专利技术提供的方法和装置,可以在只替换待打补丁函数入口处第一条指令的情况下,实现在线补丁激活,提高了操作系统的安全性。

【技术实现步骤摘要】

本专利技术涉及计算机
,具体涉及一种在线补丁激活的方法和装置。
技术介绍
在操作系统中,跳转指令可以改变程序执行流程,例如在线补丁,在线补丁的目的是在不丢失程序旧版本的情况下使用补丁函数代替程序旧版本中待打补丁的函数,用于修复程序旧版本的缺陷或增强旧版本的功能。其基本原理是将程序旧版本中待打补丁函数的入口位置处的指令替换为跳转指令,当操作系统执行到程序旧版本待打补丁函数入口时,跳转指令将使得操作系统跳转到补丁函数入口处,执行补丁函数。目前,实现在线补丁激活的方法有很多,其中,一种具体的实现方法为长跳转方法,长跳转方法可以通过寄存器实现,首先将目标地址写入寄存器,然后跳转到寄存器中的目标地址执行新的指令,但是该长跳转方法需要多条指令才能完成跳转。从上可知,使用长跳转方法实现在线补丁激活,需要替换程序旧版本待打补丁函数入口处的多条指令,如果在指令替换时某些线程正在或将要执行这些被替换指令的部分或全部,则可能造成线程执行未知指令,引起操作系统异常。
技术实现思路
本专利技术实施例提供了一种在线补丁激活的方法和装置,能够在激活在线补丁的过程中提高操作系统的安全性。本专利技术实施例的第一方面公开了一种在线补丁激活的方法,所述方法包括:定位补丁函数地址和待打补丁函数的第一条入口指令;将包含补丁函数地址的信息写入跳转表,并获取所述信息在所述跳转表中的索引;将所述跳转表地址写入寄存器;获取所述待打补丁函数的第一条入口指令的长度,并构造一条长度小于或等于所述待打补丁函数的第一条入口指令长度的短指令,所述短指令包含所述寄存器的标识和所述索引;将所述待打补丁函数的第一条入口指令替换为所述短指令,使得所述待打补丁函数被调用时,所述短指令被执行,所述补丁函数被激活。结合第一方面,在第一方面的第一种实现方式中,所述将包含补丁函数地址的信息写入跳转表包括:将所述补丁函数地址写入跳转表;获取所述信息在所述跳转表中的索引包括:获取所述补丁函数地址在所述跳转表中的索引。结合第一方面,在第一方面的第二种实现方式中,所述将包含补丁函数地址的信息写入跳转表包括:将跳转到所述补丁函数的地址的跳转指令写入跳转表;获取所述信息在所述跳转表中的索引包括:获取所述跳转指令在所述跳转表中的索引。结合第一方面或第一方面的第一种实现方式或第一方面的第二种实现方式,在第一方面的第三种实现方式中,所述跳转表用于存储至少一条包含补丁函数地址的信息。本专利技术实施例的第二方面公开了一种在线补丁激活的装置,所述装置包括:定位单元,用于定位补丁函数地址和待打补丁函数的第一条入口指令;写入单元,将包含所述补丁函数地址的信息写入跳转表,将所述跳转表地址写入寄存器,所述补丁函数地址是由所述定位单元定位的;获取单元,用于获取所述写入单元写入的信息在所述跳转表中的索引;获取所述定位单元定位的待打补丁函数的第一条入口指令的长度;构造单元,用于构造一条长度小于或等于所述待打补丁函数的第一条入口指令长度的短指令,所述短指令包含所述寄存器的标识和所述索引,所述待打补丁函数的第一条入口指令是由所述定位单元定位的;替换单元,用于将所述待打补丁函数的第一条入口指令替换为所述构造单元构造的短指令;执行单元,用于在所述待打补丁函数被调用时,执行替换单元替换的短指令,激活所述补丁函数。结合第二方面,在第二方面的第一种实现方式中,所述写入单元具体用于:将定位单位定位的所述补丁函数的地址写入跳转表;所述获取单元具体用于:获取所述补丁函数定制在所述跳转表中的索引。结合第二方面,在第二方面的第二种实现方式中,所述写入单元具体用于:将可以跳转到补丁函数的地址的跳转指令写入跳转表;所述获取单元具体用于:获取所述跳转指令定制在所述跳转表中的索引。从上可知,使用本专利技术实施例提供的在线补丁激活的方法和装置,可以在只替换程序旧版本待打补丁函数入口处第一条指令的情况下,实现在线补丁激活,提高了操作系统的安全性;进一步,由于本专利技术实施例提供了跳转表,跳转表中可以记录多个补丁函数的信息,从而实现多个在线补丁同时更新,提高了用户体验。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术一个实施例提供的在线补丁激活的方法流程图;图2为本专利技术另一个实施例提供的在线补丁激活的方法流程图;图3为本专利技术另一个实施例提供的在线补丁激活的方法流程图;图4为本专利技术一个实施例提供的在线补丁激活的装置结构图;图5为本专利技术另一个实施例提供的在线补丁激活的装置结构图;图6为本专利技术另一个实施例提供的在线补丁激活的装置结构图;图7为本专利技术另一个实施例提供的在线补丁激活的装置结构图;图8为本专利技术另一个实施例提供的在线补丁激活的装置结构图;图9为本专利技术另一个实施例提供的在线补丁激活的装置结构图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图1描述了本专利技术实施例的一种在线补丁激活的方法,该方法描述的是短指令替换程序中待打补丁函数入口处第一条指令的过程,该方法具体包括:101、定位补丁函数地址和待打补丁函数的第一条入口指令。在线补丁是指程序运行中不需要重启程序而生效的补丁,广泛应用于各类软件。在待打补丁程序运行时,在线补丁激活线程定位补丁函数地址以及该程序中待打补丁函数的第一条入口指令。其中,在线补丁激活线程可以是程序内部的线程,也可以是一个用于激活补丁的应用程序的线程。102、将包含补丁函数地址的信息写入跳转表,并获取该信息在该跳转表中的索引。跳转表是在线补丁激活线程在内存中开辟的一块空间,可以记录包含补丁函数地址的信息。其中,包含补丁函数地址的信息可以是补丁函数地址,也可以跳转到补丁函数地址的跳转指令。使用跳转表可以实现多个补丁函数同时激活。获取该信息在该跳转表中的索引。将包含补丁函数地址的信息写入跳转表后,获取该信息在该跳转表中的索引或者序号。可以通过该序号或者索引定位该信息在该跳转表中的位置。103、将该跳转表地址写入寄存器中。将跳转表地址写入寄存器中,无论跳转表放置在内存中什么位置,都可以通过访问寄存器,读取跳转表的地址,再通过跳转表获得各个包含补丁函数地址的信息。其中,可以将跳转表的首地址写入寄存器中,寄存器可以是基址寄存器。104、获取该待打补丁函数的第一条入口指令的长度,并构造一条长度小于或等于该待打补丁函数的第一条入口指令长度的短指令,该短指令包含该寄存器的标识和该索引。在不同操作系统中,实现相同功能的指令的长度也有可能是不同的。获取该待打补丁函数的第一条入口指令的长度,构造一条长度小于或等于该待打补丁函数的第一条入口指令长度的短指令,该短指令包含该寄存器的标识和该索引。其中,在该短指令被执行时,可以获取寄存器中的跳转表首地址,通过跳转表的首地址和索引便可以定位补丁函数入口地址。在跳转表只有一张的时候,可以通过一个基本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/201610865260.html" title="一种在线补丁激活的方法及装置原文来自X技术">在线补丁激活的方法及装置</a>

【技术保护点】
一种在线补丁激活的方法,其特征在于,包括:定位补丁函数地址和待打补丁函数的第一条入口指令;将包含补丁函数地址的信息写入跳转表,并获取所述信息在所述跳转表中的索引;将所述跳转表地址写入寄存器;获取所述待打补丁函数的第一条入口指令的长度,并构造一条长度小于或等于所述待打补丁函数的第一条入口指令长度的短指令,所述短指令包含所述索引;将所述待打补丁函数的第一条入口指令替换为所述短指令,使得所述待打补丁函数被调用时,所述短指令被执行以解析出所述索引,所述寄存器被访问以获取所述跳转表地址,根据所述跳转表地址和所述索引解析出所述补丁函数地址,并根据所述补丁函数地址跳转到所述补丁函数。

【技术特征摘要】
1.一种在线补丁激活的方法,其特征在于,包括:定位补丁函数地址和待打补丁函数的第一条入口指令;将包含补丁函数地址的信息写入跳转表,并获取所述信息在所述跳转表中的索引;将所述跳转表地址写入寄存器;获取所述待打补丁函数的第一条入口指令的长度,并构造一条长度小于或等于所述待打补丁函数的第一条入口指令长度的短指令,所述短指令包含所述索引;将所述待打补丁函数的第一条入口指令替换为所述短指令,使得所述待打补丁函数被调用时,所述短指令被执行以解析出所述索引,所述寄存器被访问以获取所述跳转表地址,根据所述跳转表地址和所述索引解析出所述补丁函数地址,并根据所述补丁函数地址跳转到所述补丁函数。2.如权利要求1所述的在线补丁激活的方法,其特征在于,所述将包含补丁函数地址的信息写入跳转表包括:将所述补丁函数地址写入跳转表;获取所述信息在所述跳转表中的索引包括:获取所述补丁函数地址在所述跳转表中的索引。3.如权利要求1所述的在线补丁激活的方法,其特征在于,所述将包含补丁函数地址的信息写入跳转表包括:将跳转到所述补丁函数的地址的跳转指令写入跳转表;获取所述信息在所述跳转表中的索引包括:获取所述跳转指令在所述跳转表中的索引。4.如权利要求1至3任一所述的在线补丁激活的方法,其特征在于,所述跳转表用于存储至少一条包含补丁函数地址的信息。5.一种在线补丁激活的装置,其...

【专利技术属性】
技术研发人员:陈运生强鸿斐万汉阳
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1