一种用于对文件进行脱壳的装置和方法制造方法及图纸

技术编号:2915716 阅读:227 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种,用于对文件进行脱壳的装置和方法,该装置包括:虚拟机,用于模拟真实计算机;控制器,用于检测所述文件的壳类型;以及,脱壳模块,用于基于所述检测的壳类型,确定所述文件的脱壳程序中需要在所述真实计算机中执行的代码,其中,所述虚拟机执行所述文件的脱壳程序中除了所述确定的代码之外的其余代码,以及所述脱壳模块在所述真实计算机中执行所述确定的代码。利用该装置和方法,能够对文件进行快速脱壳。

【技术实现步骤摘要】

本专利技术涉及计算机病毒杀毒,尤其涉及一种用于对文件进行脱壳的装置和方法
技术介绍
计算机及网络技术的迅猛发展极大地促进了信息交互。与此同时,计算机病毒也伴随技术的发展而不断地演化更新,从初期的恶作剧游戏发展到今日,计算机病毒已经严重威胁到了人们对计算机的正常使用。由此,如何防范病毒侵袭已然成为人们关注的一个焦点。防范病毒侵袭的一个重要步骤是在病毒运行之前识别出带有病毒的文件,即查毒,从而采取相应的措施遏制其侵害计算机系统。目前的杀毒软件普遍使用的查毒方法为匹配特征串方法。也就是说,利用从病毒样本中提取出来的特征串(一段或多段特定的二进制码流)在被查文件中进行匹配搜索。这种方法能够比较有效地识别出具有固定特征串的病毒,但是病毒作者为了躲避杀毒软件的查杀,除了自身的在代码上有所改进以外,更多的是利用对文件进行加壳处理。加壳是利用特定压缩算法或加密算法,对病毒代码进行压缩和加密处理,改变病毒样本在静态状态下的二进制代码,从而躲避杀毒软件的静态扫描,实现免杀。通过对100多万病毒文件的测试,结果表明,90%以上的病毒文件被加壳处理过。在被加壳处理的病毒文件中,又有50%以上的病毒文件是被多种加壳工具处理过的,这些经过加壳处理过的病毒文件给杀毒软件静态扫描病毒带来了巨大的困难。为了解决加壳处理给查毒带来的困难,现在通常使用虚拟机来对加壳的文件进行脱壳处理,然后再对脱壳的文件进行查毒。然而,常规的虚拟机在对已加壳的病毒文件进行脱壳时经常面临-->以下两大问题。第一,一些病毒文件通常由复杂而执行费时的压缩算法或加密算法进行加壳处理,所以常规的虚拟机在对这样的已加壳病毒文件进行脱壳处理时,需要花费大量的时间来解压缩或解密数据,导致脱壳的执行时间较长,影响了整个查毒过程。以LZPack壳为例,由于其在加壳时使用压缩率比较大的LZMA算法来压缩文件,所以当虚拟机对加了LZPack壳的文件进行脱壳时,解压缩300K数据(解压缩以后大概是1MB左右)大约需要12-15秒的时间,这将会大大影响整个查毒过程。第二,一些比较复杂的壳在其脱壳程序中经常插入一些诸如API断点检测、调试器检测和单步异常检测这样的检测调试器的代码。由于虚拟机本质上就是一个调试器,而虚拟机对加壳文件进行脱壳的过程实质上就是调试过程,所以当这样脱壳程序在执行过程中检测到是在虚拟机中脱壳时,其就会退出脱壳过程,这就增加了虚拟机脱壳的难度。
技术实现思路
考虑到上述问题,本专利技术的一个目的在于提供一种用于对文件进行脱壳的装置和方法,其能够对文件进行快速脱壳。本专利技术的另一目的在于提供一种用于对文件进行脱壳的装置和方法,其能够在虚拟计算机中成功地对文件进行脱壳。为了实现本专利技术的目的,按照本专利技术的一种用于对文件进行脱壳的装置,包括:虚拟机,用于模拟真实计算机;控制器,用于检测所述文件的壳类型;以及脱壳模块,用于基于所述检测的壳类型,确定所述文件的脱壳程序中需要在所述真实计算机中执行的代码,其中,所述虚拟机执行所述文件的脱壳程序中除了所述确定的代码之外的其余代码,以及所述脱壳模块在所述真实计算机中执行所述-->确定的代码。为了实现本专利技术的目的,按照本专利技术的一种用于对文件进行脱壳的方法,包括:(A)检测所述文件的壳类型;(B)基于所述检测的壳类型,确定所述文件的脱壳程序中需要在真实计算机中执行的代码;以及(C)在虚拟计算机中执行所述文件的脱壳程序中除了所述确定的代码之外的其余代码,而在所述真实计算机中执行所述确定的代码。附图说明图1示出了本专利技术一个实施例的用于对文件进行脱壳的装置的架构示意图。图2示出了本专利技术一个实施例的虚拟机的架构示意图。图3示出了本专利技术第一实施例的用于对文件进行脱壳的方法的流程示意图。图4示出了本专利技术第二实施例的用于对文件进行脱壳的方法的流程示意图。优选实施方式本专利技术的核心思想是:首先检测已被加壳的文件的壳类型,然后根据所检测的壳类型,确定用于对该文件进行脱壳的脱壳程序中需要在真实计算机中执行的代码(例如,利用执行费时的压缩算法或加密算法来解压缩或解密数据的代码)、以及需要虚拟机跳过不执行的或者虚拟机执行但修改执行结果以表示该脱壳程序在真实计算机上执行的特定代码(例如,检测调试器的代码不支持的特性和功能等),最后,在真实计算机中执行该确定的需要在真实计算机中执行的代码和在虚拟计算机上执行该脱壳程序中除了该确定的需要在真实计算机中执行的代码之外的其余代码,以及,在虚拟机中跳过该脱壳程序-->中需要虚拟机跳过不执行的特定代码或者在虚拟机中执行该特定代码,然后修改该特定代码的执行结果以表示该脱壳程序在真实计算机上执行。图1示出了本专利技术一个实施例的用于对文件进行脱壳的装置的架构示意图。如图1所示,脱壳装置1包括控制器10、虚拟机20和脱壳模块30,其中,控制器10检测已被加壳的文件的壳类型,脱壳模块30根据控制器10检测到的壳类型,确定该文件的脱壳程序中需要在真实计算机中执行的代码、以及需要虚拟机跳过不执行的或者虚拟机执行但修改执行结果以表示该脱壳程序在真实计算机上执行的特定代码,并且在真实计算机中执行该确定的需要在真实计算机中执行的代码,以及,虚拟机20是一个模拟真实计算机环境的虚拟计算机,其执行该脱壳程序中除了该确定的需要在真实计算机中执行的代码之外的其余代码,以及,跳过不需要执行的特定代码或者执行该特定代码,然后修改该特定代码的执行结果以表示该脱壳程序在真实计算机上执行。本专利技术的用于对文件进行脱壳的装置通常用软件来实现,但是也可以硬件或软硬件结合的方式来实现。图2示出了本专利技术一个实施例的虚拟机的架构示意图。如图2所示,虚拟机20包括虚拟CPU 201、虚拟机内存管理模块203、虚拟机环境管理模块205,其中,虚拟CPU 201模拟实现真实计算机中的CPU,虚拟机内存管理模块203管理虚拟机中的内存,虚拟机环境管理模块205模拟真实计算机的环境。图3示出了本专利技术第一实施例的用于对文件进行脱壳的方法的流程示意图。其中,本实施例是以对加了LZPack壳的文件进行脱壳为例来说明的。如图3所示,首先,控制器10向虚拟机20发送一个加载文件通知,以通知虚拟机20加载一个待脱壳的文件(步骤S10)。虚拟机20-->收到加载文件通知后,加载该文件(步骤S15)。然后,虚拟机20向控制器10发送表明文件加载成功的加载结果消息(步骤S20)。接着,控制器10检测该文件的壳类型(步骤S25)。在本实施例中,该文件的壳类型为LZPack壳。控制器10向脱壳模块30发送一个壳类型通知,以告知脱壳模块30该文件的壳类型(步骤S30)。脱壳模块30收到该壳类型通知后,基于该壳类型通知所告知的壳类型,知道该文件的脱壳程序包括有利用复杂的压缩算法(即LZMA算法)来解压缩数据的代码,因此将这样的代码确定为需要在真实计算机中执行的代码(步骤S35)。然后,脱壳模块30向控制器10发送一个断点设置通知,以通知控制器10在该文件的脱壳程序中利用LZMA算法来解压缩数据的代码处设置断点(步骤S40)。控制器10从脱壳模块30中收到的该断点设置通知后,在虚拟机中设置该断点,并向虚拟机20发送一个运行指令,以通知虚拟机20执行到该文件的脱壳程序中利用LZMA算法来解压缩数据的代码处就停止(本文档来自技高网
...

【技术保护点】
一种用于对文件进行脱壳的装置,包括: 虚拟机,用于模拟真实计算机; 控制器,用于检测所述文件的壳类型;以及 脱壳模块,用于基于所述检测的壳类型,确定所述文件的脱壳程序中需要在所述真实计算机中执行的代码, 其中,所述虚 拟机执行所述文件的脱壳程序中除了所述确定的代码之外的其余代码,以及所述脱壳模块在所述真实计算机中执行所述确定的代码。

【技术特征摘要】
1、一种用于对文件进行脱壳的装置,包括:虚拟机,用于模拟真实计算机;控制器,用于检测所述文件的壳类型;以及脱壳模块,用于基于所述检测的壳类型,确定所述文件的脱壳程序中需要在所述真实计算机中执行的代码,其中,所述虚拟机执行所述文件的脱壳程序中除了所述确定的代码之外的其余代码,以及所述脱壳模块在所述真实计算机中执行所述确定的代码。2、如权利要求1所述的脱壳装置,进一步包括:所述虚拟机执行所述脱壳程序到所述确定的代码处即停止,然后向所述脱壳模块发送所述确定的代码将要处理的数据,所述脱壳模块在真实计算机上执行所述确定的代码对所述数据进行处理,以得到结果数据并发送给所述虚拟机,以及所述虚拟机将所述结果数据存储在内存中并执行所述脱壳程序中在所述确定的代码之后的代码。3、如权利要求1或2所述的脱壳装置,其中,所述确定的代码是实现执行费时的功能的代码。4、如权利要求1所述的脱壳装置,其中,还包括:所述脱壳模块基于所述检测的壳类型,确定所述文件的脱壳程序中需跳过不执行的代码,以及当执行所述脱壳程序到所述确定的代码时,所述虚拟机跳过所述确定的代码以执行所述脱壳程序中在所述确定的代码之后的代码。5、如权利要求1所述的脱壳装置,其中,还包括:所述脱壳模块基于所述检测的壳类型,确定所述文件的脱壳程序中其执行结果需要修改的代码,以及当执行所述脱壳程序到所述确定的代码时,所述虚拟机执行所述确定的代码得到执行结果并修改所述执行结果,然后执行所述脱壳程序中在所述确定的代码之后的代码。6、如权利要求4或5所述的脱壳装置,其中,所述确定的代码是检测调试器的代...

【专利技术属性】
技术研发人员:白子潘
申请(专利权)人:北京瑞星国际软件有限公司
类型:发明
国别省市:11[中国|北京]

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

1