一种识别PE文件是否是资源文件的方法及装置制造方法及图纸

技术编号:10925548 阅读:155 留言:0更新日期:2015-01-21 08:27
本发明专利技术实施例公开一种识别PE文件是否是资源文件的方法及装置,涉及计算机安全技术领域,能够提高系统中资源文件的识别成功率。所述识别PE文件是否是资源文件的方法,包括:判断一PE文件中是否含有代码;若PE文件中不含有代码,则检查PE文件是否含有正常的资源信息;若PE文件含有正常的资源信息,则确定PE文件是资源文件。所述识别PE文件是否是资源文件的装置,包括:判断单元,用于判断一PE文件中是否含有代码;第一检查单元,用于若PE文件中不含有代码,则检查PE文件是否含有正常的资源信息;确定单元,用于若PE文件含有正常的资源信息,则确定PE文件是资源文件。本发明专利技术适用于需要识别出系统中资源文件的场合。

【技术实现步骤摘要】
一种识别PE文件是否是资源文件的方法及装置
本专利技术涉及计算机安全
,尤其涉及一种识别PE文件是否是资源文件的方法及装置。
技术介绍
PE文件被称为可移植的执行体,其英文全称是PortableExecute。常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件。资源文件是一种仅含资源数据,不含代码的PE文件,占系统中全部PE文件的90%以上。在实际的应用中经常需要从系统中的所有PE文件中识别出资源文件,比如,安全软件常常需要监控和扫描系统中的所有PE文件并判定其是否含有恶意代码,而通常的做法是先识别出系统中全部PE文件中的资源文件,然后筛选出系统中全部PE文件中的非资源文件,最后再判定系统中全部PE文件中的非资源文件是否含有恶意代码。而现有技术判断PE文件是资源文件只需要PE文件满足不含导入表和导出表,且入口点是0即可,因而会漏掉很多资源文件(比如,含有空导入表和空导出表,且入口点是0、执行时不会跳转到恶意代码的PE文件),且存在潜在的安全风险(比如,不含导入表和导出表,且入口点是0、执行时会跳转到恶意代码的PE文件会被识别为资源文件),即现有识别资源文件的成功率较低。
技术实现思路
有鉴于此,本专利技术实施例提供一种识别PE文件是否是资源文件的方法及装置,能够提高系统中资源文件的识别成功率。为达到上述目的,本专利技术的实施例采用如下技术方案:一方面,本专利技术实施例提供一种识别PE文件是否是资源文件的方法,包括:判断一PE文件中是否含有代码;若所述PE文件中不含有代码,则检查所述PE文件是否含有正常的资源信息;若所述PE文件含有正常的资源信息,则确定所述PE文件是资源文件。本专利技术实施例提供的识别PE文件是否是资源文件的方法,通过判断PE文件中是否含有代码,并在PE文件中不含有代码时,检查PE文件是否含有正常的资源信息,在PE文件含有正常的资源信息时,确定PE文件是资源文件;因而能够提高系统中资源文件的识别成功率。另一方面,本专利技术实施例提供一种识别PE文件是否是资源文件的装置,包括:判断单元,用于判断一PE文件中是否含有代码;第一检查单元,用于若所述判断单元确定出所述PE文件中不含有代码,则检查所述PE文件是否含有正常的资源信息;确定单元,用于若所述第一检查单元确定所述PE文件含有正常的资源信息,则确定所述PE文件是资源文件。本专利技术实施例提供的识别PE文件是否是资源文件的装置,通过判断PE文件中是否含有代码,并在PE文件中不含有代码时,检查PE文件是否含有正常的资源信息,在PE文件含有正常的资源信息时,确定PE文件是资源文件;因而能够提高系统中资源文件的识别成功率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1为本专利技术识别PE文件是否是资源文件的方法一实施例的流程示意图;图2为图1中S1一实施例的流程示意图;图3为图2中S10一实施例的流程示意图;图4为图2中S11一实施例的流程示意图;图5为图2中S12一实施例的流程示意图;图6为图2中S13一实施例的流程示意图;图7为图2中S14一实施例的流程示意图;图8为图2中S15一实施例的流程示意图;图9为图1中S1另一实施例的流程示意图;图10为图1中S1又一实施例的流程示意图;图11为图1中S1又一实施例的流程示意图;图12为图1中S1又一实施例的流程示意图;图13为图1中S1又一实施例的流程示意图;图14为图1中S3一实施例的流程示意图;图15为本专利技术识别PE文件是否是资源文件的装置一实施例的方意图;图16为图15中判断单元一实施例的方框结构示意图;图17为图16中第一判断子单元一实施例的方框结构示意图;图18为图16中第二判断子单元一实施例的方框结构示意图;图19为图16中第三判断子单元一实施例的方框结构示意图;图20为图16中第四判断子单元一实施例的方框结构示意图;图21为图16中第五判断子单元一实施例的方框结构示意图;图22为图16中第六判断子单元一实施例的方框结构示意图;图23为图15中判断单元另一实施例的方框结构示意图;图24为图15中判断单元又一实施例的方框结构示意图;图25为图15中判断单元又一实施例的方框结构示意图;图26为图15中判断单元又一实施例的方框结构示意图;图27为图15中判断单元又一实施例的方框结构示意图;图28为图15中确定单元一实施例的方框结构示意图。具体实施方式下面结合附图对本专利技术实施例一种识别PE文件是否是资源文件的方法及装置进行详细描述。应当明确,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。参看图1,本专利技术的实施例提供一种识别PE文件是否是资源文件的方法,包括:S1、判断一PE文件中是否含有代码;S2、若所述PE文件中不含有代码,则检查所述PE文件是否含有正常的资源信息;S3、若所述PE文件含有正常的资源信息,则确定所述PE文件是资源文件。本专利技术实施例提供的识别PE文件是否是资源文件的方法,通过判断PE文件中是否含有代码,并在PE文件中不含有代码时,检查PE文件是否含有正常的资源信息,在PE文件含有正常的资源信息时,确定PE文件是资源文件;因而能够提高系统中资源文件的识别成功率。可选地,参看图2,在本专利技术识别PE文件是否是资源文件的方法的另一实施例中,所述判断一PE文件中是否含有代码(S1),包括:S10、判断一PE文件是否能够通过导入表导入除mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll外的其它dll文件;和/或S11、判断所述PE文件是否能够通过延迟导入表导入dll文件;和/或S12、判断所述PE文件是否能够通过Manifest文件导入dll文件;和/或S13、判断所述PE文件是否能够通过重定向导入dll文件;和/或S14、判断所述PE文件是否能够通过导出表导出函数;和/或S15、判断所述PE文件的入口点是否为0且在头部是否会执行跳转指令;S16、若确定所述PE文件不能够通过导入表导入除mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll外的其它dll文件;和/或若确定所述PE文件不能够通过延迟导入表导入dll文件;和/或若确定所述PE文件不能够通过Manifest文件导入dll文件;和/或若确定所述PE文件不能够通过重定向导入dll文件;和/或若确定所述PE文件不能够通过导出表导出函数;和/或若确定所述PE文件的入口点为0且在头部不会执行跳转指令,则确定所述PE文件中不含有代码。因为PE文件能够通过导入表、延迟导入表、Manifest文件和重定向导入dll文件从而使其含有本文档来自技高网...
一种识别PE文件是否是资源文件的方法及装置

