一种动态链接库文件的拦截方法、装置及终端设备与流程

文档序号:11951537阅读:277来源:国知局
一种动态链接库文件的拦截方法、装置及终端设备与流程

本发明涉及计算机技术领域,尤其涉及一种动态链接库文件的拦截方法、装置及终端设备。



背景技术:

随着互联网技术发展,病毒,木马等恶意程序技术层出不穷,系统安全软件应对技术方案也需日益更新。动态链接库文件(Dynamic Link Library,简称DLL)也是恶意程序的一种运行文件,这些恶意的DLL可能被加载到进程上运行。然而,拦截恶意的DLL加载也是杀毒软件的基本功能。

现有杀毒软件的恶意DLL拦截方法是挂钩创建进程会话的内核函数NtCreateSection实现的。通常在打开DLL会话时,杀毒软件会对恶意DLL进行判断和拦截。现有技术中有关进程加载DLL的方法有两种:一种是主动调用加载动态链接库的应用层函数loadlibray加载DLL,另一种是读取导入表加载DLL。现有技术中杀毒软件对恶意DLL拦截方法可以拦截主动调用加载动态链接库的应用层函数loadlibray加载DLL方式,且系统不会弹错误提示。对于读取导入表加载DLL方式,通过现有技术方案的DLL拦截方法,虽然可以实现对恶意DLL的拦截,但是系统会弹出错误提示,影响用户体验。



技术实现要素:

有鉴于此,本发明实施例提供一种动态链接库文件的拦截方法、装置及终端设备,能够解决现有的挂钩创建进程会话的内核函数NtCreateSection虽然可以实现对恶意DLL的拦截,但是由于系统会弹出错误提示而影响用户体验的问题。

第一方面,本发明实施例提供一种动态链接库文件的拦截方法,包括:

当系统通过导入表加载动态链接库文件时,获取回调函数中的映像信息结构参数;

根据所述映像信息结构参数,定位所述动态链接库文件的入口函数地址;

将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统。

结合第一方面,在第一方面的第一种实施方式中,所述动态链接库文件的拦截方法,在所述获取回调函数中的映像信息结构参数之前,还包括:

预置加载回调模块,所述加载回调模块中定义有所述回调函数。

结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,所述预置加载回调模块采用调用内核函数实现。

结合第一方面的第二种实施方式,在第一方面的第三种实施方式中,所述将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统步骤,包括:

获取动态链接库文件的加载成功指令和动态链接库文件的入口函数退出指令;

将所述动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存;

将所述动态链接库文件的加载成功指令返回给所述系统,以便所述系统实现所述动态链接库文件的拦截。

结合第一方面的第二种实施方式,在第一方面的第四种实施方式中,所述动态链接库文件的加载成功指令中携带有所述加载成功标识。

第二方面,本发明实施例提供一种动态链接库文件的拦截装置,包括:

参数获取单元,用于当系统通过导入表加载动态链接库文件时,获取回调函数中的映像信息结构参数;

定位单元,用于根据所述映像信息结构参数,定位所述动态链接库文件的入口函数地址;

信息处理单元,用于将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统。

结合第二方面,在第二方面的第一种实施方式中,该装置,还包括:

预置单元,用于预置加载回调模块,所述加载回调模块中定义有所述回调函数。

结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述预置加载回调模块采用调用内核函数实现。

结合第二方面的第二种实施方式,在第二方面的第三种实施方式中,所述信息处理单元包括:

指令获取子单元,用于获取动态链接库文件的加载成功指令和动态链接库文件的入口函数退出指令;信息修改子单元,用于将所述动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存;信息发送子单元,用于将所述动态链接库文件的加载成功指令返回给所述系统,以便所述系统实现所述动态链接库文件的拦截。

结合第二方面的第二种实施方式,在第二方面的第四种实施方式中,所述动态链接库文件的加载成功指令中携带有所述加载成功标识。

第三方面,本发明实施例提供一种终端设备,所述终端设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述终端设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的动态链接库文件的拦截方法。

本发明实施例提供的一种动态链接库文件的拦截方法、装置及终端设备,通过在系统导入表加载动态链接库文件时,根据回调函数中的映像信息结构参数定位所述动态链接库文件的入口函数地址,通过将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统,实现了拦截动态链接库文件的加载使得系统免受所述动态链接库文件侵害。其中,所述动态链接库文件的入口函数退出指令可以实现系统退出入口函数,不再执行入口函数中的任何功能,所述动态链接库文件的加载成功指令,以便所述系统确定所述动态链接库文件加载成功,从而使得系统不会因为拦截动态链接库文件而发出错误提示,从而能够解决现有的系统弹出错误提示的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明的动态链接库文件的拦截方法实施例一的流程图;

