CN109992328A - 一种函数重定向方法及装置 - Google Patents

一种函数重定向方法及装置 Download PDF

Info

Publication number
CN109992328A
CN109992328A CN201910193265.0A CN201910193265A CN109992328A CN 109992328 A CN109992328 A CN 109992328A CN 201910193265 A CN201910193265 A CN 201910193265A CN 109992328 A CN109992328 A CN 109992328A
Authority
CN
China
Prior art keywords
function
dynamic loading
objective function
objective
redirection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910193265.0A
Other languages
English (en)
Other versions
CN109992328B (zh
Inventor
贾佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING JIAOTU TECHNOLOGY Co Ltd
Original Assignee
BEIJING JIAOTU TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING JIAOTU TECHNOLOGY Co Ltd filed Critical BEIJING JIAOTU TECHNOLOGY Co Ltd
Priority to CN201910193265.0A priority Critical patent/CN109992328B/zh
Publication of CN109992328A publication Critical patent/CN109992328A/zh
Application granted granted Critical
Publication of CN109992328B publication Critical patent/CN109992328B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

一种函数重定向方法及装置
技术领域
本发明属于计算机技术领域,尤其涉及一种函数重定向方法及装置。
背景技术
在linux主机防护软件中,为了第一时间发现与处理威胁,对系统库函数进行重定向通常是必须的。
函数的装载分为两种方式,一种是在程序执行时基于程序内部的函数地址直接调用函数,另一种是通过系统库提供的动态装载函数对所需的功能函数进行显示装载也即动态装载。对于第二种装载方式,目前的一种重定向方案是,通过直接拦截并修改函数内部指令实现函数动态装载的重定向,该重定向方案在多CPU(Central Processing Unit,中央处理器)、多任务系统中即便暂停其他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这一系统结构体的具体结构如下:
针对上述的系统结构体_dl_open_hook所提供的__libc_dlopen/__libc_dlsym/__libc_dlclose等多个动态装载函数,本发明自定义了与系统的这些动态装载函数原型一样的重定向后的动态装载函数__libc_dlopen_mode_wrapper/__libc_dlsym_wrapper/__libc_dlclose_wrapper,同时,相对应地定义了涵盖上述重定向后的各动态装载函数的重定向函数结构体dl_open_hook_dl_open_hook_wrapper,并利用系统提供的注册机制将自定义的这些信息在系统中进行了注册。
所述重定向函数结构体dl_open_hook_dl_open_hook_wrapper包括:系统结构体_dl_open_hook提供的各动态装载函数与针对_dl_open_hook自定义的重定向后的上述各动态装载函数之间的指向关系信息。该重定向函数结构体dl_open_hook_dl_open_hook_wrapper的结构具体如下:
针对上述的系统结构体_dlfcn_hook所提供的dlopen/dlmopen/dlsym/dlvsym等多个动态装载函数,本发明自定义了与系统的这些动态装载函数原型一样的重定向后的动态装载函数dlopen_wrapper/dlmopen_wrapper/dlsym_wrapper/dlvsym_wrapper,同时,相对应地定义了涵盖上述重定向后的各动态装载函数的重定向函数结构体dlfcn_hook_dlfcn_hook_wrapper,并同样利用系统提供的注册机制将自定义的这些信息在系统中进行了注册。
所述重定向函数结构体dlfcn_hook_dlfcn_hook_wrapper包括:系统结构体_dlfcn_hook提供的各动态装载函数与针对_dlfcn_hook自定义的重定向后的上述各动态装载函数之间的指向关系信息。该重定向函数结构体dlfcn_hook_dlfcn_hook_wrapper的结构具体如下:
在自定义上述各个重定向动态装载函数及重定向函数结构体的基础上,可基于自定义的各个重定向动态装载函数及重定向函数结构体,为系统的动态装载功能实现一旁路结构。
从而,当系统动态装载目标函数时,基于上述设计,具体可利用预先制定的相应重定向函数结构体,将系统的用于动态装载目标函数的第一动态装载函数旁路到自定义的第二动态装载函数,也即,当目标函数被动态装载时,基于上述设计会从系统的动态装载函数进入到自定义的wrapper相关函数,以此实现从系统获得动态装载目标函数的控制权,从而为后续目标函数的重定向提供支持。
其中,在将所述第一动态装载函数旁路到所述第二动态装载函数后,所述目标函数的函数标识(如函数名等)具体作为所述第二动态装载函数的参数。
步骤102、确定需装载的所述目标函数是否需要重定向。
本发明还预先制定了一函数重定向表,并定义了该函数重定向表的表结构,其表结构的相关字段包括:
1)被重定向的函数的函数标识,如函数名等;
2)被重定向的函数的新的函数地址。
通过制定上述函数重定向表并定义其表结构,可支持技术人员基于实际需求将需要重定向的函数的相关信息,如需要重定向的函数的函数名及其新的函数地址等写入该函数重定向表。
在将所述第一动态装载函数旁路到所述第二动态装载函数获得系统的控制权后,可进一步将所述第二动态装载函数的参数(即所述目标函数的函数名)与所述函数重定向表中的函数重定向信息进行比对,基于比对结果确定所述第二动态装载函数的参数是否包括在所述函数重定向表的函数重定向信息中,若是,则表示所述目标函数为需要重定向的函数,从而需对所述目标函数进行重定向,若否,则相应地表示所述目标函数为不需要重定向的函数,不需对所述目标函数进行重定向。
步骤103、若是,则获取所述目标函数对应的新的函数地址。
在确定出所述目标函数需要重定向的情况下,可进一步从所述函数重定向表中获取所述目标函数对应的新的函数地址。
步骤104、基于所述新的函数地址,对所述目标函数进行重定向。
最终可基于获取的所述目标函数的新的函数地址,完成对目标函数的重定向。
由以上方案可知,本发明提供的函数重定向方法,使用了系统提供的注册机制,通过自定义的重定向动态装载函数及重定向函数结构体旁路了系统的动态装载函数,并进一步使用了自定义的函数重定向表来最终重定向需要动态装载的函数,采用本发明方案,可基于二级跳的方式较为巧妙的实现函数动态装载的重定向。本发明方案对于系统及非系统调用函数的动态装载的重定向均能较好地适用,同时本发明方案在进行函数动态装载的重定向时,未使用传统的hook拦截方式、未直接拦截并替换函数指令,可保障重定向操作的原子化,从而最终可稳定、高效地实现函数动态装载的重定向,为linux主机的安全防护提供了一种稳定而牢固的底层机制。
本发明同时公开了一种能够实现上述方法的函数重定向装置,该装置可适用于对动态装载的库函数的重定向中,参考图2示出的该函数重定向装置的结构示意图,该装置包括:
第一获取单元201,用于在系统动态装载目标函数时,从系统获得动态装载目标函数的控制权。
本发明通过预先设计系统的动态装载功能的旁路结构,来实现在系统动态装载目标函数时,基于该旁路结构从系统获得动态装载目标函数的控制权。
其中,以系统提供的具备函数动态装载功能的系统结构体_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这一系统结构体的具体结构如下:
针对上述的系统结构体_dl_open_hook所提供的__libc_dlopen/__libc_dlsym/__libc_dlclose等多个动态装载函数,本发明自定义了与系统的这些动态装载函数原型一样的重定向后的动态装载函数__libc_dlopen_mode_wrapper/__libc_dlsym_wrapper/__libc_dlclose_wrapper,同时,相对应地定义了涵盖上述重定向后的各动态装载函数的重定向函数结构体dl_open_hook_dl_open_hook_wrapper,并利用系统提供的注册机制将自定义的这些信息在系统中进行了注册。
所述重定向函数结构体dl_open_hook_dl_open_hook_wrapper包括:系统结构体_dl_open_hook提供的各动态装载函数与针对_dl_open_hook自定义的重定向后的上述各动态装载函数之间的指向关系信息。该重定向函数结构体dl_open_hook_dl_open_hook_wrapper的结构具体如下:
针对上述的系统结构体_dlfcn_hook所提供的dlopen/dlmopen/dlsym/dlvsym等多个动态装载函数,本发明自定义了与系统的这些动态装载函数原型一样的重定向后的动态装载函数dlopen_wrapper/dlmopen_wrapper/dlsym_wrapper/dlvsym_wrapper,同时,相对应地定义了涵盖上述重定向后的各动态装载函数的重定向函数结构体dlfcn_hook_dlfcn_hook_wrapper,并同样利用系统提供的注册机制将自定义的这些信息在系统中进行了注册。
所述重定向函数结构体dlfcn_hook_dlfcn_hook_wrapper包括:系统结构体_dlfcn_hook提供的各动态装载函数与针对_dlfcn_hook自定义的重定向后的上述各动态装载函数之间的指向关系信息。该重定向函数结构体dlfcn_hook_dlfcn_hook_wrapper的结构具体如下:
在自定义上述各个重定向动态装载函数及重定向函数结构体的基础上,可基于自定义的各个重定向动态装载函数及重定向函数结构体,为系统的动态装载功能实现一旁路结构。
从而,当系统动态装载目标函数时,基于上述设计,具体可利用预先制定的相应重定向函数结构体,将系统的用于动态装载目标函数的第一动态装载函数旁路到自定义的第二动态装载函数,也即,当目标函数被动态装载时,基于上述设计会从系统的动态装载函数进入到自定义的wrapper相关函数,以此实现从系统获得动态装载目标函数的控制权,从而为后续目标函数的重定向提供支持。
其中,在将所述第一动态装载函数旁路到所述第二动态装载函数后,所述目标函数的函数标识(如函数名等)具体作为所述第二动态装载函数的参数。
确定单元202,用于确定需装载的所述目标函数是否需要重定向。
本发明还预先制定了一函数重定向表,并定义了该函数重定向表的表结构,其表结构的相关字段包括:
1)被重定向的函数的函数标识,如函数名等;
2)被重定向的函数的新的函数地址。
通过制定上述函数重定向表并定义其表结构,可支持技术人员基于实际需求将需要重定向的函数的相关信息,如需要重定向的函数的函数名及其新的函数地址等写入该函数重定向表。
在将所述第一动态装载函数旁路到所述第二动态装载函数获得系统的控制权后,可进一步将所述第二动态装载函数的参数(所述目标函数的函数名)与所述函数重定向表中的函数重定向信息进行比对,基于对比结果确定所述第二动态装载函数的参数是否包括在所述函数重定向表的函数重定向信息中,若是,则表示所述目标函数为需要重定向的函数,从而需对所述目标函数进行重定向,若否,则相应地表示所述目标函数为不需要重定向的函数,不需对所述目标函数进行重定向。
第二获取单元203,用于在所述目标函数需要重定向的情况下,获取所述目标函数对应的新的函数地址。
在确定出所述目标函数需要重定向的情况下,可进一步从所述函数重定向表中获取所述目标函数对应的新的函数地址。
重定向单元204,用于基于所述新的函数地址,对所述目标函数进行重定向。
最终可基于获取的所述目标函数的新的函数地址,完成对目标函数的重定向。
由以上方案可知,本发明提供的函数重定向装置,使用了系统提供的注册机制,通过自定义的重定向动态装载函数及重定向函数结构体旁路了系统的动态装载函数,并进一步使用了自定义的函数重定向表来最终重定向需要动态装载的函数,采用本发明方案,可基于二级跳的方式较为巧妙的实现了函数动态装载的重定向。本发明方案对于系统及非系统调用函数的动态装载的重定向均能较好地适用。同时本发明方案在进行函数动态装载的重定向时,未使用传统的hook拦截方式、未直接拦截并替换函数指令,可保障重定向操作的原子化,从而最终可稳定、高效地实现函数动态装载的重定向,为linux主机的安全防护提供了一种稳定而牢固的底层机制。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910193265.0A CN109992328B (zh) 2019-03-14 2019-03-14 一种函数重定向方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910193265.0A CN109992328B (zh) 2019-03-14 2019-03-14 一种函数重定向方法及装置

