Dll文件的拦截处理方法、装置及电子设备的制造方法
【专利摘要】本发明实施例公开一种DLL文件的拦截处理方法、装置及电子设备,涉及系统安全技术领域,能够解决现有技术中不能实现对DLL文件的加载进行全面监控和拦截,可靠性和稳定性不高的技术问题。所述DLL文件的拦截处理方法包括:当通过钩子函数捕获到DLL文件被加载时,获取被加载的DLL文件的路径,其中,所述钩子函数挂钩LdrLoadDll函数;根据所述被加载的DLL文件的路径查询所述DLL文件的文件状态;当所述DLL文件为非安全文件时,对所述DLL文件进行拦截。本发明适用于对加载至应用程序的DLL文件进行全面拦截。
【专利说明】
DLL文件的拦截处理方法、装置及电子设备
技术领域
[0001]本发明涉及系统安全技术领域,尤其涉及一种DLL文件的拦截处理方法、装置及电子设备。【背景技术】
[0002]随着电脑互联网技术的发展,病毒、木马等恶意程序技术层出不穷,个别木马程序以IE进程为载体,以一个DLL(Dynamic Link Library,动态链接库)文件的形式加载到IE进程上执行。用户在IE上进行操作,例如进行网络购物并支付时,可能受到木马程序的监听或者攻击,造成用户财产损失。
[0003]为了对加载至IE进程上的DLL文件进行监控和拦截,现有技术中采用的一种技术方案为:将边界防御模块(kwsu1.dll)注入到IE进程,在边界防御模块上实现一整套API (Applicat1n Programming Interface,应用程序编程接口)函数挂钩实现功能拦截。其中包括了挂钩LoadLibray函数实现DLL文件的加载拦截。
[0004]DLL文件的加载流程为:LoadLibrary函数一>LdrLoadDll函数一> 内存映射到进程空间(CreateSect1n和MapViewOf Sect1n函数)一>进程加载DLL文件成功。当IE进程在加载任意DLL文件的时候,是需要调用LoadLibray函数实现DLL文件加载的,所以挂钩些函数可以实现DLL文件的拦截处理。
[0005]但是,如果木马程序以DLL文件的形式自实现一个LoadLibray函数,而不使用系统提供的LoadLibray函数,则上述技术方案中的挂钩LoadLibray函数无效,木马程序直接穿透到调用LdrLoadDll函数,最终导致木马程序加载至IE进程。因此,现有的DLL文件的监控和拦截方案不能实现对DLL文件的加载进行全面监控和拦截,可靠性和稳定性不高。
【发明内容】
[0006]有鉴于此,本发明实施例提供一种DLL文件的拦截处理方法、装置及电子设备,能够实现对加载至应用程序的DLL文件进行全面拦截,可靠性和稳定性更高。
[0007]第一方面,本发明实施例提供一种DLL文件的拦截处理方法,包括:
[0008]当通过钩子函数捕获到DLL文件被加载时,获取被加载的DLL文件的路径,其中,所述钩子函数挂钩LdrLoadDll函数;
[0009]根据所述被加载的DLL文件的路径查询所述DLL文件的文件状态;[〇〇1〇]当所述DLL文件为非安全文件时,对所述DLL文件进行拦截。
[0011]结合第一方面,在第一方面的第一种实施方式中,所述方法还包括:当所述DLL文件为安全文件时,调用LdrLoadDl 1函数,完成所述DLL文件的加载。
[0012]结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,所述钩子函数挂钩LdrLoadD 11函数为:所述钩子函数的地址替换LdrLoadD 11函数的地址。[〇〇13]结合第一方面的第二种实施方式,在第一方面的第三种实施方式中,所述非安全文件包括木马、病毒。
[0014]第二方面,本发明实施例提供一种DLL文件的拦截处理装置,包括:[0〇15]获取单元,用于当通过钩子函数捕获到DLL文件被加载时,获取被加载的DLL文件的路径,其中,所述钩子函数挂钩LdrLoadDl 1函数;[〇〇16]查询单元,用于根据所述被加载的DLL文件的路径查询所述DLL文件的文件状态; [〇〇17]拦截单元,用于当所述DLL文件为非安全文件时,对所述DLL文件进行拦截。
[0018]结合第二方面,在第二方面的第一种实施方式中,所述装置还包括:
[0019]加载单元,用于当所述DLL文件为安全文件时,调用LdrLoadDll函数,完成所述DLL 文件的加载。
[0020]结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述钩子函数挂钩LdrLoadD 11函数为:所述钩子函数的地址替换LdrLoadD 11函数的地址。
[0021]结合第二方面的第二种实施方式,在第二方面的第三种实施方式中,所述非安全文件包括木马、病毒。[0〇22]第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的DLL文件的拦截处理方法。[〇〇23]本发明实施例提供的一种DLL文件的拦截处理方法、装置及电子设备,当通过钩子函数捕获到DLL文件被加载时获取被加载的DLL文件的路径,其中,所述钩子函数挂钩 LdrLoadDl 1函数,根据所述被加载的DLL文件的路径查询所述DLL文件的文件状态,当所述 DLL文件为非安全文件时,对所述DLL文件进行拦截。与现有技术相比,本发明能够通过用于挂钩LdrLoadDl 1函数的更底层的钩子函数查询DLL文件的文件状态,由于更底层的函数实现细节更复杂,不容易被非安全文件利用及穿透破坏,从而可以实现对加载至应用程序的 DLL文件进行全面拦截,可靠性和稳定性更高。【附图说明】
[0024]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。[〇〇25]图1为本发明DLL文件的拦截处理方法实施例一的流程图;[〇〇26]图2为本发明DLL文件的拦截处理方法实施例二的流程图;[〇〇27]图3为本发明DLL文件的拦截处理装置实施例一的结构示意图;[〇〇28]图4为本发明DLL文件的拦截处理装置实施例二的结构示意图;
[0029]图5为本发明电子设备实施例的结构示意图。【具体实施方式】
[0030]下面结合附图对本发明实施例进行详细描述。
[0031]应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0032]图1为本发明DLL文件的拦截处理方法实施例一的流程图,所述方法应用于应用程序模块,如图1所示,本实施例一的方法可以包括:[〇〇33]步骤101、当通过钩子函数捕获到DLL文件被加载时,获取被加载的DLL文件的路径,其中,所述钩子函数挂钩LdrLoadDl 1函数;[〇〇34] 本实施例中,由于LdrLoadDl 1函数存在于系统模块ntdl 1.DLL文件之中,不是导出函数不能直接使用,调用GetProAddress(ntdll ? dll,“LdrLoadDll”)获取到LdrLoadDll函数的地址,定义一个钩子函数NewLdrLoadDll,将LdrLoadDl 1函数的地址替换为钩子函数 NewLdrLoadDl 1的地址,实现函数挂钩,加载DLL文件的流程变为这样:
[0035] LoadLibrary 函数一>NewLdrLoadDll—>LdrLoadDll 函数一> 内存映射到进程空间 (CreateSect1n 和 MapViewOfSect1n函数)一>进程加载DLL 文件成功。[〇〇36]步骤102、根据被加载的DLL文件的路径查询所述DLL文件的文件状态。
[0037]本实施例中,可以根据所要加载的DLL文件的路径,调用文件查询系统获取所述 DLL文件的文件状态。[〇〇38]步骤103、当所述DLL文件为非安全文件时,对所述DLL文件进行拦截。[〇〇39] 本实施例中,当所述DLL文件为非安全文件时,在钩子函数NewLdrLoadDll中直接退出,不再往下执行,也就是不会执行LdrLoadDl 1函数。
[0040]其中,所述非安全文件包括木马、病毒等恶意程序,但不仅限于此。[〇〇411本实施例,当通过钩子函数捕获到DLL文件被加载时获取被加载的DLL文件的路径,其中,所述钩子函数挂钩LdrLoadDll函数,根据所述被加载的DLL文件的路径查询所述 DLL文件的文件状态,当所述DLL文件为非安全文件时,对所述DLL文件进行拦截。与现有技术相比,本发明能够通过用于挂钩LdrLoadDll函数的更底层的钩子函数查询DLL文件的文件状态,由于更底层的函数实现细节更复杂,不容易被非安全文件利用及穿透破坏,从而可以实现对加载至应用程序的DLL文件进行全面拦截,可靠性和稳定性更高。[〇〇42]图2为本发明DLL文件的拦截处理方法实施例二的流程图,所述方法应用于应用程序模块,如图2所示,本实施例二的方法可以包括:[〇〇43]步骤201、当通过钩子函数捕获到DLL文件被加载时,获取被加载的DLL文件的路径,其中,所述钩子函数挂钩LdrLoadD 11函数。
[0044]本实施例中,获取被加载的DLL文件的路径的过程和上述方法实施例的步骤101类似,此处不再赘述。[〇〇45]步骤202、根据被加载的DLL文件的路径查询所述DLL文件的文件状态。[〇〇46]本实施例中,根据被加载的DLL文件的路径查询所述DLL文件的文件状态的过程和上述方法实施例的步骤102类似,此处不再赘述。[〇〇47]当所述DLL文件为非安全文件时,进入步骤203;当所述DLL文件为安全文件时,进入步骤204。[〇〇48]步骤203、对所述DLL文件进行拦截。
[0049]本实施例中,对所述DLL文件进行拦截的过程和上述方法实施例的步骤103类似, 此处不再赘述。
[0050] 步骤204、调用LdrLoadDll函数,完成所述DLL文件的加载。[〇〇511本实施例中,当所述DLL文件为安全文件时,就是一个正常的DLL文件的加载流程, 接着调用系统的L d r L 〇 a d D 1 1函数-》存映射到进程空间(C r e a t e S e c t i 〇 n和 MapViewOfSect1n函数)等,加载所述DLL文件。[〇〇52]本实施例,当通过钩子函数捕获到DLL文件被加载时获取被加载的DLL文件的路径,其中,所述钩子函数挂钩LdrLoadDll函数,根据所述被加载的DLL文件的路径查询所述 DLL文件的文件状态,当所述DLL文件为非安全文件时,对所述DLL文件进行拦截,当所述DLL 文件为安全文件时,正常加载所述DLL文件。与现有技术相比,本发明能够通过用于挂钩 LdrLoadDll函数的更底层的钩子函数查询DLL文件的文件状态,由于更底层的函数实现细节更复杂,不容易被非安全文件利用及穿透破坏,从而可以实现对加载至应用程序的DLL文件进行全面拦截,可靠性和稳定性更高。
[0053]图3为本发明DLL文件的拦截处理装置实施例一的结构示意图,所述装置位于驱动程序模块,如图3所示,本实施例一的装置可以包括:获取单元11、查询单元12、拦截单元13, 其中,获取单元11,用于当通过钩子函数捕获到DLL文件被加载时,获取被加载的DLL文件的路径,其中,所述钩子函数挂钩LdrLoadDll函数;查询单元12,用于根据所述被加载的DLL文件的路径查询所述DLL文件的文件状态;拦截单元13,用于当所述DLL文件为非安全文件时, 对所述DLL文件进行拦截。[〇〇54] 可选的,所述钩子函数挂钩LdrLoadDll函数为:所述钩子函数的地址替换 Ldr LoadD 11函数的地址。
[0055]本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。[〇〇56]图4为本发明DLL文件的拦截处理装置实施例二的结构示意图,如图4所示,本实施例二的装置在图3所示装置结构的基础上,进一步地,所述装置还包括:加载单元14,用于当所述DLL文件为安全文件时,调用LdrLoadDl 1函数,完成所述DLL文件的加载。
[0057]可选的,所述非安全文件包括木马、病毒等恶意程序,但不仅限于此。
[0058]本实施例的装置,可以用于执行图1或图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。[〇〇59]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0060]本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
[0061]尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0062]在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,〃计算机可读介质〃可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器 (ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDR0M)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0063]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。
[0064]在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0065]本发明实施例还提供一种电子设备,所述电子设备包含前述前述任一实施例所述的装置。
[0066]图5为本发明电子设备实施例的结构示意图,可以实现本发明图1或图2所示实施例的流程,如图5所示,上述电子设备可以包括:壳体31、处理器32、存储器33、电路板34和电源电路35,其中,电路板34安置在壳体31围成的空间内部,处理器32和存储器33设置在电路板34上;电源电路35,用于为上述电子设备的各个电路或器件供电;存储器33用于存储可执行程序代码;处理器32通过读取存储器33中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的DLL文件的拦截处理方法。[〇〇67] 处理器32对上述步骤的具体执行过程以及处理器32通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1或图2所示实施例的描述,在此不再赘述。
[0068] 该电子设备以多种形式存在,包括但不限于:[〇〇69](1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
[0070](2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
[0071](3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、 视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
[0072](4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。[〇〇73](5)其他具有数据交互功能的电子设备。
[0074]本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0075]为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
[0076]通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
【主权项】
1.一种DLL文件的拦截处理方法,其特征在于,包括:当通过钩子函数捕获到DLL文件被加载时,获取被加载的DLL文件的路径,其中,所述钩 子函数挂钩LdrLoadDll函数;根据所述被加载的DLL文件的路径查询所述DLL文件的文件状态;当所述DLL文件为非安全文件时,对所述DLL文件进行拦截。2.根据权利要求1所述的DLL文件的拦截处理方法,其特征在于,所述方法还包括:当所述DLL文件为安全文件时,调用LdrLoadDl 1函数,完成所述DLL文件的加载。3.根据权利要求1所述的DLL文件的拦截处理方法,其特征在于,所述钩子函数挂钩 Ldr LoadD 11函数为:所述钩子函数的地址替换Ldr LoadD 11函数的地址。4.根据权利要求1至3中任一项所述的DLL文件的拦截处理方法,其特征在于,所述非安 全文件包括木马、病毒。5.—种DLL文件的拦截处理装置,其特征在于,包括:获取单元,用于当通过钩子函数捕获到DLL文件被加载时,获取被加载的DLL文件的路 径,其中,所述钩子函数挂钩LdrLoadDl 1函数;查询单元,用于根据所述被加载的DLL文件的路径查询所述DLL文件的文件状态;拦截单元,用于当所述DLL文件为非安全文件时,对所述DLL文件进行拦截。6.根据权利要求5所述的DLL文件的拦截处理装置,其特征在于,所述装置还包括:加载单元,用于当所述DLL文件为安全文件时,调用LdrLoadDl 1函数,完成所述DLL文件 的加载。7.根据权利要求5所述的DLL文件的拦截处理装置,其特征在于,所述钩子函数挂钩 Ldr LoadD 11函数为:所述钩子函数的地址替换Ldr LoadD 11函数的地址。8.根据权利要求5至7中任一项所述的DLL文件的拦截处理装置,其特征在于,所述非安 全文件包括木马、病毒。9.一种电子设备,其特征在于,所述电子设备包括:壳体、处理器、存储器、电路板和电 源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源 电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理 器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执 行前述任一权利要求1-4所述的DLL文件的拦截处理方法。
【文档编号】G06F21/56GK105956475SQ201610327275
【公开日】2016年9月21日
【申请日】2016年5月17日
【发明人】李文靖
【申请人】北京金山安全软件有限公司