CN114417335A - 一种恶意文件检测方法、装置、电子设备及存储介质 - Google Patents

一种恶意文件检测方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114417335A
CN114417335A CN202210061344.8A CN202210061344A CN114417335A CN 114417335 A CN114417335 A CN 114417335A CN 202210061344 A CN202210061344 A CN 202210061344A CN 114417335 A CN114417335 A CN 114417335A
Authority
CN
China
Prior art keywords
file
function library
code segment
module
header
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
Application number
CN202210061344.8A
Other languages
English (en)
Inventor
沈元华
范渊
吴卓群
王欣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN202210061344.8A priority Critical patent/CN114417335A/zh
Publication of CN114417335A publication Critical patent/CN114417335A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/564Static detection by virus signature recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种恶意文件检测方法及相关装置,包括:获取输入法程序所使用的函数库文件,以及函数库文件在内存中对应的模块文件;当确定函数库文件及模块文件均为PE文件时,将函数库文件中的第一代码段及模块文件中的第二代码段进行对比,确定第二代码段中与第一代码段中不同的机器码;当确定机器码包含预设指令时,判定模块文件为恶意文件;预设指令包括jmp、push、pop及int3;可在确定函数库文件及模块文件均为PE文件后,通过将两文件进行比较的方式提取出模块文件中的异常机器码,进而根据异常代码段中是否包含内联挂钩常用指令的方式来确定模块文件中的恶意内联挂钩设置情况,可有效检测输入法程序中的恶意内联挂钩。

Description