Publications (2)

Publication Number Publication Date
CN109992328A true CN109992328A (zh) 2019-07-09
CN109992328B CN109992328B (zh) 2023-05-12

Family

ID=67130664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910193265.0A Active CN109992328B (zh) 2019-03-14 2019-03-14 一种函数重定向方法及装置

Country Status (1)

Country Link
CN (1) CN109992328B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101984409A (zh) * 2010-11-10 2011-03-09 南京南瑞继保电气有限公司 一种用于Linux系统测试代码注入的方法
CN102693394A (zh) * 2012-06-07 2012-09-26 奇智软件(北京)有限公司 一种用于拦截应用程序对服务的调用的方法和装置
CN102855138A (zh) * 2012-07-20 2013-01-02 腾讯科技(深圳)有限公司 一种api的拦截方法、装置及移动终端
US20150324224A1 (en) * 2014-05-12 2015-11-12 Sony Computer Entertainment Europe Limited Apparatus and method of data capture
CN105677550A (zh) * 2015-12-29 2016-06-15 广州华多网络科技有限公司 一种基于Linux系统的性能采集分析的方法、装置及系统
CN105844157A (zh) * 2016-04-20 2016-08-10 北京鼎源科技有限公司 一种针对Android系统App行为的监控方法
CN108415739A (zh) * 2018-02-28 2018-08-17 腾讯科技(深圳)有限公司 一种动态链接库函数的钩挂方法、装置和存储介质
CN109344616A (zh) * 2018-09-13 2019-02-15 西安交通大学 一种移动应用程序动态加载行为监控方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101984409A (zh) * 2010-11-10 2011-03-09 南京南瑞继保电气有限公司 一种用于Linux系统测试代码注入的方法
CN102693394A (zh) * 2012-06-07 2012-09-26 奇智软件(北京)有限公司 一种用于拦截应用程序对服务的调用的方法和装置
CN102855138A (zh) * 2012-07-20 2013-01-02 腾讯科技(深圳)有限公司 一种api的拦截方法、装置及移动终端
US20150324224A1 (en) * 2014-05-12 2015-11-12 Sony Computer Entertainment Europe Limited Apparatus and method of data capture
CN105677550A (zh) * 2015-12-29 2016-06-15 广州华多网络科技有限公司 一种基于Linux系统的性能采集分析的方法、装置及系统
CN105844157A (zh) * 2016-04-20 2016-08-10 北京鼎源科技有限公司 一种针对Android系统App行为的监控方法
CN108415739A (zh) * 2018-02-28 2018-08-17 腾讯科技(深圳)有限公司 一种动态链接库函数的钩挂方法、装置和存储介质
CN109344616A (zh) * 2018-09-13 2019-02-15 西安交通大学 一种移动应用程序动态加载行为监控方法及装置

