一种函数重定向方法及装置制造方法及图纸

技术编号:21570930 阅读:29 留言:0更新日期:2019-07-10 15:16
本发明专利技术提供了一种函数重定向方法及装置,所述方法及装置在系统动态装载目标函数时,从系统获得动态装载目标函数的控制权、确定需装载的所述目标函数是否需要重定向,并在需要重定向时,获取所述目标函数对应的新的函数地址,最终基于所述新的函数地址,实现对目标函数的重定向。本发明专利技术方案对于系统及非系统调用函数的动态装载的重定向均能较好地适用,同时本发明专利技术方案在进行函数动态装载的重定向时,未使用传统的hook拦截方式、未直接拦截并替换函数指令,可保障重定向操作的原子化,从而最终可稳定、高效地实现函数动态装载的重定向。

A Function Redirection Method and Device

【技术实现步骤摘要】
一种函数重定向方法及装置
本专利技术属于计算机
,尤其涉及一种函数重定向方法及装置。
技术介绍
在linux主机防护软件中,为了第一时间发现与处理威胁,对系统库函数进行重定向通常是必须的。函数的装载分为两种方式,一种是在程序执行时基于程序内部的函数地址直接调用函数,另一种是通过系统库提供的动态装载函数对所需的功能函数进行显示装载也即动态装载。对于第二种装载方式,目前的一种重定向方案是,通过直接拦截并修改函数内部指令实现函数动态装载的重定向,该重定向方案在多CPU(CentralProcessingUnit,中央处理器)、多任务系统中即便暂停其他CPU运行,也很难保障替换指令进而重定向时的原子操作,故存在稳定性与兼容性不佳的缺陷,尤其是针对服务器的linux系统一旦宕机用户很难接受;另一种重定向方案是,通过利用内核模块拦截系统调用函数实现函数动态装载的重定向,该重定向方案的缺陷在于,对于“非系统调用函数”(即不陷入内核的函数)的动态装载无法进行有效拦截,进而无法实现非系统调用函数动态装载的重定向。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种函数重定向方法及装置,旨在针对动态装载的库函数,实现一种稳定、高效的重定向方案。为此,本专利技术公开如下技术方案:一种函数重定向方法,包括:在系统动态装载目标函数时,从系统获得动态装载目标函数的控制权;确定需装载的所述目标函数是否需要重定向;若是,则获取所述目标函数对应的新的函数地址;基于所述新的函数地址,对所述目标函数进行重定向。上述方法,优选的,所述从系统获得动态装载目标函数的控制权,包括:将系统提供的用于动态装载所述目标函数的第一动态装载函数旁路到自定义的第二动态装载函数。上述方法,优选的,所述将系统提供的用于动态装载所述目标函数的第一动态装载函数旁路到自定义的第二动态装载函数,包括:基于预先制定的重定向函数结构体,将系统提供的用于动态装载所述目标函数的第一动态装载函数旁路到自定义的第二动态装载函数;所述重定向函数结构体包括:系统提供的动态装载函数与自定义的动态装载函数之间的指向关系信息。上述方法,优选的,所述确定需装载的所述目标函数是否需要重定向,包括:将所述目标函数的函数标识与预先制定的函数重定向信息进行比对;所述函数重定向信息至少包括:各个需被重定向的函数的函数标识以及每个需被重定向的函数对应的新的函数地址;基于比对结果,确定所述目标函数的函数标识是否包括在所述函数重定向信息中;若是,则所述目标函数需要重定向;若否,则所述目标函数不需要重定向。上述方法,优选的,在将所述第一动态装载函数旁路到所述第二动态装载函数后,所述目标函数的函数标识作为所述第二动态装载函数的参数;所述函数重定向信息以表结构形式组织并存储于一函数重定向表中;所述将所述目标函数的函数标识与预先制定的函数重定向信息进行比对,包括:将所述第二动态装载函数的参数与所述函数重定向表的表信息进行比对。一种函数重定向装置,包括:第一获取单元,用于在系统动态装载目标函数时,从系统获得动态装载目标函数的控制权;确定单元,用于确定需装载的所述目标函数是否需要重定向;第二获取单元,用于在所述目标函数需要重定向的情况下,获取所述目标函数对应的新的函数地址;重定向单元,用于基于所述新的函数地址,对所述目标函数进行重定向。上述装置,优选的,所述第一获取单元,具体用于:将系统提供的用于动态装载所述目标函数的第一动态装载函数旁路到自定义的第二动态装载函数。上述装置,优选的,所述第一获取单元,将系统提供的用于动态装载所述目标函数的第一动态装载函数旁路到自定义的第二动态装载函数,具体包括:基于预先制定的重定向函数结构体,将系统提供的用于动态装载所述目标函数的第一动态装载函数旁路到自定义的第二动态装载函数;所述重定向函数结构体包括:系统提供的动态装载函数与自定义的动态装载函数之间的指向关系信息。上述装置,优选的,所述确定单元,具体用于:将所述目标函数的函数标识与预先制定的函数重定向信息进行比对;所述函数重定向信息至少包括:各个需被重定向的函数的函数标识以及每个需被重定向的函数对应的新的函数地址;基于比对结果,确定所述目标函数的函数标识是否包括在所述函数重定向信息中;若是,则所述目标函数需要重定向;若否,则所述目标函数不需要重定向。上述装置,优选的,在将所述第一动态装载函旁路到所述第二动态装载函数后,所述目标函数的函数标识作为所述第二动态装载函数的参数;所述函数重定向信息以表结构形式组织并存储于一函数重定向表中;所述确定单元将所述目标函数的函数标识与预先制定的函数重定向信息进行比对,包括:将所述第二动态装载函数的参数与所述函数重定向表的表信息进行比对。由以上方案可知,本专利技术提供的函数重定向方法及装置,在系统动态装载目标函数时,从系统获得动态装载目标函数的控制权、确定需装载的所述目标函数是否需要重定向,并在需要重定向时,获取所述目标函数对应的新的函数地址,最终基于所述新的函数地址,实现对目标函数的重定向。本专利技术方案对于系统及非系统调用函数的动态装载的重定向均能较好地适用,同时本专利技术方案在进行函数动态装载的重定向时,未使用传统的hook拦截方式、未直接拦截并替换函数指令,可保障重定向操作的原子化,从而最终可稳定、高效地实现函数动态装载的重定向。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1是本专利技术实施例提供的函数重定向方法的流程示意图;图2是本专利技术实施例提供的函数重定向装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术公开了一种函数重定向方法及装置,旨在针对动态装载的库函数,实现一种稳定、高效的重定向方案。以下将通过具体实施例对本专利技术的函数重定向方法及装置进行详细说明。参考图1,是本专利技术实施例提供的函数重定向方法的流程示意图,如图1所述,该方法可以包括以下步骤:步骤101、在系统动态装载目标函数时,从系统获得动态装载目标函数的控制权。本专利技术通过预先设计系统的动态装载功能的旁路结构,来实现在系统动态装载目标函数时,基于该旁路结构从系统获得动态装载目标函数的控制权。其中,以系统提供的具备函数动态装载功能的系统结构体_dl_open_hook与_dlfcn_hook为例,_dl_open_hook提供了__libc_dlopen_mode、__libc_dlsym、__libc_dlclose等多个动态装载函数,_dlfcn_hook提供了dlopen、dlmopen、dlsym、dlvsym等多个动态装载函数,每个动态装载函数分别用于为软件程序提供相应的动态装载所需函数的功能。其中,_dl_open_hook这一系统结构体的具体结构如下:_dlfcn_hook这一本文档来自技高网...