图2为本发明的动态链接库文件的拦截方法实施例二的流程图;

图3为本发明的动态链接库文件的拦截装置实施例一的结构示意图;

图4为本发明的动态链接库文件的拦截装置实施例二的结构示意图;

图5为本发明终端设备一个实施例的结构示意图。

具体实施方式

下面结合附图对本发明实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

图1为本发明的动态链接库文件的拦截方法实施例一的流程图,如图1所示,本实施例的方法可以包括:

步骤101、当系统通过导入表加载动态链接库文件时,获取回调函数中的映像信息结构参数。

本实施例中,所述回调函数中的映像信息结构参数PIMAGE_INFO中保存有所要加载的DLL的基地址。

步骤102、根据所述映像信息结构参数,定位所述动态链接库文件的入口函数地址。

本实施例中,由于所述映像信息结构参数中保存有所要加载的DLL的基地址,所要加载的DLL的基地址可定位到所要加载DLL的入口函数地址。入口函数即是所述所要加载的DLL的首先执行的函数地址。如果所述入口函数向系统返回失败,即DLL会加载失败,系统也会弹错误提示;如果所述入口函数向系统返回成功,即DLL会加载成功,系统不会弹错误提示。

步骤103、将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统。

本实施例中,所述动态链接库文件的入口函数退出指令可以实现让系统退出入口函数,不再执行入口函数中的任何功能,所述动态链接库文件的加载成功指令,可以令所述系统认为所述动态链接库文件加载成功,从而使得系统不会因为拦截动态链接库文件而发出错误提示,从而能够解决现有的系统弹出错误提示的问题。

本实施例中,通过回调函数将所述定位的动态链接库文件的入口函数地址对应的内存进行修改,即,将所述动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并通过所述回调函数向系统返回所述动态链接库文件的加载成功指令。具体的讲,就是回调函数将所述动态链接库文件的加载成功指令返回给系统,即将动态链接库文件的加载状态信息强行修改为加载成功标识,通过所述加载成功指令携带所述加载成功标识通知系统所述动态链接库文件的加载成功,从而可以避免系统发出弹错误提示。

本发明实施例提供的一种动态链接库文件的拦截方法,通过在系统导入表加载动态链接库文件时,根据回调函数中的映像信息结构参数定位所述动态链接库文件的入口函数地址,通过将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统,实现了拦截动态链接库文件的加载使得系统免受所述动态链接库文件侵害。其中,所述动态链接库文件的入口函数退出指令可以实现系统退出入口函数,不再执行入口函数中的任何功能,所述动态链接库文件的加载成功指令,以便所述系统确定所述动态链接库文件加载成功,从而使得系统不会因为拦截动态链接库文件而发出错误提示,从而能够解决现有的系统弹出错误提示的问题。

图2为本发明的动态链接库文件的拦截方法实施例二流程图,如图2所示,本实施例在图1所示方法实施例的基础上,还包括预置加载回调模块,所述加载回调模块中定义有所述回调函数。本实施例的方法具体包括:

步骤201、预置加载回调模块,所述加载回调模块中定义有所述回调函数。

本实施例中,无需挂钩内核函数,而是所述预置加载回调模块采用调用内核函数实现。例如:可采用调用windows内核函数PsSetLoadImageNotifyRoutine来实现预置所述加载回调模块,定义所述回调函数即映射信息结构函数ImageNotifyRoutine。通过预置所述加载回调模块,系统会在后续所有导入表加载动态链接库文件时,都会执行到回调函数即映射信息结构函数ImageNotifyRoutine。

步骤202、当系统通过导入表加载动态链接库文件时,获取回调函数中的映像信息结构参数。

本实施例中,获取回调函数中的映像信息结构参数的过程和上述方法实施例的步骤101类似,此处不再赘述。

步骤203、根据所述映像信息结构参数,定位所述动态链接库文件的入口函数地址。

本实施例中,定位所述动态链接库文件的入口函数地址的过程和上述方法实施例的步骤102类似,此处不再赘述。

步骤204、获取动态链接库文件的加载成功指令和动态链接库文件的入口函数退出指令;

步骤205、将所述动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将所述动态链接库文件的加载成功指令返回给所述系统。

本实施例中,将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统的过程和上述方法实施例的步骤103类似,此处不再赘述。