Also Published As

Publication number Publication date
CN109992328B (zh) 2023-05-12

Similar Documents

Publication Publication Date Title
CN104584563B (zh) 客户端应用访问服务器侧数据库驱动的服务的系统和方法
CN107818509A (zh) 业务数据校验方法、装置、存储介质及电子设备
CN110032393A (zh) 一种微服务发布方法、装置、设备及介质
CN102385674B (zh) 用于使用当前检测智能来进行应用选择的系统和方法
CN103412875B (zh) 基于ahp决策模型的cdn策略调整方法
CN105843650A (zh) 一种智能终端中的应用程序管理方法和装置
EP3565219A1 (en) Service execution method and device
CN105956138A (zh) 数据库连接的控制方法和装置
CN107040578A (zh) 数据同步方法、装置和系统
CN110430278A (zh) 负载均衡配置方法及装置
CN103457870B (zh) 用于分布式系统的负载均衡及高可用性子系统及方法
CN110430590A (zh) 网络切片匹配方法及装置
CN106681656A (zh) 一种动态可调的云存储系统容错方法
CN103647811B (zh) 一种实现应用访问后台服务的方法和装置
CN105872038A (zh) 云桌面系统的高并发处理方法及装置
CN109918569A (zh) 药品信息推送方法、服务器及可读存储介质
CN107423881A (zh) 任务分发方法及装置
CN110137958A (zh) 一种用户电压暂降分析方法及其系统
Raupp et al. Preliminary exception handling analysis for the ITER plasma control system
CN109992328A (zh) 一种函数重定向方法及装置
CN106454847A (zh) 一种公共WiFi钓鱼风险的检测方法和装置
EP2348676B1 (en) Method for accessing magnanimity data of intelligent network service database and system and device thereof
CN114615276B (zh) 一种内容分发网络域名调度方法及装置
CN115277599B (zh) 限流场景下的回流方法、装置、计算机设备及存储介质
CN106993148B (zh) 一种录像覆盖方法、装置及网络硬盘录像机

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant