CN109240707A - 防止恶意动态链接库dll文件注入的方法和装置 - Google Patents
防止恶意动态链接库dll文件注入的方法和装置 Download PDFInfo
- Publication number
- CN109240707A CN109240707A CN201811155263.4A CN201811155263A CN109240707A CN 109240707 A CN109240707 A CN 109240707A CN 201811155263 A CN201811155263 A CN 201811155263A CN 109240707 A CN109240707 A CN 109240707A
- Authority
- CN
- China
- Prior art keywords
- file
- dll
- information
- program
- dll file
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
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
本发明实施例公开了一种防止恶意动态链接库DLL文件注入的方法和装置。其中,该方法包括:若终端检测到第一程序启动,则注册镜像加载回调函数,并获取特征库,所述特征库中包括预设的需要拦截的第一DLL文件的M种文件信息,M为正整数;若终端检测到第一程序加载第二DLL文件,则调用镜像加载回调函数;终端获取第二DLL文件的文件信息,判断第二DLL文件的文件信息与第一DLL文件的文件信息是否匹配;若匹配,则停止加载第二DLL文件;当第一程序退出时,终端删除镜像加载回调函数,并释放注册镜像加载回调函数所申请的内存。本申请的技术方案能够稳定地拦截恶意DLL文件,并降低拦截恶意DLL文件的成本。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种防止恶意动态链接库DLL文件注入的方法和装置。
背景技术
随着互联网和信息技术应用的高速发展,网络技术与信息技术已经应用到全球各领域,对人们的生产和生活产生了前所未有的影响,成为了人们生活中不可或缺的组成部分。与此同时,网络安全问题也随之出现,网络安全问题已成为影响国家安全、经济发展、个人利害的重大关键问题。
在Windows平台下,由于微软平台对开发者提供软件开发工具包(英文:SoftwareDevelopment Kit,缩写:SDK)比较灵活,导致整个平台的生态环境比较恶劣。恶意程序通过某种手段,注入到当前正在运行的程序中,让正在运行的程序加载并执行恶意的动态链接库(英文:dynamic link library,缩写:DLL)文件,恶意程序可以通过执行该DLL文件达到间接的提权的目的,也可以通过执行该DLL在正在运行的程序内进行破坏,影响该程序的运行等。由于恶意程序会导致当前运行的程序被利用或者被破环,因此拦截恶意DLL的注入就显得尤为的迫切。
目前有通过驱动程序拦截恶意DLL注入,即当有恶意DLL文件加载时,通过驱动程序获取恶意DLL文件的注入位置,然后对恶意DLL文件的注入位置进行更改,使恶意DLL文件无法执行。但这种方法无法在真正意义上去拦截恶意DLL注入,只是恶意DLL注入及加载之后没有执行而已,且由于涉及较底层的驱动,会导致拦截成本较高。
发明内容
本发明实施例提供一种防止恶意动态链接库DLL文件注入的方法和装置,能够稳定地拦截恶意DLL文件,达到保护程序的目的,并降低拦截恶意DLL文件的成本。
第一方面,本发明实施例提供了一种防止恶意动态链接库DLL文件注入的方法,包括:若终端检测到第一程序启动,则注册镜像加载回调函数,并获取特征库,特征库中包括预设的需要拦截的第一DLL文件的M种文件信息,M为正整数;若终端检测到第一程序加载第二DLL文件,则调用镜像加载回调函数,第二DLL文件为第三方软件或程序注入到第一程序的DLL文件;终端获取第二DLL文件的文件信息,判断第二DLL文件的文件信息与第一DLL文件的文件信息是否匹配;若匹配,则停止加载第二DLL文件;当第一程序退出时,终端删除镜像加载回调函数,并释放注册镜像加载回调函数所申请的内存。
本发明实施例所提方法达到了稳定地拦截恶意DLL文件的效果,降低了拦截恶意DLL文件的成本。
可选的,所述文件信息包括以下信息中的至少一种:文件版本信息、文件名称信息、公司签名信息、内部名称信息、产品名称信息、产品版本信息、文件描述信息、文件特征信息、文件路径信息。
可选的,判断第二DLL文件的文件信息与第一DLL文件的文件信息是否匹配,包括:终端判断第二DLL文件的文件信息中是否存在与第一DLL文件的文件信息的任一种文件信息相匹配的文件信息,若存在,则第二DLL文件的文件信息与第一DLL文件的文件信息匹配,若不存在,则第二DLL文件的文件信息与第一DLL文件的文件信息不匹配,第二DLL文件继续进行加载。
本发明实施例将正在加载的第二DLL文件的文件信息与预先设置的第一DLL文件的文件信息进行匹配,所述第一DLL文件的文件信息包含了恶意DLL文件所特有的文件信息,进而阻止了满足匹配的第二DLL文件的加载,实现了对恶意DLL文件的拦截。
可选的,所述停止加载所述第二DLL文件,包括:删除或修改第二DLL文件的标识;校验所述第二DLL文件的标识与预设的标识是否匹配,若不匹配,则停止加载第二DLL文件。
本发明实施例利用系统校验机制阻止上述满足匹配的第二DLL文件的加载,实现了更稳定地拦截恶意DLL文件的效果。
可选的,所述第二DLL文件的标识,包括:所述第二DLL文件的标识为可移植的可执行(英文:portable executable,缩写:PE)文件的文件结构的DOS头部标识。
本发明实施例利用了PE文件的DOS头部标识的唯一性,当终端对第二DLL文件的DOS头部标识进行自动校验时,若第二DLL文件的DOS头部标识发生了变化,系统将自动停止第二DLL文件的加载。将PE文件的DOS头部标识作为第二DLL文件的标识,简单易操作,且能达到停止加载上述满足匹配的第二DLL文件的目的。
第二方面,本发明实施例还提供了一种防止恶意动态链接库DLL文件注入的装置,该装置实现上述第一方面防止恶意动态链接库DLL文件注入的方法中的终端的功能,因此也能实现第一方面防止恶意动态链接库DLL文件注入的方法所具备的有益效果。其中,该装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括至少一个与上述功能相对应的模块。
可选的,该装置包括:注册单元、第一获取单元、调用单元、第二获取单元、匹配单元、第一加载单元和移除单元。
其中,注册单元,用于若防止恶意动态链接库DLL文件注入的装置检测到第一程序启动,则注册镜像加载回调函数;第一获取单元,用于若防止恶意动态链接库DLL文件注入的装置检测到第一程序启动,则获取特征库,特征库中包括预设的需要拦截的第一DLL文件的M种文件信息;调用单元,用于若防止恶意动态链接库DLL文件注入的装置检测到第一程序加载第二DLL文件,则调用镜像加载回调函数,第二DLL文件为第三方软件或程序注入到第一程序的DLL文件;第二获取单元,用于获取第二DLL文件的文件信息;匹配单元,用于判断第二DLL文件的文件信息与第一DLL文件的文件信息是否匹配;第一加载单元,用于若第二DLL文件的文件信息与第一DLL文件的文件信息匹配,则停止加载第二DLL文件;移除单元,用于当第一程序退出时,删除镜像加载回调函数,并释放注册镜像加载回调函数所申请的内存。
可选的,所述文件信息包括以下信息中的至少一种:文件版本信息、文件名称信息、公司签名信息、内部名称信息、产品名称信息、产品版本信息、文件描述信息、文件特征信息、文件路径信息。
可选的,所述匹配单元,具体用于:判断第二DLL文件的文件信息中是否存在与第一DLL文件的文件信息的任一种文件信息相匹配的文件信息,若存在,则第二DLL文件的文件信息与第一DLL文件的文件信息匹配,若不存在,则第二DLL文件的文件信息与第一DLL文件的文件信息不匹配,第二DLL文件继续进行加载。
可选的,所述第一加载单元包括:修改单元、校验单元和第二加载单元。其中,修改单元,用于删除或修改第二DLL文件的标识;校验单元,用于校验所述第二DLL文件的标识与预设的标识是否匹配;第二加载单元,用于若第二DLL文件的标识与预设的标识是不匹配,则停止加载第二DLL文件。
可选的,所述第二DLL文件的标识,包括:PE文件的文件结构的DOS头部标识。
第三方面,本发明实施例还提供了一种终端,该终端实现上述第一方面防止恶意动态链接库DLL文件注入的方法中终端的功能,因此也能实现第一方面防止恶意动态链接库DLL文件注入的方法所具备的有益效果。其中,该终端的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括至少一个与上述功能相对应的模块。该终端包处理器、存储器、收发器和总线;处理器、存储器和收发器通过总线连接并完成相互间的通信;存储器存储可执行程序代码;收发器用于在处理器的控制下与其他设备进行通信;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行一种防止恶意动态链接库DLL文件注入的方法。其中,所述方法包括:若处理器检测到第一程序启动,则注册镜像加载回调函数,并获取特征库,特征库中包括预设的需要拦截的第一DLL文件的M种文件信息,M为正整数;若处理器检测到第一程序加载第二DLL文件,则调用镜像加载回调函数,第二DLL文件为第三方软件或程序注入到第一程序的DLL文件;处理器获取第二DLL文件的文件信息,判断第二DLL文件的文件信息与第一DLL文件的文件信息是否匹配;若匹配,则停止加载第二DLL文件;当第一程序退出时,处理器删除镜像加载回调函数,并释放注册镜像加载回调函数所申请的内存。
第四方面,本发明实施例提供一种计算机可读存储介质,可读存储介质上存储有指令,当其在处理器上运行时,使得处理器执行上述第一方面描述的防止恶意动态链接库DLL文件注入的方法。
第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器执行上述第一方面描述的防止恶意动态链接库DLL文件注入的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种终端的结构示意图;
图2为本发明实施例提供的一种防止恶意动态链接库DLL文件注入的方法流程示意图;
图3为本发明实施例提供的PE文件的文件结构示意图;
图4为本发明实施例提供的PE文件的DOS头的定义示意图;
图5为本发明实施例提供的PE文件的结构信息示意图;
图6为本发明实施例提供的另一种防止恶意动态链接库DLL文件注入的方法流程示意图;
图7为本发明实施例提供的另一种终端的结构示意图。
具体实施方式
本发明实施例提供一种防止恶意动态链接库DLL文件注入的方法和装置,能够稳定地拦截恶意DLL文件,达到保护程序的目的,并降低拦截恶意DLL文件的成本。
本发明说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。
本发明提供的防止恶意动态链接库DLL文件注入的方法的实施例可以应用于使用Windows计算机系统的终端上,例如,笔记本电脑、客户机或移动互联网设备等。终端中安装有一个或多个程序,所述程序可以为系统类应用程序,也可以为软件类应用程序,本发明实施例不限定程序的类型。
请参见图1,图1为本发明实施例提供的一种终端100的硬件结构示意图,终端100包括:存储器101、收发器102及与所述存储器101和收发器102耦合的处理器103。存储器101用于存储指令,处理器103用于执行指令,收发器102用于在处理器103的控制下与其他设备进行通信。当处理器103在执行指令时可根据指令执行防止恶意动态链接库DLL文件注入的方法。
其中,处理器103可以是中央处理器(英文:central processing unit,简称:CPU),通用处理器,数字信号处理器(英文:digital signal processor,简称:DSP),专用集成电路(英文:application-specific integrated circuit,简称:ASIC),现场可编程门阵列(英文:field programmable gate array,简称:FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。收发器102可以是通信接口、收发电路等,其中,通信接口是统称,可以包括一个或多个接口,例如终端与服务器之间的接口。
可选地,终端100还可以包括总线104。其中,存储器101、收发器102以及处理器103可以通过总线104相互连接;总线104可以是外设部件互连标准(英文:peripheralcomponent interconnect,简称:PCI)总线或扩展工业标准结构(英文:extended industrystandard architecture,简称:EISA)总线等。总线104可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
除了图1所示的存储器101、收发器102、处理器103以及上述总线104之外,实施例中终端100通常根据该终端的实际功能,还可以包括其他硬件,对此不再赘述。
在上述运行环境下,本发明实施例提供了如图2所示的防止恶意动态链接库DLL文件注入的方法。
如图2所示,本发明实施例提供的一种防止恶意动态链接库DLL文件注入的方法可以包括:
S201、若终端检测到第一程序启动,则注册镜像加载回调函数,并获取特征库,特征库中包括预设的需要拦截的第一DLL文件的M种文件信息,M为正整数。
第一程序为Windows平台下的可执行程序,可以为系统类应用程序,也可以为软件类应用程序,本发明实施例不限定程序的类型。特征库中预设的需要拦截的第一DLL文件的M种文件信息包含了恶意DLL文件的文件信息。
可选的,所述文件信息包括以下信息中的至少一种:文件版本信息、文件名称信息、公司签名信息、内部名称信息、产品名称信息、产品版本信息、文件描述信息、文件特征信息、文件路径信息。例如:公司签名信息为Signature="xxxx有限公司",文件版本信息为FileVersion="1.0.1.1",文件名称信息为DangerModule="xxxx.dll"。不限于上述文件信息种类,所述文件信息还可以包括其他文件信息。
镜像加载回调函数可用于获取DLL文件的文件信息、进行DLL文件的文件信息的匹配以及更改DLL文件的标识。注册镜像加载回调函数,即通过微软提供给开发者的应用程序编程接口(英文:Application Programming Interface,简称:API),利用LdrRegisterDllNotification函数注册镜像加载回调函数。API是一些预先定义的函数,API函数包含在Windows系统目录下的DLL文件中,目的是给开发人员提供基于某软件或硬件得以访问一组例程的能力,而又无需访问源码或理解内部工作机制的细节。LdrRegisterDllNotification函数用于注册第一函数,第一函数用于监视进程装载DLL文件或卸载DLL文件的事件,例如,第一函数为镜像加载回调函数。
可选的,所述特征库存储在终端本地目录下,第一程序启动前,接收用户的预设操作,所述预设操作为对终端本地目录下的特征库中的文件信息进行预先设置。若终端检测到第一程序启动,则读取终端本地目录下的特征库中的文件信息作为预设的需要拦截的第一DLL文件的M种文件信息。
可选的,所述特征库存储在服务器目录下。若终端检测到第一程序启动,下载服务器目录下的特征库中的文件信息作为预设的需要拦截的第一DLL文件的M种文件信息。
S202、若终端检测到第一程序加载第二DLL文件,则调用镜像加载回调函数,第二DLL文件为第三方软件或程序注入到第一程序的DLL文件。
可选的,第二DLL文件为恶意的第三方软件或恶意的程序注入到第一程序的DLL文件。
可选的,当终端检测到第一程序加载第二DLL文件时,终端调用所述镜像加载回调函数,进而执行步骤S203;若未检测到第一程序加载第二DLL文件,则终端执行步骤S205。
S203、终端获取所述第二DLL文件的文件信息,判断第二DLL文件的文件信息与第一DLL文件的文件信息是否匹配,若是,执行步骤S204,若否,执行步骤S205。
终端调用所述镜像加载回调函数,获取所述第二DLL文件的文件信息,进而判断第二DLL文件的文件信息与第一DLL文件的文件信息是否匹配。
可选的,终端判断第二DLL文件的文件信息中是否存在与第一DLL文件的文件信息的任一种文件信息相匹配的文件信息,若存在,则第二DLL文件的文件信息与第一DLL文件的文件信息匹配,终端执行步骤S204;若不存在,则第二DLL文件的文件信息与第一DLL文件的文件信息不匹配,第二DLL文件将继续进行加载,终端执行步骤S205。
S204、停止加载第二DLL文件。
可选的,停止加载所述第二DLL文件包括以下步骤(1)-步骤(2):
(1)、删除或修改第二DLL文件的标识。
(2)、校验第二DLL文件,若第二DLL文件的标识与预设的标识不匹配,则停止加载第二DLL文件。
其中,DLL文件是Windows平台下PE文件的一种,PE文件是Windows平台上可执行文件的总称,常见的有DLL文件(扩展名.dll)、可执行文件(扩展名.exe)、目标文件(扩展名.obj)、设备驱动程序(扩展名.sys)等。如图3所示,PE文件由四部分组成:DOS头、NT头、节表和节数据。
其中,DOS头的存在是为了兼容以前的MS-DOS系统,DOS头的定义如图4所示。如图所示,变量e_magic表示DOS头部标识,即字符串“MZ”,所有PE文件开头都有DOS头部标识,这是以一个名叫Mark Zbikowski的DOS可执行文件的设计者首字母命名的。以windows记事本(notepad.exe)文件的结构信息为例,如图5所示,可以观察到图上的前两个字节即为DOS头部标识“MZ”。
可选的,若第二DLL文件的文件信息与所述第一DLL文件的文件信息匹配,则删除或修改第二DLL文件的文件结构的头部标识,头部标识即为字符串“MZ”。例如,将字符串“MZ”修改为字符串“ZZ”或“00”。
可选的,删除或修改所述第二DLL文件的标识后,结束镜像加载函数的调用。
可选的,镜像加载函数的调用结束后,利用系统校验机制,终端将自动校验第二DLL文件,若第二DLL文件的标识与预设的标识不匹配,则停止加载所述第二DLL文件,所述预设的标志即为字符串“MZ”。
S205、当第一程序退出时,终端删除镜像加载回调函数,并释放注册所述镜像加载回调函数所申请的内存。
可选的,若第一程序退出,所述终端通过微软提供开发者的API,利用LdrUnregisterDllNotification函数移除镜像加载回调函数,并释放注册镜像加载回调函数所申请的内存,然后返回执行步骤S201。若第一程序未退出,则返回执行步骤S202。
现有技术中的恶意DLL文件的拦截方法,即基于底层驱动对恶意DLL文件的注入位置进行更改,使加载后的恶意DLL文件无法执行。区别于现有技术,本发明实施例提供的防止恶意动态链接库DLL文件注入的方法利用了系统校验机制,从根本上阻止了恶意DLL文件的加载,简单易操作,实现了更稳定地拦截恶意DLL文件的效果,且本发明实施例提供的方法为程序自保护方法,不涉及底层驱动,可以降低拦截恶意DLL文件的成本。此外,本发明实施例提供的防止恶意动态链接库DLL文件注入的方法,当程序退出时,便删除镜像加载回调函数,并释放注册所述镜像加载回调函数所申请的内存,因此,在程序未启动时,所提方法不会占用内存,避免了对系统性能产生不必要的影响。
此外,微软平台对开发者提供软件开发工具包SDK比较灵活,导致整个平台的生态环境比较恶劣,网络安全问题越发严重,各种恶意程序层出不穷,存在恶意程序伪装成可信任的无恶意程序,达到步骤S203中文件信息不匹配的效果,即第二DLL文件的文件信息与第一DLL文件的文件信息不匹配,第二DLL文件将继续进行加载。
可选的,若第二DLL文件加载完成,防止恶意动态链接库DLL文件注入的方法还可以包括:恶意动态链接库DLL文件的深度拦截,具体包括以下步骤:
S206、监视第二DLL文件的执行过程中是否存在危害操作;
可选的,所述危险操作包括下述操作中的至少一种:删除或修改系统文件、删除或修改注册表、结束或修改安全进程、更改系统设置、加载恶意动态链接库DLL文件和删除或修改系统记录等。
S207、若存在危害操作,则显示安全隐患提示框;
S208、接收用户的选择操作,所述选择操作为选择是否拦截第二DLL文件;
S209、若选择操作为拦截第二DLL文件,则终端获取第二DLL文件的注入位置,并修改该第二DLL文件的注入位置。
若第二DLL文件的注入位置被修改,则该第二DLL文件无法执行,从而实现了对恶意DLL文件的进一步拦截。
本发明实施例通过判断所述第二DLL文件的文件信息与所述第一DLL文件的文件信息是否匹配,分辨出恶意DLL文件。此外,对于伪装成无恶意文件的恶意DLL文件,本发明实施例提供了恶意动态链接库DLL文件的深度拦截,以达到进一步拦截恶意DLL文件的目的。
可选的,在检测到第一程序启动之前,本发明实施例提供的一种防止恶意动态链接库DLL文件注入的方法还可以包括:对终端内的需要保护的程序做标记,标记为待保护程序。
可选的,在检测到第一程序启动后,注册镜像加载回调函数之前,还包括:判断所述第一程序是否为待保护程序;若是,则注册镜像加载回调函数。
可选的,在检测到第一程序启动后,获取特征库之前,还包括:判断所述第一程序是否为待保护程序;若是,则获取特征库。
可选的,为了应对恶意程序的快速更新,在防止恶意动态链接库DLL文件注入的过程中,要不断更新包含恶意DLL文件的文件信息的特征库。
图6为本发明实施例提供的另一种防止恶意动态链接库DLL文件注入的方法的流程示意图。该方法包括:
S601、终端检测第一程序是否启动,若是,则执行步骤S602;
S602、注册镜像加载回调函数,并获取特征库,特征库中包括预设的需要拦截的第一DLL文件的M种文件信息,M为正整数;
S603、终端监测第一程序是否加载第二DLL文件,第二DLL文件为第三方软件或程序注入到第一程序的DLL文件,若是,则执行步骤S604,若否,则执行步骤S611;
S604、终端调用镜像加载回调函数;
S605、所述终端获取第二DLL文件的文件信息,
S606、所述终端判断第二DLL文件的文件信息与特征库中的文件信息(即第一DLL文件的文件信息)是否匹配,若是,则执行步骤S607,若否,则执行步骤S611;
S607、删除或修改第二DLL文件的标识;
S608、校验第二DLL文件的标识是否与预设的标识匹配,若是,则执行步骤S609,若否,则执行步骤S610;
S609、停止加载第二DLL文件;
S610、继续加载第二DLL文件;
S611、对特征库中预设的需要拦截的第一DLL文件的M种文件信息进行更新操作;
可选的,所述更新操作包括:根据实际需求的变化,用户对本地目录下的特征库进行更新,读取更新后的本地目录下的特征库中的文件信息作为预设的需要拦截的第一DLL文件的M种文件信息;或者,检测服务器目录下的特征库是否有更新,若有,则重新下载服务器目录下的特征库中的文件信息作为预设的需要拦截的第一DLL文件的M种文件信息。
S612、终端检测第一程序是否退出,若是,则执行步骤S613,若否,则执行步骤S603;
S613、终端删除镜像加载回调函数;
S614、终端释放注册镜像加载回调函数所申请的内存。
可以看出,本发明实施例方案中,为了应对恶意程序的快速更新,对特征库中预设的需要拦截的第一DLL文件的M种文件信息进行了更新操作,第一DLL文件的M种文件信息代表了恶意DLL文件的文件信息。通过不断更新第一DLL文件的M种文件信息,可以达到更高效地拦截效果。
在采用集成的单元的情况下,图7示给出了上述终端的一种可能的结构示意图。如图7所示,移动设备包括:注册单元701、第一获取单元702、调用单元703、第二获取单元704、匹配单元705、第一加载单元706和移除单元707。
其中,注册单元701,用于若防止恶意动态链接库DLL文件注入的装置检测到第一程序启动,则注册镜像加载回调函数。
第一获取单元702,用于若防止恶意动态链接库DLL文件注入的装置检测到第一程序启动,则获取特征库,特征库中包括预设的需要拦截的第一DLL文件的M种文件信息。
调用单元703,用于若防止恶意动态链接库DLL文件注入的装置检测到第一程序加载第二DLL文件,则调用镜像加载回调函数,第二DLL文件为第三方软件或程序注入到第一程序的DLL文件。
第二获取单元704,用于获取第二DLL文件的文件信息。
匹配单元705,用于判断第二DLL文件的文件信息与第一DLL文件的文件信息是否匹配。
第一加载单元706,用于若第二DLL文件的文件信息与第一DLL文件的文件信息匹配,则停止加载第二DLL文件。
移除单元707,用于当第一程序退出时,删除镜像加载回调函数,并释放注册镜像加载回调函数所申请的内存。
结合本发明实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(英文:random access memory,简称:RAM)、闪存、只读存储器(英文:read only memory,简称:ROM)、可擦除可编程只读存储器(英文:erasable programmable rom,简称:EPROM)、电可擦可编程只读存储器(英文:electrically eprom,简称:EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于网络设备中。当然,处理器和存储介质也可以作为分立组件存在于终端中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明实施例的保护范围,凡在本发明实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明实施例的保护范围之内。
Claims (10)
1.一种防止恶意动态链接库DLL文件注入的方法,其特征在于,包括:
若终端检测到第一程序启动,则注册镜像加载回调函数,并获取特征库,所述特征库中包括预设的需要拦截的第一DLL文件的M种文件信息,M为正整数;
若所述终端检测到所述第一程序加载第二DLL文件,则调用所述镜像加载回调函数,所述第二DLL文件为第三方软件或程序注入到所述第一程序的DLL文件;
所述终端获取所述第二DLL文件的文件信息,判断所述第二DLL文件的文件信息与所述第一DLL文件的文件信息是否匹配;
若匹配,则所述终端停止加载所述第二DLL文件;
当所述第一程序退出时,所述终端删除所述镜像加载回调函数,并释放注册所述镜像加载回调函数所申请的内存。
2.根据权利要求1所述的方法,其特征在于,所述文件信息包括以下信息中的至少一种:
文件版本信息、文件名称信息、公司签名信息、内部名称信息、产品名称信息、产品版本信息、文件描述信息、文件特征信息、文件路径信息。
3.根据权利要求1或2任一项所述的方法,其特征在于,所述判断所述第二DLL文件的文件信息与所述第一DLL文件的文件信息是否匹配,包括:
所述终端判断所述第二DLL文件的文件信息中是否存在与所述第一DLL文件的文件信息的任一种文件信息相匹配的文件信息,若存在,则所述第二DLL文件的文件信息与所述第一DLL文件的文件信息匹配。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述停止加载所述第二DLL文件,包括:
所述终端删除或修改所述第二DLL文件的标识;
所述终端校验所述第二DLL文件的标识与预设的标识是否匹配,若不匹配,则停止加载所述第二DLL文件。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述第二DLL文件的标识,包括:
可移植的可执行文件的文件结构的头部标识。
6.一种防止恶意动态链接库DLL文件注入的装置,其特征在于,包括:
注册单元,用于若所述防止恶意动态链接库DLL文件注入的装置检测到第一程序启动,则注册镜像加载回调函数;
第一获取单元,用于若所述防止恶意动态链接库DLL文件注入的装置检测到第一程序启动,则获取特征库,所述特征库中包括预设的需要拦截的第一DLL文件的M种文件信息;
调用单元,用于若所述防止恶意动态链接库DLL文件注入的装置检测到所述第一程序加载第二DLL文件,则调用所述镜像加载回调函数,所述第二DLL文件为第三方软件或程序注入到所述第一程序的DLL文件;
第二获取单元,用于获取所述第二DLL文件的文件信息;
匹配单元,用于判断所述第二DLL文件的文件信息与所述第一DLL文件的文件信息是否匹配;
第一加载单元,用于若所述第二DLL文件的文件信息与所述第一DLL文件的文件信息匹配,则停止加载所述第二DLL文件;
移除单元,用于当所述第一程序退出时,删除所述镜像加载回调函数,并释放注册所述镜像加载回调函数所申请的内存。
7.根据权利要求6所述的装置,其特征在于,所述文件信息包括以下信息中的至少一种:
文件版本信息、文件名称信息、公司签名信息、内部名称信息、产品名称信息、产品版本信息、文件描述信息、文件特征信息、文件路径信息。
8.根据权利要求6或7任一项所述的装置,其特征在于,所述匹配单元,具体用于:
判断所述第二DLL文件的文件信息中是否存在与所述第一DLL文件的文件信息的任一种文件信息相匹配的文件信息,若存在,则所述第二DLL文件的文件信息与所述第一DLL文件的文件信息匹配。
9.根据权利要求6至8任一项所述的装置,其特征在于,所述第一加载单元包括:
修改单元,用于删除或修改所述第二DLL文件的标识;
校验单元,用于校验所述第二DLL文件的标识与预设的标识是否匹配;
第二加载单元,若第二DLL文件的标识与预设的标识不匹配,则停止加载所述第二DLL文件。
10.一种终端,其特征在于,包括:
处理器、存储器、收发器和总线;所述处理器、所述存储器和所述收发器通过所述总线连接并完成相互间的通信;所述存储器存储可执行程序代码;所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种防止恶意动态链接库DLL文件注入的方法;其中,所述方法包括:
若所述处理器检测到第一程序启动,则注册镜像加载回调函数,并获取特征库,所述特征库中包括预设的需要拦截的第一DLL文件的M种文件信息,M为正整数;若所述处理器检测到所述第一程序加载第二DLL文件,则调用所述镜像加载回调函数,所述第二DLL文件为第三方软件或程序注入到所述第一程序的DLL文件;所述处理器获取所述第二DLL文件的文件信息,判断所述第二DLL文件的文件信息与所述第一DLL文件的文件信息是否匹配;若匹配,则停止加载所述第二DLL文件;当所述第一程序退出时,所述处理器删除所述镜像加载回调函数,并释放注册所述镜像加载回调函数所申请的内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811155263.4A CN109240707A (zh) | 2018-09-29 | 2018-09-29 | 防止恶意动态链接库dll文件注入的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811155263.4A CN109240707A (zh) | 2018-09-29 | 2018-09-29 | 防止恶意动态链接库dll文件注入的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109240707A true CN109240707A (zh) | 2019-01-18 |
Family
ID=65054784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811155263.4A Pending CN109240707A (zh) | 2018-09-29 | 2018-09-29 | 防止恶意动态链接库dll文件注入的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109240707A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110555307A (zh) * | 2019-09-06 | 2019-12-10 | 深信服科技股份有限公司 | 识别和处理伪装型系统动态库的方法、装置、设备及介质 |
CN111368299A (zh) * | 2020-03-02 | 2020-07-03 | 西安四叶草信息技术有限公司 | 动态链接库文件劫持检测方法、设备及存储介质 |
CN115688109A (zh) * | 2023-01-04 | 2023-02-03 | 杭州云缔盟科技有限公司 | 一种基于恶意代码检测报警系统的恶意代码检测方法 |
CN116028929A (zh) * | 2023-01-19 | 2023-04-28 | 安芯网盾(北京)科技有限公司 | 基于Linux内核的无文件攻击的检测方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216929A (zh) * | 2007-12-26 | 2008-07-09 | 广东威创视讯科技股份有限公司 | 一种处理图像的方法 |
CN102999721A (zh) * | 2012-11-09 | 2013-03-27 | 北京奇虎科技有限公司 | 一种程序处理方法和系统 |
CN103034808A (zh) * | 2012-11-30 | 2013-04-10 | 北京奇虎科技有限公司 | 扫描方法、设备和系统以及云端管理方法和设备 |
CN104731592A (zh) * | 2015-03-24 | 2015-06-24 | 无锡天脉聚源传媒科技有限公司 | 一种在应用程序中集成Bonjour服务的方法和装置 |
CN106126291A (zh) * | 2016-06-28 | 2016-11-16 | 北京金山安全软件有限公司 | 一种删除恶意文件的方法、装置及电子设备 |
US20170126716A1 (en) * | 2015-10-30 | 2017-05-04 | F-Secure Corporation | Malware detection |
-
2018
- 2018-09-29 CN CN201811155263.4A patent/CN109240707A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216929A (zh) * | 2007-12-26 | 2008-07-09 | 广东威创视讯科技股份有限公司 | 一种处理图像的方法 |
CN102999721A (zh) * | 2012-11-09 | 2013-03-27 | 北京奇虎科技有限公司 | 一种程序处理方法和系统 |
CN103034808A (zh) * | 2012-11-30 | 2013-04-10 | 北京奇虎科技有限公司 | 扫描方法、设备和系统以及云端管理方法和设备 |
CN104731592A (zh) * | 2015-03-24 | 2015-06-24 | 无锡天脉聚源传媒科技有限公司 | 一种在应用程序中集成Bonjour服务的方法和装置 |
US20170126716A1 (en) * | 2015-10-30 | 2017-05-04 | F-Secure Corporation | Malware detection |
CN106126291A (zh) * | 2016-06-28 | 2016-11-16 | 北京金山安全软件有限公司 | 一种删除恶意文件的方法、装置及电子设备 |
Non-Patent Citations (2)
Title |
---|
MARC DACIER ET AL.: ""Stealth Loader : Trace-free Program Loading for API Obfuscation"", 《RESEARCH IN ATTACKS, INTRUSIONS, AND DEFENSES》 * |
张晓新等: "《完全掌握加密解密实战超级手册》", 31 May 2010 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110555307A (zh) * | 2019-09-06 | 2019-12-10 | 深信服科技股份有限公司 | 识别和处理伪装型系统动态库的方法、装置、设备及介质 |
CN110555307B (zh) * | 2019-09-06 | 2021-09-17 | 深信服科技股份有限公司 | 识别和处理伪装型系统动态库的方法、装置、设备及介质 |
CN111368299A (zh) * | 2020-03-02 | 2020-07-03 | 西安四叶草信息技术有限公司 | 动态链接库文件劫持检测方法、设备及存储介质 |
CN115688109A (zh) * | 2023-01-04 | 2023-02-03 | 杭州云缔盟科技有限公司 | 一种基于恶意代码检测报警系统的恶意代码检测方法 |
CN115688109B (zh) * | 2023-01-04 | 2023-03-28 | 杭州云缔盟科技有限公司 | 一种基于恶意代码检测报警系统的恶意代码检测方法 |
CN116028929A (zh) * | 2023-01-19 | 2023-04-28 | 安芯网盾(北京)科技有限公司 | 基于Linux内核的无文件攻击的检测方法及装置 |
CN116028929B (zh) * | 2023-01-19 | 2023-08-22 | 安芯网盾(北京)科技有限公司 | 基于Linux内核的无文件攻击的检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109240707A (zh) | 防止恶意动态链接库dll文件注入的方法和装置 | |
Wang et al. | Vultron: catching vulnerable smart contracts once and for all | |
Bugiel et al. | Xmandroid: A new android evolution to mitigate privilege escalation attacks | |
US7779472B1 (en) | Application behavior based malware detection | |
US10032026B1 (en) | Static and dynamic security analysis of apps for mobile devices | |
US7640587B2 (en) | Source code repair method for malicious code detection | |
US11550912B2 (en) | Detection of exploitative program code | |
CN105354493B (zh) | 基于虚拟化技术的终端可信增强方法及系统 | |
EP3230919B1 (en) | Automated classification of exploits based on runtime environmental features | |
US20130219493A1 (en) | Remote Security Self-Assessment Framework | |
US10547626B1 (en) | Detecting repackaged applications based on file format fingerprints | |
CN104517054A (zh) | 一种检测恶意apk的方法、装置、客户端和服务器 | |
Falsina et al. | Grab'n run: Secure and practical dynamic code loading for android applications | |
CN105760787B (zh) | 用于检测随机存取存储器中的恶意代码的系统及方法 | |
US20190114421A1 (en) | Just in time memory analysis for malware detection | |
CN107783776A (zh) | 固件升级包的处理方法及装置、电子设备 | |
US10956615B2 (en) | Securely defining operating system composition without multiple authoring | |
EP2876572A1 (en) | Firmware-level security agent supporting operating system-level security in computer system | |
CN107808096A (zh) | 检测apk运行时被注入恶意代码的方法、终端设备及存储介质 | |
Dai Zovi | Apple iOS 4 security evaluation | |
US20190005244A1 (en) | Executing encrypted boot loaders | |
CN106803040A (zh) | 病毒特征码处理方法及装置 | |
Pan et al. | Advertisement removal of Android applications by reverse engineering | |
Choi et al. | Large-scale analysis of remote code injection attacks in android apps | |
CN108876617B (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20191126 Address after: Room 105-53811, No. 6 Baohua Road, Hengqin New District, Zhuhai City, Guangdong Province Applicant after: Zhuhai Leopard Technology Co.,Ltd. Address before: 519070, No. 10, main building, No. six, science Road, Harbour Road, Tang Wan Town, Guangdong, Zhuhai, 601F Applicant before: Zhuhai Juntian Electronic Technology Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190118 |