【技术保护点】
1.一种函数重定向方法,其特征在于,包括:在系统动态装载目标函数时,从系统获得动态装载目标函数的控制权;确定需装载的所述目标函数是否需要重定向;若是,则获取所述目标函数对应的新的函数地址;基于所述新的函数地址,对所述目标函数进行重定向。

【技术特征摘要】
1.一种函数重定向方法,其特征在于,包括:在系统动态装载目标函数时,从系统获得动态装载目标函数的控制权;确定需装载的所述目标函数是否需要重定向;若是,则获取所述目标函数对应的新的函数地址;基于所述新的函数地址,对所述目标函数进行重定向。2.根据权利要求1所述的方法,其特征在于,所述从系统获得动态装载目标函数的控制权,包括:将系统提供的用于动态装载所述目标函数的第一动态装载函数旁路到自定义的第二动态装载函数。3.根据权利要求2所述的方法,其特征在于,所述将系统提供的用于动态装载所述目标函数的第一动态装载函数旁路到自定义的第二动态装载函数,包括:基于预先制定的重定向函数结构体,将系统提供的用于动态装载所述目标函数的第一动态装载函数旁路到自定义的第二动态装载函数;所述重定向函数结构体包括:系统提供的动态装载函数与自定义的动态装载函数之间的指向关系信息。4.根据权利要求2或3所述的方法,其特征在于,所述确定需装载的所述目标函数是否需要重定向,包括:将所述目标函数的函数标识与预先制定的函数重定向信息进行比对;所述函数重定向信息至少包括:各个需被重定向的函数的函数标识以及每个需被重定向的函数对应的新的函数地址;基于比对结果,确定所述目标函数的函数标识是否包括在所述函数重定向信息中;若是,则所述目标函数需要重定向;若否,则所述目标函数不需要重定向。5.根据权利要求4所述的方法,其特征在于,在将所述第一动态装载函数旁路到所述第二动态装载函数后,所述目标函数的函数标识作为所述第二动态装载函数的参数;所述函数重定向信息以表结构形式组织并存储于一函数重定向表中;所述将所述目标函数的函数标识与预先制定的函数重定向信息进行比对,包括:将所述第二动态装载函数的参数与所述函数重定向表的表信息进行比对。6.一种函数重定向装置,其特征在于...

【专利技术属性】
技术研发人员:贾佳
申请(专利权)人:北京椒图科技有限公司
类型:发明
国别省市:北京,11

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

1