一种恶意文件检测方法、装置、电子设备及存储介质
技术领域
本发明涉及安全检测领域,特别涉及一种恶意文件检测方法、装置、电子设备及存储介质。
背景技术
为便于用户使用,操作系统中通常会预装输入法程序。由于该程序的普及度较广,因此恶意攻击人员可对该程序进行恶意篡改,以对输入法用户的操作信息进行监听,进而窃取该用户所输入的信息。具体的,恶意攻击人员可在输入法程序所使用的函数库文件中增加内联挂钩(Inline hook),进而利用该挂钩对用户的操作信息及输入内容进行监听和记录。然而,内联挂钩的隐蔽性较强,难以利用一般对挂钩(hook)的检测手段进行检测。
因此,如何快速有效地对输入法程序中存在的恶意文件进行检测,是本领域技术人员所需面对的技术问题。
发明内容
本发明的目的是提供一种恶意文件检测方法、装置、电子设备及存储介质,可通过将函数库文件及其在内存中对应的模块文件进行比较的方式检测模块文件中的恶意内联挂钩设置情况,进而可有效检测输入法程序中的恶意内联挂钩。
为解决上述技术问题,本发明提供一种恶意文件检测方法,包括:
获取输入法程序所使用的函数库文件,以及所述函数库文件在内存中对应的模块文件;
当确定所述函数库文件及所述模块文件均为PE文件时,将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比,确定所述第二代码段中与所述第一代码段中不同的机器码;
当确定所述机器码包含预设指令时,判定所述模块文件为恶意文件;所述预设指令包括jmp、push、pop及int3。
可选地,在确定所述函数库文件及所述模块文件均为PE文件之前,还包括:
从所述函数库文件和所述模块文件中提取DOS头和NT头;所述DOS头包括所述函数库文件的第一DOS头和所述模块文件第二DOS头,所述NT头包括所述函数库文件的第一NT头和所述模块文件第二NT头;
判断所述DOS头和所述NT头中是否均包含预设PE文件标识;
若是,则确定所述函数库文件及所述模块文件均为所述PE文件。
可选地,在将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比之前,还包括:
从所述第一NT头中提取数字签名,并利用所述数字签名检测所述函数库文件是否被篡改;
若是,则对所述函数库文件进行修复;
若否,则进入所述将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比的步骤。
可选地,所述从所述函数库文件和所述模块文件中提取DOS头和NT头,包括:
根据所述函数库文件的大小所述函数库文件将写入所述内存,并获取所述函数库文件在所述内存中对应的内存地址,同时获取所述模块文件在所述内存中的基地址;
在所述内存中利用所述内存地址获取所述第一DOS头,以及利用所述基地址获取所述第二DOS头;
在所述内存中根据所述第一DOS头的偏移信息获取所述第一NT头,以及根据所述第二DOS头的偏移信息获取所述第二NT头。
可选地,所述将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比,包括:
在所述内存中根据所述NT头中的偏移信息从所述函数库文件和所述模块文件中提取代码段节表;所述代码段节表包括所述函数库文件的第一代码段节表和所述模块文件的第二代码段节表;
从所述第一代码段节表中提取所述第一代码段,以及从所述第二代码段节表中提取所述第二代码段;
将所述第二代码段复制到所述内存的另一区域,并将所述第一代码段与复制后的第二代码段进行对比。
可选地,在判定所述模块文件为恶意文件之后,还包括:
获取所述模块文件在所述内存中的基地址,并利用进程快照获取所述内存中所有模块的加载基地址和所述模块在磁盘中对应的磁盘路径;
将所述基地址与所述加载基地址进行匹配,并根据匹配结果确定所述模块文件的目标磁盘路径;
将所述目标磁盘路径发送至预设系统服务主程序,以使所述预设系统服务主程序删除所述目标磁盘路径所存放的文件。
可选地,在获取输入法程序所使用的函数库文件之前,还包括:
当接收到所述预设系统服务主程序发送的启动指令时,进入所述获取输入法程序所使用的函数库文件的步骤。
本发明还提供一种恶意文件检测装置,包括:
获取模块,用于获取输入法程序所使用的函数库文件,以及所述函数库文件在内存中对应的模块文件;
对比模块,用于当确定所述函数库文件及所述模块文件均为PE文件时,将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比,确定所述第二代码段中与所述第一代码段中不同的机器码;
恶意判定模块,用于当确定所述机器码包含预设指令时,判定所述模块文件为恶意文件;所述预设指令包括jmp、push、pop及int3。
本发明还提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述所述的恶意文件检测方法的步骤。
本发明还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的恶意文件检测方法的步骤。
本发明提供一种恶意文件检测方法,包括:获取输入法程序所使用的函数库文件,以及所述函数库文件在内存中对应的模块文件;当确定所述函数库文件及所述模块文件均为PE文件时,将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比,确定所述第二代码段中与所述第一代码段中不同的机器码;当确定所述机器码包含预设指令时,判定所述模块文件为恶意文件;所述预设指令包括jmp、push、pop及int3。
可见,本发明首先获取了输入法程序在磁盘中的函数库文件,以及函数库文件在内存中对应的模块文件,并对函数库文件及模块文件是否为PE文件进行了确定,这是为了确保函数库文件及模块文件具备检测条件,能够利用函数库文件从模块文件中提取出被恶意增加内联挂钩的代码段;在确定函数库文件及模块文件均为PE文件后,本发明从两文件中分别提取出第一代码段和第二代码段,并对这些代码段进行比对以得到第二代码段中与第一代码段中不同的机器码,进而通过判定所述该机器码中是否包含jmp、push、pop及int3这些内联挂钩常用的指令,来确定模块文件中是否存在恶意内联挂钩,能够有效对输入法程序中存在恶意内联挂钩的恶意文件进行有效检测,可避免现有挂钩检测手段无法检测内联挂钩的情况。本发明还提供一种恶意文件检测装置、电子设备及存储介质,具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种恶意文件检测方法的流程图;
图2为本发明实施例所提供的一种恶意文件检测装置的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,恶意攻击人员可在输入法程序所使用的函数库文件中增加内联挂钩(Inline hook),进而利用该挂钩对用户的操作信息及输入内容进行监听和记录。然而,内联挂钩的隐蔽性较强,难以利用一般对挂钩(hook)的检测手段进行检测。有鉴于此,本发明提供一种恶意文件检测方法,可通过将函数库文件及其在内存中对应的模块文件进行比较的方式检测模块文件中的恶意内联挂钩设置情况,进而可有效检测输入法程序中的恶意内联挂钩。请参考图1,图1为本发明实施例所提供的一种恶意文件检测方法的流程图,该方法可以包括:
S101、获取输入法程序所使用的函数库文件,以及函数库文件在内存中对应的模块文件。
需要说明的是,不同输入法程序所使用的函数库文件可能不同。对于Windows操作系统对应的微软输入法而言,其所使用的核心函数库文件为msctf.dll和imm32.dll,其中msctf.dll是微软输入法TSF(Text Services Framework,文本服务框架)框架代码编译的com组件程序,而imm32.dll为微软输入法使用IME(Input Method Editors,输入法编程规范)框架代码编译的com组件程序。应当指出的是,该函数库文件保存在磁盘中。此外,可以理解的是,当输入法程序需要使用相关函数功能时,需要将函数库加载至内存,而函数库文件在内存中对应的文件即为模块文件。本发明实施例并不限定模块文件的查询方式,可参考DLL文件(Dynamic Link Library,动态链接库)的相关技术。
S102、当确定函数库文件及模块文件均为PE文件时,将函数库文件中的第一代码段及模块文件中的第二代码段进行对比,确定第二代码段中与第一代码段中不同的机器码。
为了确保函数库文件及模块文件具备检测条件,能够利用函数库文件从模块文件中提取出被恶意增加内联挂钩的代码段,本发明实施例额外确定了函数库文件及模块文件是否均为PE文件,其中PE(Portable Executable,可移植可执行文件)为Windows操作系统上的程序文件。具体的,可检测函数库文件和模块文件的DOS头及NT头中是否包含预设的PE文件标识,以此来判定两文件是否为PE文件,其中DOS头用于兼容MS-DOS操作系统,而NT头用于包含Windows PE文件的主要信息。
在一种可能的情况中,在确定函数库文件及模块文件均为PE文件之前,还可以包括:
步骤11:从函数库文件和模块文件中提取DOS头和NT头;DOS头包括函数库文件的第一DOS头和模块文件第二DOS头,NT头包括函数库文件的第一NT头和模块文件第二NT头;
步骤12:判断DOS头和NT头中是否均包含预设PE文件标识;若是,则进入步骤13;若否,则停止检测;
步骤13:确定函数库文件及模块文件均为PE文件。
具体的,DOS头的头定义IMAGE_DOS_HEADER中的第一个成员e_magic为判定是否为PE文件的一个标识,如果e_magic的值不为“MZ”(16进制0x5A4D),那就不是PE文件;NT头的头定义IMAGE_NT_HEADERS32或IMAGE_NT_HEADERS64中的第一个成员Signature为判定是否为PE文件的另一个标识,如果Signature不是“PE”(16进制0x00004550),那就不是PE文件,只有当e_magic及Signature均为PE文件的预设值时,才说明文件为PE文件。
进一步,DOS头和NT头的提取需在内存中执行,由于函数库文件位于磁盘而非内存,因此需将其加载至内存,以进行提取;此外,DOS头和NT头的提取具有先后顺序,即先提取DOS头,再提取NT头。DOS头通常基于文件在内存中的内存地址进行提取,而NT头通常基于DOS头的偏移信息进行提取。
在一种可能的情况中,从函数库文件和模块文件中提取DOS头和NT头,可以包括:
步骤21:根据函数库文件的大小函数库文件将写入内存,并获取函数库文件在内存中对应的内存地址,同时获取模块文件在内存中的基地址。
具体的,可用API函数去打开函数库文件,并且获得文件大小,再使用内存分配函数malloc分配一段与文件大小相同的一段内存空间,最后把函数库文件读入到分配的内存空间中;可用LoadLibraryA/LoadLibraryW函数获得模块文件的基地址。
步骤22:在内存中利用内存地址获取第一DOS头,以及利用基地址获取第二DOS头。
步骤23:在内存中根据第一DOS头的偏移信息获取第一NT头,以及根据第二DOS头的偏移信息获取第二NT头。
具体的,DOS头的头定义IMAGE_DOS_HEADER中的最后一个成员e_lfanew用于指定PE头的开始位置距离文件的偏移(16进制0X3C),它数值就是NT头的开始地址。
在确定两文件均为PE文件后,便可从函数库文件和模块文件中提取代码段并进行代码段比对。具体的,PE文件中的代码段通常保存在代码段节表(.text节)中,因此需要在PE文件中定位到代码段节表,进而才可以从该节表中提取代码段。本发明实施例并不限定节表定位的具体方式,可参考PE文件的相关技术。由于节表通常设置在NT头后侧,因此可根据NT头的偏移信息确定代码段节表的位置。
进一步,在确定节表位置后,为对模块文件进行单独检测,可将模块文件中的代码段保存在内存的另一位置,并将函数库文件的代码段与模块文件复制后的代码段进行比较。
在一种可能的情况中,将函数库文件中的第一代码段及模块文件中的第二代码段进行对比,可以包括:
步骤31:在内存中根据NT头中的偏移信息从函数库文件和模块文件中提取代码段节表;代码段节表包括函数库文件的第一代码段节表和模块文件的第二代码段节表;
步骤32:从第一代码段节表中提取第一代码段,以及从第二代码段节表中提取第二代码段;
步骤33:将第二代码段复制到内存的另一区域,并将第一代码段与复制后的第二代码段进行对比。
具体的,可根据第二代码段的大小,使用内存分配函数malloc函数申请与代码段的大小一样的内存空间,然后使用内存复制函数memcpy将第二代码段复制到该内存空间中。在完成复制后,便可开始对两个代码段的比对,以提取出第二代码段与第一代码段不相同的机器码。
当然,为确保比对结果可靠,在提取代码段之前,还可对函数库文件的修改情况进行检测。具体的,可从函数库文件的NT头中提取数字签名,并利用该签名校验函数库文件的完整性。若函数库文件存在篡改,此时该文件将不能用于代码段比对,需对其进行修复。
在一种可能的情况中,在将函数库文件中的第一代码段及模块文件中的第二代码段进行对比之前,还可以包括:
步骤41:从第一NT头中提取数字签名,并利用数字签名检测函数库文件是否被篡改;若是,则进入步骤42;若否,则进入步骤43。
具体的,在NT头中的PE可选头包含IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_DIRECTORY_ENTRY_SECURITY]这一成员,该成员指向数字签名。
步骤42:对函数库文件进行修复。
需要说明的是,本发明实施例并不限定函数库文件的具体修复过程,可参考DLL文件的相关技术。
步骤43:进入将函数库文件中的第一代码段及模块文件中的第二代码段进行对比的步骤。
S103、当确定机器码包含预设指令时,判定模块文件为恶意文件;预设指令包括jmp、push、pop及int3。
在提取出不同的机器码后,本发明实施例会额外检测该机器码中是否包含内联挂钩常用的预设指令,例如jmp(跳转指令)、push(压栈指令)、pop(出栈指令)及int3(断点指令),若包含则可判定模块文件中存在恶意内联挂钩情况。当然,除这四个指令外,内联挂钩还可能使用其他指令,可参考inline hook的相关技术。
进一步,在确定模块文件为恶意文件后,可进一步将其在磁盘上对应的文件进行删除。具体的,可查找模块文件在磁盘中对应的磁盘路径,进而将该路径下的所有文件进行删除卸载。在本发明实施例中,可采用进程快照查找模块文件在磁盘中的路径,这是由于进程快照可记录加载至内存的各模块在内存中的加载基地址及在磁盘中的路径,仅需将模块文件的基地址与进程快照中的加载基地址进行匹配,便可确定模块文件的磁盘路径。进一步,考虑到模块文件对应的磁盘文件可能设置在系统文件夹中,而系统文件夹中的文件删除卸载工作需由系统管理员执行,通产需要较高的权限。为实现有效删除,本发明实施例可进一步预设一个系统服务主程序,由该程序执行该文件删除及卸载工作,恶意文件检测装置(即执行本发明实施例各步骤的设备)仅需将磁盘路径发送至系统服务主程序即可。其中系统服务程序(Microsoft Windows服务,过去称为NT服务)允许用户创建可在Windows会话中长时间运行的可执行应用程序,该服务可有效解决由权限限制所导致的删除卸载问题,此外能够在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面,适合在服务器及长时间运行场景中设置。
在一种可能的情况中,在判定模块文件为恶意文件之后,还可以包括:
步骤51:获取模块文件在内存中的基地址,并利用进程快照获取内存中所有模块的加载基地址和模块在磁盘中对应的磁盘路径;
步骤52:将基地址与加载基地址进行匹配,并根据匹配结果确定模块文件的目标磁盘路径;
步骤53:将目标磁盘路径发送至预设系统服务主程序,以使预设系统服务主程序删除目标磁盘路径所存放的文件。
需要说明的是,本发明实施例并不限定恶意文件检测装置与预设系统服务主程序之间的通信方式,例如预设系统服务主程序采用回调函数接收恶意文件检测装置返回的磁盘路径,而主程序与检测装置之间使用管道进行通信。当然,恶意文件检测装置在确定函数库文件被篡改后,也可向系统服务主程序发送指令,以使系统服务主程序对函数库文件进行修复。进一步,系统服务主程序还可带有调度功能,即控制恶意文件检测装置开始执行恶意文件检测过程。
在一种可能的情况中,在获取输入法程序所使用的函数库文件之前,还可以包括:
步骤61:当接收到预设系统服务主程序发送的启动指令时,进入获取输入法程序所使用的函数库文件的步骤。
具体的,预设系统服务主程序中也可设置专用函数,用于启动调度线程,进而通过调度线程向恶意文件检测装置发送启动指令,可根据实际应用需求进行设定。
最后,为确保恶意文件检测装置能够正常工作,可通过SetWindowsHookExW函数安装一个挂钩处理过程,在系统将消息发送至目标窗口处理过程之前对该消息进行监视,这样每一个带有窗口过程的程序就会自动加载Windows输入法的恶意文件检测装置,其中SetWindowsHookExW为Windows消息处理机制的一个平台。
基于上述实施例,本发明首先获取了输入法程序在磁盘中的函数库文件,以及函数库文件在内存中对应的模块文件,并对函数库文件及模块文件是否为PE文件进行了确定,这是为了确保函数库文件及模块文件具备检测条件,能够利用函数库文件从模块文件中提取出被恶意增加内联挂钩的代码段;在确定函数库文件及模块文件均为PE文件后,本发明从两文件中分别提取出第一代码段和第二代码段,并对这些代码段进行比对以得到第二代码段中与第一代码段中不同的机器码,进而通过判定所述该机器码中是否包含jmp、push、pop及int3这些内联挂钩常用的指令,来确定模块文件中是否存在恶意内联挂钩,能够有效对输入法程序中存在恶意内联挂钩的恶意文件进行有效检测,可避免现有挂钩检测手段无法检测内联挂钩的情况。
下面对本发明实施例提供的恶意文件检测装置、电子设备及存储介质进行介绍,下文描述的恶意文件检测装置、电子设备及存储介质与上文描述的恶意文件检测方法可相互对应参照。
请参考图2,图2为本发明实施例所提供的一种恶意文件检测装置的结构框图,该装置可以包括:
获取模块201,用于获取输入法程序所使用的函数库文件,以及函数库文件在内存中对应的模块文件;
对比模块202,用于当确定函数库文件及模块文件均为PE文件时,将函数库文件中的第一代码段及模块文件中的第二代码段进行对比,确定第二代码段中与第一代码段中不同的机器码;
恶意判定模块203,用于当确定机器码包含预设指令时,判定模块文件为恶意文件;预设指令包括jmp、push、pop及int3。
可选地,该装置还可以包括:
提取模块,用于从函数库文件和模块文件中提取DOS头和NT头;DOS头包括函数库文件的第一DOS头和模块文件第二DOS头,NT头包括函数库文件的第一NT头和模块文件第二NT头;
判断模块,用于判断DOS头和NT头中是否均包含预设PE文件标识;若是,则确定函数库文件及模块文件均为PE文件。
可选地,该装置还可以包括:
篡改检测模块,用于从第一NT头中提取数字签名,并利用数字签名检测函数库文件是否被篡改;
修复模块,用于若是,则对函数库文件进行修复;
对比模块202,还可用于若否,则进入将函数库文件中的第一代码段及模块文件中的第二代码段进行对比的步骤。
可选地,提取模块,可以包括:
地址获取子模块,用于根据函数库文件的大小函数库文件将写入内存,并获取函数库文件在内存中对应的内存地址,同时获取模块文件在内存中的基地址;
DOS头提取子模块,用于在内存中利用内存地址获取第一DOS头,以及利用基地址获取第二DOS头;
NT头提取子模块,用于在内存中根据第一DOS头的偏移信息获取第一NT头,以及根据第二DOS头的偏移信息获取第二NT头。
可选地,对比模块202,可以包括:
节表提取子模块,用于在内存中根据NT头中的偏移信息从函数库文件和模块文件中提取代码段节表;代码段节表包括函数库文件的第一代码段节表和模块文件的第二代码段节表;
代码段提取子模块,用于从第一代码段节表中提取第一代码段,以及从第二代码段节表中提取第二代码段;
比对子模块,用于将第二代码段复制到内存的另一区域,并将第一代码段与复制后的第二代码段进行对比。
可选地,该装置还可以包括:
第二获取模块,用于获取模块文件在内存中的基地址,并利用进程快照获取内存中所有模块的加载基地址和模块在磁盘中对应的磁盘路径;
匹配模块,用于将基地址与加载基地址进行匹配,并根据匹配结果确定模块文件的目标磁盘路径;
删除模块,用于将目标磁盘路径发送至预设系统服务主程序,以使预设系统服务主程序删除目标磁盘路径所存放的文件。
可选地,获取模块201,还可用于当接收到预设系统服务主程序发送的启动指令时,进入获取输入法程序所使用的函数库文件的步骤。
本发明实施例还提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述的恶意文件检测方法的步骤。
由于电子设备部分的实施例与恶意文件检测方法部分的实施例相互对应,因此电子设备部分的实施例请参见恶意文件检测方法部分的实施例的描述,这里暂不赘述。
本发明实施例还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的恶意文件检测方法的步骤。
由于存储介质部分的实施例与恶意文件检测方法部分的实施例相互对应,因此存储介质部分的实施例请参见恶意文件检测方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的一种恶意文件检测方法、装置、电子设备及存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (10)