【技术保护点】
一种识别PE文件是否是资源文件的方法,其特征在于,包括:判断一PE文件中是否含有代码;若所述PE文件中不含有代码,则检查所述PE文件是否含有正常的资源信息;若所述PE文件含有正常的资源信息,则确定所述PE文件是资源文件。

【技术特征摘要】
1.一种识别PE文件是否是资源文件的方法,其特征在于,包括:判断一PE文件中是否含有代码;若所述PE文件中不含有代码,则检查所述PE文件是否含有正常的资源信息;若所述PE文件含有正常的资源信息,检查所述PE文件中的资源是否绑定了其它PE文件和/或是否捆绑了包;若所述PE文件中的资源未绑定其它PE文件和/或未捆绑包,则确定所述PE文件是资源文件。2.根据权利要求1所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断一PE文件中是否含有代码,包括:判断一PE文件是否能够通过导入表导入除mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll外的其它dll文件;和/或判断所述PE文件是否能够通过延迟导入表导入dll文件;和/或判断所述PE文件是否能够通过Manifest文件导入dll文件;和/或判断所述PE文件是否能够通过重定向导入dll文件;和/或判断所述PE文件是否能够通过导出表导出函数;和/或判断所述PE文件的入口点是否为0且在头部是否会执行跳转指令;若确定所述PE文件不能够通过导入表导入除mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll外的其它dll文件;和/或若确定所述PE文件不能够通过延迟导入表导入dll文件;和/或若确定所述PE文件不能够通过Manifest文件导入dll文件;和/或若确定所述PE文件不能够通过重定向导入dll文件;和/或若确定所述PE文件不能够通过导出表导出函数;和/或若确定所述PE文件的入口点为0且在头部不会执行跳转指令,则确定所述PE文件中不含有代码。3.根据权利要求2所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断一PE文件是否能够通过导入表导入除mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll外的其它dll文件,包括:判断一PE文件是否含有导入表;若所述PE文件不含导入表,则确定所述PE文件不能够通过导入表导入除mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll外的其它dll文件;或者若所述PE文件含有导入表,则判断所述PE文件的导入表是否为空表;若所述PE文件的导入表是空表,则确定所述PE文件不能够通过导入表导入除mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll外的其它dll文件;或者若所述PE文件的导入表不是空表,则判断所述PE文件通过导入表导入的dll文件是否为mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll中的至少一个;若所述PE文件通过导入表导入的dll文件为mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll中的至少一个,则确定所述PE文件不能够通过导入表导入除mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll外的其它dll文件。4.根据权利要求2所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断所述PE文件是否能够通过延迟导入表导入dll文件,包括:判断所述PE文件是否含有延迟导入表;若所述PE文件不含延迟导入表,则确定所述PE文件不能够通过延迟导入表导入dll文件;或者若所述PE文件含有延迟导入表,则判断所述PE文件的延迟导入表是否为空表;若所述PE文件的延迟导入表是空表,则确定所述PE文件不能够通过延迟导入表导入dll文件。5.根据权利要求2所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断所述PE文件是否能够通过Manifest文件导入dll文件,包括:判断所述PE文件是否含有Manifest文件;若所述PE文件不含Manifest文件,则确定所述PE文件不能够通过Manifest文件导入dll文件;或者若所述PE文件含有Manifest文件,则判断所述PE文件的Manifest文件中是否含有dll文件的Manifest文件;若所述PE文件的Manifest文件中不含有dll文件的Manifest文件,则确定所述PE文件不能够通过Manifest文件导入dll文件。6.根据权利要求2所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断所述PE文件是否能够通过重定向导入dll文件,包括:判断与所述PE文件相同目录下是否含有后缀名为“.local”的文件或者文件夹;若与所述PE文件相同目录下不含有后缀名为“.local”的文件或者文件夹,则确定所述PE文件不能够通过重定向导入dll文件。7.根据权利要求2所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断所述PE文件是否能够通过导出表导出函数,包括:判断所述PE文件是否含有导出表;若所述PE文件不含有导出表,则确定所述PE文件不能够通过导出表导出函数;或者若所述PE文件含有导出表,则判断所述PE文件的导出表是否是空表;若所述PE文件的导出表是空表,则确定所述PE文件不能够通过导出表导出函数。8.根据权利要求2所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断所述PE文件的入口点是否为0且在头部是否会执行跳转指令,包括:获取所述PE文件的入口点;判断所述PE文件的入口点是否为0;若所述PE文件的入口点是0,则检查所述PE文件的第五个字节的指令是否是FF、E9或EB;若所述PE文件的第五个字节的指令不是FF、E9和EB,则确定所述PE文件的入口点为0且在头部不会执行跳转指令;或者若所述PE文件的第五个字节的指令是FF,则检查所述PE文件的第六个字节的指令是否是25或15;若所述PE文件的第六个字节的指令不是25和15,则确定所述PE文件的入口点为0且在头部不会执行跳转指令。9.根据权利要求1所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断一PE文件中是否含有代码,包括:判断一PE文件是否含有线程局部存储目录;若所述PE文件不含线程局部存储目录,则确定所述PE文件中不含有代码;或者若所述PE文件含有线程局部存储目录,则获取所述PE文件的线程局部存储目录;判断所述线程局部存储目录中是否含有指向线程局部存储回调函数数组的指针;若所述线程局部存储目录中不含指向线程局部存储回调函数数组的指针,则确定所述PE文件中不含有代码;或者若所述线程局部存储目录中含有指向线程局部存储回调函数数组的指针,则判断所述PE文件的开发环境是否是Delphi;若所述PE文件的开发环境是Delphi,则确定所述PE文件中不含有代码。10.根据权利要求1所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断一PE文件中是否含有代码,包括:获取一PE文件中的节的节名;通过查询预设的库判断所述PE文件中的节是否均是非代码节;其中,所述预设的库中保存有非代码节的节名;若所述PE文件中的节均是非代码节,则确定所述PE文件中不含有代码。11.根据权利要求1所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断一PE文件中是否含有代码,包括:获取一PE文件中的节的属性;判断所述PE文件中的节的属性是否为不可执行;若所述PE文件中的节的属性为不可执行,则确定所述PE文件中不含有代码。12.根据权利要求1所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断一PE文件中是否含有代码,包括:判断一PE文件中是否含有.NET程序集;若所述PE文件中不含有.NET程序集,则确定所述PE文件中不含有代码;或者若所述PE文件中含有.NET程序集,则检查所述PE文件中的.NET程序集是否能够引用其它.NET程序集;若所述.NET程序集不能够引用其它.NET程序集,则确定所述PE文件中不含有代码;或者若所述.NET程序集能够引用其它.NET程序集,则判断所述其它.NET程序集是否为System.dll;若所述其它.NET程序集为System.dll,则确定所述PE文件中不含有代码。13.根据权利要求1所述的识别PE文件是否是资源文件的方法,其特征在于,所述判断一PE文件中是否含有代码,包括:判断一PE文件中是否含有.NET程序集;若所述PE文件中含有.NET程序集,则检查所述PE文件中的.NET程序集中是否定义了类;若所述.NET程序集中未定义类,则确定所述PE文件中不含有代码;或者若所述.NET程序集中定义了类,则检查所述.NET程序集中定义的类是否均不含有方法;若所述.NET程序集中定义的类均不含有方法,则确定所述PE文件中不含有代码;或者若所述.NET程序集中定义的类中存在含有方法的类,则检查所述含有方法的类中的方法是否为不含方法体的构造函数;若所述含有方法的类中的方法为不含方法体的构造函数,则确定所述PE文件中不含有代码。14.根据权利要求1所述的识别PE文件是否是资源文件的方法,其特征在于,在所述判断一PE文件中是否含有代码之前,还包括:检查所述PE文件的大小、所述PE文件的类型和/或所述PE文件的路径;其中,所述判断一PE文件中是否含有代码,包括:若所述PE文件的大小在预设的文件大小范围内、所述PE文件的类型属于预设的类型集合和/或所述PE文件的路径属于预设的路径集合,则判断所述PE文件中是否含有代码。15.根据权利要求1所述的识别PE文件是否是资源文件的方法,其特征在于,所述若所述PE文件含有正常的资源信息,则确定所述PE文件是资源文件,包括:若所述PE文件含有正常的资源信息,则检查所述PE文件中的资源是否绑定了其它PE文件和/或是否捆绑了包;若所述PE文件中的资源未绑定其它PE文件和/或未捆绑包,则确定所述PE文件是资源文件。16.一种识别PE文件是否是资源文件的装置,其特征在于,包括:判断单元,用于判断一PE文件中是否含有代码;第一检查单元,用于若所述判断单元确定出所述PE文件中不含有代码,则检查所述PE文件是否含有正常的资源信息;确定单元,用于若所述第一检查单元确定所述PE文件含有正常的资源信息,检查所述PE文件中的资源是否绑定了其它PE文件和/或是否捆绑了包;若所述PE文件中的资源未绑定其它PE文件和/或未捆绑包,则确定所述PE文件是资源文件。17.根据权利要求16所述的识别PE文件是否是资源文件的装置,其特征在于,所述判断单元,包括:第一判断子单元,用于判断一PE文件是否能够通过导入表导入除mscoree.dll、Microsoft.CSharp.dll、mscorwks.dll、mscoreei.dll、mscoreeis.dll和mscorlib.dll外的其它dll文件;和/或第二判断子单元,用于判断所述PE文件是否能够通过延迟导入表导入dll文件;和/或第三判断子单元,...

【专利技术属性】
技术研发人员:周杨刘桂峰姚辉
申请(专利权)人:珠海市君天电子科技有限公司
类型:发明
国别省市:广东;44

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

1