一种注入动态链接库文件的方法、装置及电子设备制造方法及图纸

技术编号:13749259 阅读:47 留言:0更新日期:2016-09-24 09:27
本发明专利技术的实施例公开一种注入动态链接库文件的方法、装置及电子设备,涉及文件注入技术,能够提升动态链接库文件注入的成功率。方法包括:依据接收的动态链接库文件加载请求分配进程,调用加载模块回调函数;解析加载模块回调函数,依据所述加载模块回调函数的参数获取通用导入表地址;读取通用导入表地址对应的通用导入表,从动态链接库文件加载请求包含的动态链接库文件中,提取未存储在通用导入表中的动态链接库文件;将提取的动态链接库文件写入所述通用导入表,生成更新通用表,写入至所述进程的内存空间;在所述内存空间中加载所述更新通用表中的动态链接库文件。本发明专利技术适用于对易被拦截的安全类动态链接库文件进行注入。

【技术实现步骤摘要】

本专利技术涉及文件注入技术,尤其涉及一种注入动态链接库文件的方法、装置及电子设备
技术介绍
随着计算机通信以及互联网技术的不断发展,电子设备的应用越来越普遍,例如,智能移动电话、个人数字助理、掌上电脑、笔记本电脑得到了越来越广泛的应用,电子设备中安装的应用程序(APP,Application)也越来越多,在Windows操作系统中,由于大量应用程序并不是一个完整的可执行(PE,Portable Executable)文件,可以被分割成一个或多个相对独立的动态链接库(DLL,Dynamic Link Library)文件,其中,DLL文件又可称之为DLL模块,以导入表的方式放置于Windows操作系统中,并在导入表中填充该DLL文件的导出函数的地址,当执行应用程序的一个或多个应用功能(加载)时,相应的进程可以通过调用导入表,通过枚举导入表中的每一DLL文件,调用windows LoadLibrary函数或windows CreateRemoteThread函数完成DLL文件的自加载(注入)或远程注入。但随着应用程序提供的应用功能的不断增多,一些恶意应用程序通过捆绑在恶意应用程序中的病毒或木马,可以对用户正常的应用程序的应用功能进行恶意拦截或阻止其加载,从而给操作系统或用户带来不便以及潜在的隐患。例如,由于现有技术是通过调用windows LoadLibrary函数或windows CreateRemoteThread函数完成DLL文件的注入,因而,恶意应用程序通过钩住(Hook)windows LoadLibrary函数或windows CreateRemoteThread函数,从而在应用程序通过自加载方法(调用windows LoadLibrary函数)或远程注入方法(调用windows CreateRemoteThread函数)注入恶意应用程序设定的例如安全防护DLL文件、文件修复DLL文件、病毒查杀DLL文件等DLL文件时,由预先设置的钩住函数进行处理,通过返回拒绝,从而导致应用程序的DLL文件无法被注入,DLL文件的注入成功率较低,使得应用程序对应该DLL文件的应用功
能失效。不仅使得电子设备失去或关闭防御病毒入侵的功能,导致用户电子设备的安全性下降,给电子设备的使用带来安全隐患,还会造成用户的物质和财富损失。目前,还没有一种有效的DLL文件注入方法,能够有效避免由于恶意应用程序的拦截而导致DLL文件无法加载的情况。因而,需要一种注入DLL文件的方法,可以采取相应的措施,保障正常应用程序的DLL文件加载不被恶意应用程序拦截,以增强电子设备操作系统的安全性。注入DLL文件的方法的技术方案如下:
技术实现思路
有鉴于此,本专利技术实施例提供一种注入动态链接库文件的方法、装置及电子设备,能够保障应用程序的动态链接库文件加载,提升动态连接库文件的注入成功率,以解决现有的注入动态链接库文件的方法易被拦截,不能加载动态链接库文件的问题。第一方面,本专利技术实施例提供一种注入动态链接库文件的方法,包括:依据接收的动态链接库文件加载请求分配进程,调用记录有所述进程的加载模块回调函数;解析所述加载模块回调函数,依据所述加载模块回调函数的参数获取通用导入表地址;读取所述通用导入表地址对应的通用导入表,从所述动态链接库文件加载请求包含的动态链接库文件中,提取未存储在所述通用导入表中的动态链接库文件;将提取的动态链接库文件写入所述通用导入表,生成更新通用表,写入至所述进程的内存空间;在所述内存空间中加载所述更新通用表中的动态链接库文件。结合第一方面,在第一方面的第一种实施方式中,所述依据所述第二参数以及第三参数获取通用导入表地址包括:获取所述加载模块回调函数的参数中的进程句柄;获取所述加载模块回调函数的参数中的进程映像地址;提取所述进程映像地址中的所述进程的映射基地址;依据所述进程句柄以及所述进程的映射基地址,获取通用导入表地址。结合第一方面,在第一方面的第二种实施方式中,在所述提取未存储在所述通用导入表中的动态链接库文件之后,将提取的动态链接库文件写入所述通用导入表之前,所述方法还包括:记录提取的动态链接库文件数;依据所述通用导入表中一节点占用的存储空间,计算所述提取的动态链接库文件数与所述存储空间的乘积,得到待申请空间;调用内存分配内核函数,在所述进程的内存空间上为所述更新通用表申请包含所述待申请空间以及通用导入表空间的更新通用表空间。结合第一方面的第二种实施方式,在第一方面的第三种实施方式中,所述将提取的动态链接库文件写入所述通用导入表,生成更新通用表,写入至所述进程的内存空间包括:在所述更新通用表的所述待申请空间中,将所述提取的动态链接库文件对应的数据依序填充至结构为映像输入描述的形实转换程序节点上;在所述更新通用表的所述通用导入表空间中,将所述通用导入表中动态链接库文件对应的数据依序填充至结构为映像输入描述的形实转换程序节点上,得到更新通用表。结合第一方面,在第一方面的第四种实施方式中,在所述依据接收的动态链接库文件加载请求分配进程之前,所述方法还包括:调用影像修改设置内核函数注册所述加载模块回调函数。结合第一方面、第一方面的第一种至第四种任一实施方式,在第一方面的第五种实施方式中,在所述内存空间中加载所述更新通用表中的动态链接库文件之后,所述方法还包括:利用所述更新通用表替换所述通用导入表并利用所述更新通用表地址替换所述通用导入表地址;在所述进程退出运行时,调用预先设置的进程创建退出回调函数,调用所述通用导入表替换所述更新通用表,利用所述通用导入表地址替换所述更新通
用表地址。结合第一方面的第五种实施方式,在第一方面的第六种实施方式中,调用创建进程通知设置内核函数注入所述进程创建退出回调函数。第二方面,本专利技术实施例提供一种注入动态链接库文件的装置,包括:回调函数调用模块、参数解析模块、文件提取模块、更新模块以及文件加载模块,其中,回调函数调用模块,用于依据接收的动态链接库文件加载请求分配进程,调用记录有所述进程的加载模块回调函数;参数解析模块,用于解析所述加载模块回调函数,依据所述加载模块回调函数的参数获取通用导入表地址;文件提取模块,用于读取所述通用导入表地址对应的通用导入表,从所述动态链接库文件加载请求包含的动态链接库文件中,提取未存储在所述通用导入表中的动态链接库文件;更新模块,用于将提取的动态链接库文件写入所述通用导入表,生成更新通用表,写入至所述进程的内存空间;文件加载模块,用于在所述内存空间中加载所述更新通用表中的动态链接库文件。结合第二方面,在第二方面的第一种实施方式中,所述参数解析模块包括:函数解析单元、进程句柄获取单元、进程映像地址获取单元、基地址提取单元以及导入表地址获取单元,其中,函数解析单元,用于解析所述加载模块回调函数;进程句柄获取单元,用于获取所述加载模块回调函数的参数中的进程句柄;进程映像地址获取单元,用于获取所述加载模块回调函数的参数中的进程映像地址;基地址提取单元,用于提取所述进程映像地址中的所述进程的映射基地址;导入表地址获取单元,用于依据所述进程句柄以及所述进程的映射基地址,获取通用导入表地址。结合第二方面,在第二方面的第二种实施方式中,所述装置还本文档来自技高网
...

【技术保护点】
一种注入动态链接库文件的方法,其特征在于,包括:依据接收的动态链接库文件加载请求分配进程,调用记录有所述进程的加载模块回调函数;解析所述加载模块回调函数,依据所述加载模块回调函数的参数获取通用导入表地址;读取所述通用导入表地址对应的通用导入表,从所述动态链接库文件加载请求包含的动态链接库文件中,提取未存储在所述通用导入表中的动态链接库文件;将提取的动态链接库文件写入所述通用导入表,生成更新通用表,写入至所述进程的内存空间;在所述内存空间中加载所述更新通用表中的动态链接库文件。

【技术特征摘要】
1.一种注入动态链接库文件的方法,其特征在于,包括:依据接收的动态链接库文件加载请求分配进程,调用记录有所述进程的加载模块回调函数;解析所述加载模块回调函数,依据所述加载模块回调函数的参数获取通用导入表地址;读取所述通用导入表地址对应的通用导入表,从所述动态链接库文件加载请求包含的动态链接库文件中,提取未存储在所述通用导入表中的动态链接库文件;将提取的动态链接库文件写入所述通用导入表,生成更新通用表,写入至所述进程的内存空间;在所述内存空间中加载所述更新通用表中的动态链接库文件。2.根据权利要求1所述的注入动态链接库文件的方法,其特征在于,所述依据所述加载模块回调函数的参数获取通用导入表地址包括:获取所述加载模块回调函数的参数中的进程句柄;获取所述加载模块回调函数的参数中的进程映像地址;提取所述进程映像地址中的所述进程的映射基地址;依据所述进程句柄以及所述进程的映射基地址,获取通用导入表地址。3.根据权利要求1所述的注入动态链接库文件的方法,其特征在于,在所述提取未存储在所述通用导入表中的动态链接库文件之后,将提取的动态链接库文件写入所述通用导入表之前,所述方法还包括:记录提取的动态链接库文件数;依据所述通用导入表中一节点占用的存储空间,计算所述提取的动态链接库文件数与所述存储空间的乘积,得到待申请空间;调用内存分配内核函数,在所述进程的内存空间上为所述更新通用表申请包含所述待申请空间以及通用导入表空间的更新通用表空间。4.根据权利要求3所述的注入动态链接库文件的方法,其特征在于,所述将提取的动态链接库文件写入所述通用导入表,生成更新通用表,写入至所述进程的内存空间包括:在所述更新通用表的所述待申请空间中,将所述提取的动态链接库文件对应的数据依序填充至结构为映像输入描述的形实转换程序节点上;在所述更新通用表的所述通用导入表空间中,将所述通用导入表中动态链接库文件对应的数据依序填充至结构为映像输入描述的形实转换程序节点上,得到更新通用表。5.根据权利要求1所述的注入动态链接库文件的方法,其特征在于,在所述依据接收的动态链接库文件加载请求分配进程之前,所述方法还包括:调用影像修改设置内核函数注册所述加载模块回调函数。6.根据权利要求1至5任一项所述的注入动态链接库文件的方法,其特征在于,在所述内存空间中加载所述更新通用表中的动态链接库文件...

【专利技术属性】
技术研发人员:李文靖
申请(专利权)人:北京金山安全软件有限公司
类型:发明
国别省市:北京;11

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

1