一种DLL文件的处理方法及相关装置制造方法及图纸

技术编号:22238767 阅读:40 留言:0更新日期:2019-10-09 18:35
本申请实施例公开了一种DLL文件的处理方法及相关装置,用于绕开对DLL文件的检测。本申请实施例方法包括:将DLL文件注入到目标进程;根据DLL文件的大小申请内存空间;根据目标进程的标识信息对DLL文件进行加密得到密文信息,目标进程的标识信息随着目标进程的每次启动而发生变化;存储密文信息至内存空间,并从目标进程中卸载DLL文件;当触发执行DLL文件时,解密密文信息以得到原始的DLL文件;根据DLL文件在目标进程的起始地址和内存空间的地址对解密的DLL文件进行重定位修复;选择资源文件修改DLL文件的格式头,以绕开对DLL文件的检测,资源文件的格式与DLL文件的格式不同。

A Processing Method of DLL Files and Related Devices

【技术实现步骤摘要】
一种DLL文件的处理方法及相关装置
本申请涉及软件领域,尤其涉及一种DLL文件的处理方法及相关装置。
技术介绍
对于一些特殊功能的工具,需要编写一个动态链接库文件(dynamiclinklibrary,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文件的大小申请内存空间包括:通过系统函数GetModuleHandle()获取所述DLL文件在所述目标进程中的起始地址;根据所述起始地址获取所述DLL文件的DOS头结构信息pDos;根据所述pDos确定所述DLL文件的NT头结构信息pNT,所述pNT包括所述DLL文件的大小;将所述DLL文件的大小作为系统函数VirualAlloc()的输入参数以申请所述内存空间。在一种可能的实施例中,所述根据所述目标进程的标识信息对所述DLL文件进行加密得到密文信息包括:当读取所述DLL文件时,每读取所述DLL文件的Q个字节,根据所述目标进程的当前标识信息生成第一密钥,并根据所述第一密钥对所述Q个字节进行加密,得到第一加密字节;再根据所述Q个字节和所述目标进程的当前表示信息生成第二密钥,以根据所述第二密钥对所述Q个字节的下一Q个字节进行加密,得到第二加密字节,直至完成对整个所述DLL文件的加密,得到所述密文信息。在一种可能的实施例中,所述再根据所述Q个字节和所述目标进程的当前表示信息生成第二密钥,以根据所述第二密钥对所述Q个字节的下一Q个字节进行加密包括:通过以下函数生成所述第二密钥:Key2=Md5.Creat(pid+hmodule+i*Q);其中,所述Key2用于表示所述第二密钥,所述pid用于表示所述目标进程的当前标识信息,所述hmodule用于表示所述DLL文件在所述目标进程中的起始地址,所述hmodule+i*Q用于表示所述DLL文件的Q个字节,所述Md5.Creat为md5算法的加密接口。在一种可能的实施例中,所述根据所述DLL文件在目标进程的起始地址和所述内存空间的地址对解密的所述DLL文件进行重定位修复包括:获取所述DLL文件对应的重定位表的内存地址,所述重定位表用于记录所有的重定位块;将所述内存空间的内存地址和所述DLL文件在目标进程的起始地址的差作为待修复偏移量;遍历所述重定位表,以得到各重定位块的内存地址和所述重定位块的个数;根据所述各重定位块的内存地址和所述待修复偏移量对所述各重定位块进行修复。在一种可能的实施例中,当所述资源文件为png图片文件时,所述选择资源文件修改所述DLL文件的格式头包括:通过系统函数CreatFile()创建文件句柄以读取所述png图片文件;通过系统函数ReadFile()读取所述png图片文件,以得到所述png图片文件的图片内容;将所述图片内容分别拷贝到所述pDos头部和pNT头部,以修改所述DLL文件的格式头。在一种可能的实施例中,所述将所述图片内容分别拷贝到所述pDos头部和pNT头部包括:通过系统函数Memcpy(A,B,C)将所述图片内容分别拷贝到所述pDos头部和pNT头部,其中,所述参数A用于表示所述pDos头部或pNT头部,所述参数B用于表示所述图片内容,所述参数C用于表示所述pDos头部的大小或pNT头部的大小。本申请实施例的第二方面提供了一种处理装置,包括:注入单元,用于将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文件,从而绕过检测。附图说明图1a为本申请实施例提供的一种DLL文件的处理方法的流程图;图1b为本申请实施例提供的一种可能的PE的逻辑图;图2为本申请实施例提供的一种可能的处理装置的结构示意图;图3为本申请实施例提供的另一可能的电子设备的硬件结构示意图;图4为本申请实施例提供的一种可能的计算机本文档来自技高网...

【技术保护点】
1.一种动态链接库DLL文件的处理方法,所述处理方法用于绕开对所述DLL文件的检测,其特征在于,包括:将所述DLL文件注入到目标进程;根据所述DLL文件的大小申请内存空间;根据所述目标进程的标识信息对所述DLL文件进行加密得到密文信息,所述目标进程的标识信息随着所述目标进程的每次启动而发生变化;存储所述密文信息至所述内存空间,并从所述目标进程中卸载所述DLL文件;当触发执行所述DLL文件时,解密所述密文信息以得到原始的所述DLL文件;根据所述DLL文件在目标进程的起始地址和所述内存空间的地址对解密的所述DLL文件进行重定位修复;选择资源文件修改所述DLL文件的格式头,以绕开对所述DLL文件的检测,所述资源文件的格式与所述DLL文件的格式不同。

【技术特征摘要】
1.一种动态链接库DLL文件的处理方法,所述处理方法用于绕开对所述DLL文件的检测,其特征在于,包括:将所述DLL文件注入到目标进程;根据所述DLL文件的大小申请内存空间;根据所述目标进程的标识信息对所述DLL文件进行加密得到密文信息,所述目标进程的标识信息随着所述目标进程的每次启动而发生变化;存储所述密文信息至所述内存空间,并从所述目标进程中卸载所述DLL文件;当触发执行所述DLL文件时,解密所述密文信息以得到原始的所述DLL文件;根据所述DLL文件在目标进程的起始地址和所述内存空间的地址对解密的所述DLL文件进行重定位修复;选择资源文件修改所述DLL文件的格式头,以绕开对所述DLL文件的检测,所述资源文件的格式与所述DLL文件的格式不同。2.根据权利要求1所述的方法,其特征在于,所述根据所述DLL文件的大小申请内存空间包括:通过系统函数GetModuleHandle()获取所述DLL文件在所述目标进程中的起始地址;根据所述起始地址获取所述DLL文件的DOS头结构信息pDos;根据所述pDos确定所述DLL文件的NT头结构信息pNT,所述pNT包括所述DLL文件的大小;将所述DLL文件的大小作为系统函数VirualAlloc()的输入参数以申请所述内存空间。3.根据权利要求1所述的方法,其特征在于,所述根据所述目标进程的标识信息对所述DLL文件进行加密得到密文信息包括:当读取所述DLL文件时,每读取所述DLL文件的Q个字节,根据所述目标进程的当前标识信息生成第一密钥,并根据所述第一密钥对所述Q个字节进行加密,得到第一加密字节;再根据所述Q个字节和所述目标进程的当前表示信息生成第二密钥,以根据所述第二密钥对所述Q个字节的下一Q个字节进行加密,得到第二加密字节,直至完成对整个所述DLL文件的加密,得到所述密文信息。4.根据权利要求3所述的方法,其特征在于,所述再根据所述Q个字节和所述目标进程的当前表示信息生成第二密钥,以根据所述第二密钥对所述Q个字节的下一Q个字节进行加密包括:通过以下函数生成所述第二密钥:Key2=Md5.Creat(pid+hmodule+i*Q);其中,所述Key2用于表示所述第二密钥,所述pid用于表示所述目标进程的当前标识信息,所述hmodule用于表示所述DLL文件在所述目标进程中的起始地址,所述hmodule+i*Q用于表示所述DLL文件的Q个字节,所述Md5.Creat为md5算法的加密接口。5...

【专利技术属性】
技术研发人员:周志刚
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1