需要说明的是,此处将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统的过程,可以通过汇编语句mov eax 1和ret 8实现;其中,所述汇编语句mov eax 1表示返回值放在eax寄存器上,所述返回值为1,即返回加载成功。此处只有返回加载成功,系统运行的进程上DLL的加载器才会认为所述DLL已经加载成功,不作出错误提示,如果返回失败,则系统会提示错误。通过汇编语句ret 8可以实现所述系统退出所述入口函数,所述系统将不再执行入口函数中的任何功能,包括一些模块初始化工作,这样所述DLL就不能被加载,达到拦截的效果。

本实施例,通过所述动态链接库文件的入口函数退出指令可以实现系统退出入口函数,不再执行入口函数中的任何功能,从而实现所述动态链接库文件的拦截;通过向系统返回所述动态链接库文件的加载成功指令,使得所述系统确定所述动态链接库文件加载成功,从而使得系统不会因为拦截动态链接库文件而发出错误提示,从而能够解决现有的系统弹出错误提示的问题。

需要说明的是,本发明技术方案可以运用于客户端驱动程序中,可支持32位系统和64位系统。

图3为本发明的动态链接库文件的拦截装置实施例一的结构示意图,如图3所示,本实施例的装置可以包括:参数获取单元11,定位单元12和信息处理单元13;其中,所述参数获取单元11,用于当系统通过导入表加载动态链接库文件时,获取回调函数中的映像信息结构参数;所述定位单元12,用于根据所述映像信息结构参数,定位所述动态链接库文件的入口函数地址;所述信息处理单元13,用于将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统。

本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图4为本发明动态链接库文件的拦截装置实施例二的结构示意图,如图4所示,本实施例的装置在图3所示装置结构的基础上,还包括:预置单元14;所述预置单元14,用于预置加载回调模块,所述加载回调模块中定义有所述回调函数。所述预置加载回调模块采用调用内核函数实现。

需要说明的是,所述信息处理单元包括:指令获取子单元,用于获取动态链接库文件的加载成功指令和动态链接库文件的入口函数退出指令;信息修改子单元,用于将所述动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存;信息发送子单元,用于将所述动态链接库文件的加载成功指令返回给所述系统,以便所述系统实现所述动态链接库文件的拦截。

还需要说明的是,所述动态链接库文件的加载成功指令中携带有所述加载成功标识。

本实施例的装置,可以用于执行图1或图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本发明实施例提供的一种动态链接库文件的拦截装置,通过在系统导入表加载动态链接库文件时,根据回调函数中的映像信息结构参数定位所述动态链接库文件的入口函数地址,通过将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统,实现了拦截动态链接库文件的加载使得系统免受所述动态链接库文件侵害。其中,所述动态链接库文件的入口函数退出指令可以实现系统退出入口函数,不再执行入口函数中的任何功能,所述动态链接库文件的加载成功指令,以便所述系统确定所述动态链接库文件加载成功,从而使得系统不会因为拦截动态链接库文件而发出错误提示,从而能够解决现有的系统弹出错误提示的问题。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。

尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。

在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本发明实施例还提供一种终端设备,所述终端设备包含前述任一实施例所述的装置。

图5为本发明终端设备一个实施例的结构示意图,可以实现本发明图1-2所示实施例的流程,如图5所示,上述终端设备可以包括:壳体41、处理器42、存储器43、电路板44和电源电路45,其中,电路板44安置在壳体41围成的空间内部,处理器42和存储器43设置在电路板44上;电源电路45,用于为上述终端设备的各个电路或器件供电;存储器43用于存储可执行程序代码;处理器42通过读取存储器43中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的动态链接库文件的拦截方法。

处理器42对上述步骤的具体执行过程以及处理器42通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-2所示实施例的描述,在此不再赘述。

该终端设备以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。

(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。

(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

(5)其他具有数据交互功能的终端设备。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

本发明实施例提供的一种终端设备,通过在系统导入表加载动态链接库文件时,根据回调函数中的映像信息结构参数定位所述动态链接库文件的入口函数地址,通过将动态链接库文件的入口函数退出指令写入所述动态链接库文件的入口函数地址对应的内存,并将动态链接库文件的加载成功指令返回给所述系统,实现了拦截动态链接库文件的加载使得系统免受所述动态链接库文件侵害。其中,所述动态链接库文件的入口函数退出指令可以实现系统退出入口函数,不再执行入口函数中的任何功能,所述动态链接库文件的加载成功指令,以便所述系统确定所述动态链接库文件加载成功,从而使得系统不会因为拦截动态链接库文件而发出错误提示,从而能够解决现有的系统弹出错误提示的问题。

为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1