1.一种恶意文件检测方法,其特征在于,包括:
获取输入法程序所使用的函数库文件,以及所述函数库文件在内存中对应的模块文件;
当确定所述函数库文件及所述模块文件均为PE文件时,将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比,确定所述第二代码段中与所述第一代码段中不同的机器码;
当确定所述机器码包含预设指令时,判定所述模块文件为恶意文件;所述预设指令包括jmp、push、pop及int3。
2.根据权利要求1所述的恶意文件检测方法,其特征在于,在确定所述函数库文件及所述模块文件均为PE文件之前,还包括:
从所述函数库文件和所述模块文件中提取DOS头和NT头;所述DOS头包括所述函数库文件的第一DOS头和所述模块文件第二DOS头,所述NT头包括所述函数库文件的第一NT头和所述模块文件第二NT头;
判断所述DOS头和所述NT头中是否均包含预设PE文件标识;
若是,则确定所述函数库文件及所述模块文件均为所述PE文件。
3.根据权利要求2所述的恶意文件检测方法,其特征在于,在将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比之前,还包括:
从所述第一NT头中提取数字签名,并利用所述数字签名检测所述函数库文件是否被篡改;
若是,则对所述函数库文件进行修复;
若否,则进入所述将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比的步骤。
4.根据权利要求2所述的恶意文件检测方法,其特征在于,所述从所述函数库文件和所述模块文件中提取DOS头和NT头,包括:
根据所述函数库文件的大小所述函数库文件将写入所述内存,并获取所述函数库文件在所述内存中对应的内存地址,同时获取所述模块文件在所述内存中的基地址;
在所述内存中利用所述内存地址获取所述第一DOS头,以及利用所述基地址获取所述第二DOS头;
在所述内存中根据所述第一DOS头的偏移信息获取所述第一NT头,以及根据所述第二DOS头的偏移信息获取所述第二NT头。
5.根据权利要求4所述的恶意文件检测方法,其特征在于,所述将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比,包括:
在所述内存中根据所述NT头中的偏移信息从所述函数库文件和所述模块文件中提取代码段节表;所述代码段节表包括所述函数库文件的第一代码段节表和所述模块文件的第二代码段节表;
从所述第一代码段节表中提取所述第一代码段,以及从所述第二代码段节表中提取所述第二代码段;
将所述第二代码段复制到所述内存的另一区域,并将所述第一代码段与复制后的第二代码段进行对比。
6.根据权利要求1至5任一项所述的恶意文件检测方法,其特征在于,在判定所述模块文件为恶意文件之后,还包括:
获取所述模块文件在所述内存中的基地址,并利用进程快照获取所述内存中所有模块的加载基地址和所述模块在磁盘中对应的磁盘路径;
将所述基地址与所述加载基地址进行匹配,并根据匹配结果确定所述模块文件的目标磁盘路径;
将所述目标磁盘路径发送至预设系统服务主程序,以使所述预设系统服务主程序删除所述目标磁盘路径所存放的文件。
7.根据权利要求6所述的恶意文件检测方法,其特征在于,在获取输入法程序所使用的函数库文件之前,还包括:
当接收到所述预设系统服务主程序发送的启动指令时,进入所述获取输入法程序所使用的函数库文件的步骤。
8.一种恶意文件检测装置,其特征在于,包括:
获取模块,用于获取输入法程序所使用的函数库文件,以及所述函数库文件在内存中对应的模块文件;
对比模块,用于当确定所述函数库文件及所述模块文件均为PE文件时,将所述函数库文件中的第一代码段及所述模块文件中的第二代码段进行对比,确定所述第二代码段中与所述第一代码段中不同的机器码;
恶意判定模块,用于当确定所述机器码包含预设指令时,判定所述模块文件为恶意文件;所述预设指令包括jmp、push、pop及int3。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的恶意文件检测方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的恶意文件检测方法的步骤。
CN202210061344.8A 2022-01-19 2022-01-19 一种恶意文件检测方法、装置、电子设备及存储介质 Pending CN114417335A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210061344.8A CN114417335A (zh) 2022-01-19 2022-01-19 一种恶意文件检测方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210061344.8A CN114417335A (zh) 2022-01-19 2022-01-19 一种恶意文件检测方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114417335A true CN114417335A (zh) 2022-04-29

Family

ID=81275717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210061344.8A Pending CN114417335A (zh) 2022-01-19 2022-01-19 一种恶意文件检测方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114417335A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115659342A (zh) * 2022-12-27 2023-01-31 北京知其安科技有限公司 一种无害执行pe文件的方法、装置、电子设备及存储介质
CN116028929A (zh) * 2023-01-19 2023-04-28 安芯网盾(北京)科技有限公司 基于Linux内核的无文件攻击的检测方法及装置
CN116737257A (zh) * 2022-09-30 2023-09-12 荣耀终端有限公司 定制资源的处理方法、装置、电子设备及可存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737257A (zh) * 2022-09-30 2023-09-12 荣耀终端有限公司 定制资源的处理方法、装置、电子设备及可存储介质
CN115659342A (zh) * 2022-12-27 2023-01-31 北京知其安科技有限公司 一种无害执行pe文件的方法、装置、电子设备及存储介质
CN115659342B (zh) * 2022-12-27 2023-08-22 北京知其安科技有限公司 一种无害执行pe文件的方法、装置、电子设备及存储介质
CN116028929A (zh) * 2023-01-19 2023-04-28 安芯网盾(北京)科技有限公司 基于Linux内核的无文件攻击的检测方法及装置
CN116028929B (zh) * 2023-01-19 2023-08-22 安芯网盾(北京)科技有限公司 基于Linux内核的无文件攻击的检测方法及装置

Similar Documents

Publication Publication Date Title
CN114417335A (zh) 一种恶意文件检测方法、装置、电子设备及存储介质
US8997253B2 (en) Method and system for preventing browser-based abuse
US8955124B2 (en) Apparatus, system and method for detecting malicious code
US10318730B2 (en) Detection and prevention of malicious code execution using risk scoring
US6698016B1 (en) Method for injecting code into another process
US7607122B2 (en) Post build process to record stack and call tree information
US20220129256A1 (en) Android penetration method and device for implementing silent installation based on accessibility services
US20200159913A1 (en) Malware Detection Method and Malware Detection Apparatus
CN115221524B (zh) 业务数据保护方法、装置、设备及存储介质
CN109783316B (zh) 系统安全日志篡改行为的识别方法及装置、存储介质、计算机设备
CN111368299A (zh) 动态链接库文件劫持检测方法、设备及存储介质
CN113360913A (zh) 一种恶意程序检测方法、装置、电子设备及存储介质
CN111353143A (zh) 敏感权限检测方法、装置及存储介质
CN112100070A (zh) 版本缺陷的检测方法、装置、服务器及存储介质
CN114282212A (zh) 流氓软件识别方法、装置、电子设备及存储介质
CN112579330B (zh) 操作系统异常数据的处理方法、装置及设备
CN112422581A (zh) JVM中的Webshell网页检测方法、装置及设备
WO2020233044A1 (zh) 一种插件校验方法、设备、服务器及计算机可读存储介质
CN108959915B (zh) 一种rootkit检测方法、装置及服务器
JP4643201B2 (ja) バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム
CN113779576A (zh) 一种可执行文件感染病毒的识别方法、装置及电子设备
CN116775147B (zh) 一种可执行文件处理方法、装置、设备及存储介质
CN115828246B (zh) 一种离线恶意程序及行为监测方法、装置、介质及设备
CN111597570B (zh) 应用程序加固方法、装置、设备和存储介质
CN113609484A (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