CN104239793B - 病毒检测方法和装置 - Google Patents
病毒检测方法和装置 Download PDFInfo
- Publication number
- CN104239793B CN104239793B CN201410458506.7A CN201410458506A CN104239793B CN 104239793 B CN104239793 B CN 104239793B CN 201410458506 A CN201410458506 A CN 201410458506A CN 104239793 B CN104239793 B CN 104239793B
- Authority
- CN
- China
- Prior art keywords
- file
- information
- compression packet
- decompression
- decompressed
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
Abstract
本发明提出一种病毒检测方法和装置,该病毒检测方法包括获取要检测的文件的头部信息和后缀信息;根据所述头部信息和/或后缀信息,获取所述文件中包含的每个压缩包,并对所述每个压缩包进行解压缩,获取解压缩后的文件;对所述解压缩后的文件进行病毒扫描。该方法能够对压缩包进行病毒检测,提高病毒检测效果。
Description
技术领域
本发明涉及反病毒技术领域,尤其涉及一种对病毒检测方法和装置。
背景技术
随着杀毒软件的发展,传播途径的增加,病毒作者也在想尽方法使病毒能够在传播过程中逃避杀毒软件的检测。其中常被病毒作者使用的方式就是压缩,通过将病毒文件压缩成杀毒软件不能解压而常用解压软件能够解压的格式进行传播。
目前大多数杀毒软件为了效率考虑,不会对压缩包进行特别处理,用户对压缩包进行病毒检测时,通常需要先解压压缩包,再对解压缩后的文件进行病毒扫描。但是,这种方式需要采用解压软件先解压才能进行病毒检测,甚至在解压时就可能被病毒感染。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种病毒检测方法,该方法可以对压缩包进行病毒检测,提高病毒检测效果。
本发明的另一个目的在于提出一种病毒检测装置。
为达到上述目的,本发明第一方面实施例提出的病毒检测方法,包括:获取要检测的文件的头部信息和后缀信息;根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,获取解压缩后的文件;对所述解压缩后的文件进行病毒扫描。
本发明第一方面实施例提出的病毒检测方法,通过获取要检测的文件的压缩包,对压缩包进行解压缩,并对解压缩后的文件进行病毒检测,可以实现对压缩包的病毒检测,不需要采用专门的解压文件解压后进行病毒检测,从而提高病毒检测能力和效果。
为达到上述目的,本发明第二方面实施例提出的病毒检测装置,包括:获取模块,用于获取要检测的文件的头部信息和后缀信息;解压缩模块,用于根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,获取解压缩后的文件;扫描模块,用于对所述解压缩后的文件进行病毒扫描。
本发明第二方面实施例提出的病毒检测装置,通过获取要检测的文件的压缩包,对压缩包进行解压缩,并对解压缩后的文件进行病毒检测,可以实现对压缩包的病毒检测,不需要采用专门的解压文件解压后进行病毒检测,从而提高病毒检测能力和效果。
为达到上述目的,本发明第三方面实施例提出的电子设备,包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:获取要检测的文件的头部信息和后缀信息;根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,获取解压缩后的文件;对所述解压缩后的文件进行病毒扫描。
本发明第三方面实施例提出的电子设备,通过获取要检测的文件的压缩包,对压缩包进行解压缩,并对解压缩后的文件进行病毒检测,可以实现对压缩包的病毒检测,不需要采用专门的解压文件解压后进行病毒检测,从而提高病毒检测能力和效果。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一实施例提出的病毒检测方法的流程示意图;
图2是本发明另一实施例提出的病毒检测方法的流程示意图;
图3是本发明实施例中头部不是压缩包的解压流程对要检测的文件进行解压的流程示意图;
图4是本发明实施例中头部是压缩包的解压流程对要检测的文件进行解压的流程示意图;
图5是本发明另一实施例提出的病毒检测装置的结构示意图;
图6是本发明另一实施例提出的病毒检测装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
图1是本发明一实施例提出的病毒检测方法的流程示意图,该方法包括:
S11:获取要检测的文件的头部信息和后缀信息;
其中,文件的头部信息中会包含文件格式标记,例如,JPEG文件头是FFD8FF,ZIP文件头是504B0304等。
文件的后缀信息也会包含文件的格式信息,例如,文件的后缀信息包括:.7z,.zip或者.rar等。
S12:根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,获取解压缩后的文件;
其中,为了避免压缩文件是病毒文件,本实施例对压缩文件进行解压缩。在解压缩时,可以结合头部信息和后缀信息,实现对文件的循环解压,使得压缩包可以得到完全解压。
随着技术发展,病毒作者不仅可以将病毒进行压缩,还可以将病毒压缩包与其他内容进行结合得到变异压缩包。例如,图片、文本或者其他的压缩包等+包含病毒的压缩包。
对于此类变异压缩包,如果杀毒软件在病毒检测时只看文件的头部信息中是否包含压缩包标记,如果不包含则不做解压缩处理,如果包含则只根据头部信息中的标记进行解压缩,则会使得变异压缩包躲避病毒扫描。例如,图片+包含病毒的压缩包,由于头部信息中不包含压缩包标记,如果不解压缩则会使包含病毒的压缩包躲避扫描,或者,其他压缩包+包含病毒的压缩包,如果只根据头部信息中的压缩包标记进行解压缩则只会解压缩出其他压缩包,不能解压缩出包含病毒的压缩包,同样会使包含病毒的压缩包躲避扫描。
本实施例通过结合头部信息和后缀信息,可以解压缩出文件包含的每个压缩包,避免包含病毒的压缩包躲避扫描。
S13:对所述解压缩后的文件进行病毒扫描。
其中,在解压缩后,可以对解压缩后的文件与预先建立的病毒库进行比对,以获知是否存在病毒,具体的病毒扫描算法可以采用现有的算法实现。
本实施例通过获取要检测的文件的压缩包,对压缩包进行解压缩,并对解压缩后的文件进行病毒检测,可以实现对压缩包的病毒检测,不需要采用专门的解压文件解压后进行病毒检测,从而提高病毒检测能力和效果。
图2是本发明另一实施例提出的病毒检测方法的流程示意图,该方法包括:
S21:获取要检测的文件的头部信息和后缀信息;
其中,文件的头部信息中会包含文件格式标记,例如,JPEG文件头是FFD8FF,ZIP文件头是504B0304等。
文件的后缀信息也会包含文件的格式信息,例如,文件的后缀信息包括:7z,zip或者rar等。
S22:判断该头部信息中包含的文件格式标记是否是压缩包标记,若是,执行S24,否则执行S23。
例如,当头部信息中包含504B0304,由于其标识的文件格式是ZIP,而ZIP是压缩包格式,因此,头部信息包含504B0304时表明头部信息中包含的文件格式标记是压缩包标记;又例如,当头部信息中包含FFD8FF时,由于FFD8FF标记的是JPEG格式,其是一种图片格式,不是压缩包格式,因此,头部信息中包含FFD8FF时表明头部信息中包含的文件格式标记不是压缩包标记。
S23:当头部信息中包含的文件格式标记不是压缩包标记时,按照头部不是压缩包的解压流程对要检测的文件进行解压。之后,执行S25。
参见图3,头部是非压缩包的解压流程可以具体包括:
S301:判断头部信息中包含的文件格式标记是否与后缀信息一致,若否,执行S302,若是执行S308。
其中,当文件格式标记是非压缩包标记时,而后缀信息是压缩包标记时,则中包含的文件格式标记与后缀信息不一致。
例如,a.jpg+virus.rar拼接得到b.rar时,当要检测b.rar时,由于jpg与rar格式不一致,则执行如下流程。
S302:判断后缀信息是否是预设后缀信息中的一种,若是,执行S303,否则,执行S307。
其中,客户端可以从云端获取预设后缀信息,预设后缀信息是压缩包格式,可以包括:7z,zip和rar格式。
通过设置预设后缀信息,可以降低要处理的文件数量,减小资源消耗。
S303:从所述文件中选取文件头部。
其中,所述从所述文件中选取文件头部,包括:
当所述文件的大小大于或等于第一预设阈值时,从所述文件的头部开始选取大小是所述第一预设阈值的部分作为文件头部;或者,
当所述文件的大小小于所述第一预设阈值时,从所述文件的头部开始选取大小是N的部分作为文件头部,其中,N=所述文件的文件大小-第二预设阈值。
具体的,所述第一预设阈值是1M字节,所述第二预设阈值是4K字节。
例如,当要检测的文件的大小大于或等于1M时,则从该文件的头部开始选择1M的部分作为文件头部;或者,
当要检测的文件的大小小于1M时,则从该文件的头部开始选择(文件大小-4K)的部分作为文件头部。
S304:在所述文件头部中搜索与所述后缀信息一致的压缩包标记。
其中,在所述文件头部中搜索与所述后缀信息一致的压缩包标记,包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;本实施例的待搜索的部分是指文件头部;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
例如,将文件头部分为多个块,每个块的大小是4K,或者不足4K的单独作为一个块,之后,将该多个块分为数目大致相等的3份,再按照2,3,1的顺序在块中搜索和后缀信息一致的压缩包标记。具体如,假设后缀信息是ZIP,将文件头部从头部开始分为大小分别是4K,4K和2K的3个块,之后先搜索中间的4K(指文件大小,后续含义类似)的块,再搜索2K的块,最后再搜索第一个4K的块,以从中得到压缩包标记ZIP,当从某个块中,假设从中间的4K块中查找到ZIP标记,则不再搜索后续块,即不再搜索2K块和第一个4K块。由于压缩包标记通常位于中后部,通过上述搜索顺序,可以提高搜索效率。
S305:判断是否搜索到与后缀信息一致的压缩包标记,若是,执行S306,否则执行S308。
例如,后缀信息是ZIP,则判断在文件头部是否搜索到ZIP对应的文件格式标记。
S306:根据所述搜索到的压缩包标记形成新的文件对象;
具体的,可以包括:在所述文件中以所述搜索到的压缩包标记作为文件偏移起点,形成新的文件对象。
例如,在中间的4K块中查找到ZIP标记,假设该ZIP标记在文件头部开始的5K位置处,则从文件头部的5K位置处到文件最后形成新的文件对象,即新的文件对象不包括原来的文件头部开始的5K部分。
通过文件偏移,可以只对新的文件对象进行处理,避免对原始文件的释放,可以节省开销。
S307:采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
例如,当在文件头部找到ZIP标记后,对新的文件对象采用ZIP格式对应的解压缩方式进行解压。
S308:解压结束。
其中,在解压结束后,可以对文件进行病毒扫描等,之后的流程可以采用现有病毒扫描流程实现。
S24:当头部信息中包含的文件格式标记是压缩包标记时,按照头部是压缩包的解压流程对要检测的文件进行解压。之后,执行S25。
参见图4,头部是压缩包的解压流程可以具体包括:
S401:根据头部信息中包含的文件大小信息获取第一压缩包的大小;
其中,当头部信息中包含的文件格式标记是压缩包标记时,可以确定文件中至少包含一个压缩包,且头部信息中会包含表明该至少一个压缩包大小的文件大小信息。该压缩包标记对应的压缩包可以称为第一压缩包。
S402:判断第一压缩包的大小是否小于第三预设阈值,若是,执行S403,否则,执行S415。
其中,第三预设阈值可以具体是1M。
当第一压缩包小于1M时,可以根据所述头部信息和所述后缀信息对所述要检测的文件进行解压缩,以及,确定是否需要在所述文件中搜索其他压缩包,并在需要时,在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩。具体可以包括:
S403:判断头部信息中包含的压缩包标记是否与后缀信息一致,若是,执行S404,否则,执行S408。
其中,本实施例中头部信息中的文件格式标识是压缩包标记。
例如,a.zip+virus.rar拼接得到b.rar,当要检测b.rar时,则头部信息中的压缩包标记与后缀信息不一致;否则,a.rar+virus.rar拼接得到b.rar,当要检测b.rar时,则头部信息中的压缩包标记与后缀信息一致。
S404:采用所述压缩包标记对应的解压缩方式对所述要检测的文件进行解压缩。
例如,a.rar+virus.rar拼接得到b.rar时,则采用rar的解压缩格式对b.rar进行解压缩。
S405:判断是否解压缩成功,若否,执行S406,若是,执行S415。
S406:在解压缩失败且失败类型是压缩包头部信息无效且没有解压缩出任何文件时,从所述文件中选择文件头部,并在所述文件头部中搜索其他压缩包标记。
当所述文件的大小大于或等于第一预设阈值时,从所述文件的头部开始选取大小是所述第一预设阈值的部分作为文件头部;或者,
当所述文件的大小小于所述第一预设阈值时,从所述文件的头部开始选取大小是N的部分作为文件头部,其中,N=所述文件的文件大小-第二预设阈值。
其中,在所述文件头部中搜索与所述后缀信息一致的压缩包标记,包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;该步骤的待搜索的部分是指文件头部;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
具体的选择文件头部和搜索压缩包标记的流程可以参见图3所示实施例。
S407:当搜索到其他压缩包标记时,采用所述其他压缩包标记对所述要检测的文件进行解压缩。之后执行S415。
S408:当所述压缩包标记与所述后缀信息不一致时,采用所述压缩包标记对应的解压缩方式对所述文件进行解压缩。
例如,a.zip+virus.rar拼接得到b.rar时,则采用zip的解压缩格式对b.rar进行解压缩。
S409:判断解压缩是否成功,若是,执行S410,否则,执行S412。
S410:判断解压缩后的第一压缩包的大小是否小于第三预设阈值,若是,执行S411,否则,执行S415。
如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,或者,如果采用所述压缩包标记对应的解压缩方式对所述文件解压失败,确定需要在所述文件中搜索其他压缩包。
如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,所述在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩,包括:
S411:在所述文件中包含的第一位置与第二位置之间的部分中搜索与所述后缀信息一致的压缩包标记,所述第一位置是所述解压缩后的第一压缩包的结束位置,所述第二位置是所述文件从头部开始后大小为所述第三预设阈值的位置。
例如,如果解压缩后的文件的大小小于1M,则在1M之后至1M大小的位置之间的部分进行其他压缩包标记的搜索。
其中,搜索可以具体包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;该步骤的待搜索的部分是指所述文件中包含的第一位置与第二位置之间的部分;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
具体搜索流程可以参见图3所示实施例。
S412:从所述文件中选择文件头部,并在所述文件头部中搜索与所述后缀信息一致的压缩包标记;
其中,所述从所述文件中选取文件头部,包括:
从所述文件的头部开始选取大小是所述第三预设阈值的部分作为文件头部。
其中,在所述文件头部中搜索与所述后缀信息一致的压缩包标记,包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;该步骤的待搜索的部分是指文件头部;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
具体的搜索压缩包标记的流程可以参见图3所示实施例。
S413:当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象,将所述新的文件对象确定为其他压缩包;
具体的,可以包括:在所述文件中以所述搜索到的压缩包标记作为文件偏移起点,形成新的文件对象。
S414:采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
具体的偏移得到新的文件对象并对新的文件对象进行解压缩的流程可以参见图3所示实施例。
S415:解压结束。
S25:对所述解压缩后的文件进行病毒扫描。
其中,在解压缩后,可以对解压缩后的文件与预先建立的病毒库进行比对,以获知是否存在病毒,具体的病毒扫描算法可以采用现有的算法实现。
本实施例通过有选择性的头部信息搜索和重入解压,可以在不对扫描性能产生很大影响的情况下解压出大多数的变异压缩包,在对抗变异压缩包方面有显著效果;通过文件的大小,后缀信息,头部信息的结合实现对变异压缩包的识别;通过将指针偏移到真正压缩包头部组织成新的文件对象,避免对原始文件的释放,节省开销。
图5是本发明另一实施例提出的病毒检测装置的结构示意图,该装置50包括获取模块51、解压缩模块52和扫描模块53。
获取模块51用于获取要检测的文件的头部信息和后缀信息;
其中,文件的头部信息中会包含文件格式标记,例如,JPEG文件头是FFD8FF,ZIP文件头是504B0304等。
文件的后缀信息也会包含文件的格式信息,例如,文件的后缀信息包括:.7z,.zip或者.rar等。
解压缩模块52用于根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,获取解压缩后的文件;
其中,为了避免压缩文件是病毒文件,本实施例对压缩文件进行解压缩。在解压缩时,可以结合头部信息和后缀信息,实现对文件的循环解压,使得压缩包可以得到完全解压。
随着技术发展,病毒作者不仅可以将病毒进行压缩,还可以将病毒压缩包与其他内容进行结合得到变异压缩包。例如,图片、文本或者其他的压缩包等+包含病毒的压缩包。
对于此类变异压缩包,如果杀毒软件在病毒检测时只看文件的头部信息中是否包含压缩包标记,如果不包含则不做解压缩处理,如果包含则只根据头部信息中的标记进行解压缩,则会使得变异压缩包躲避病毒扫描。例如,图片+包含病毒的压缩包,由于头部信息中不包含压缩包标记,如果不解压缩则会使包含病毒的压缩包躲避扫描,或者,其他压缩包+包含病毒的压缩包,如果只根据头部信息中的压缩包标记进行解压缩则只会解压缩出其他压缩包,不能解压缩出包含病毒的压缩包,同样会使包含病毒的压缩包躲避扫描。
本实施例通过结合头部信息和后缀信息,可以解压缩出文件包含的每个压缩包,避免包含病毒的压缩包躲避扫描。
扫描模块53用于对所述解压缩后的文件进行病毒扫描。
其中,在解压缩后,可以对解压缩后的文件与预先建立的病毒库进行比对,以获知是否存在病毒,具体的病毒扫描算法可以采用现有的算法实现。
参见图6,解压缩模块52可以包括第一单元521、第二单元522、第三单元523、第四单元524和第五单元525。
第一单元521用于当所述头部信息中包含的文件格式标记不是压缩包标记时,判断所述头部信息中包含的文件格式标记是否与所述后缀信息一致;
例如,当头部信息中包含504B0304,由于其标识的文件格式是ZIP,而ZIP是压缩包格式,因此,头部信息包含504B0304时表明头部信息中包含的文件格式标记是压缩包标记;又例如,当头部信息中包含FFD8FF时,由于FFD8FF标记的是JPEG格式,其是一种图片格式,不是压缩包格式,因此,头部信息中包含FFD8FF时表明头部信息中包含的文件格式标记不是压缩包标记。
其中,当文件格式标记是非压缩包标记时,而后缀信息是压缩包标记时,则中包含的文件格式标记与后缀信息不一致。
例如,a.jpg+virus.rar拼接得到b.rar时,当要检测b.rar时,由于jpg与rar格式不一致,则执行如下流程。
第二单元522用于在所述第一单元的判断结果是不一致时,判断所述后缀信息是否是预设后缀信息中的一种;
其中,客户端可以从云端获取预设后缀信息,预设后缀信息是压缩包格式,可以包括:7z,zip和rar格式。
通过设置预设后缀信息,可以降低要处理的文件数量,减小资源消耗。
第三单元523用于在所述第二单元的判断结果是所述后缀信息是预设后缀信息中的一种时,从所述文件中选取文件头部,并在所述文件头部中搜索与所述后缀信息一致的压缩包标记;
可选的,所述第三单元523具体用于:
当所述文件的大小大于或等于第一预设阈值时,从所述文件的头部开始选取大小是所述第一预设阈值的部分作为文件头部;或者,
当所述文件的大小小于所述第一预设阈值时,从所述文件的头部开始选取大小是N的部分作为文件头部,其中,N=所述文件的文件大小-第二预设阈值。
所述第一预设阈值是1M字节,所述第二预设阈值是4K字节。
例如,当要检测的文件的大小大于或等于1M时,则从该文件的头部开始选择1M的部分作为文件头部;或者,
当要检测的文件的大小小于1M时,则从该文件的头部开始选择(文件大小-4K)的部分作为文件头部。
可选的,所述第三单元523具体用于:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
例如,将文件头部分为多个块,每个块的大小是4K,或者不足4K的单独作为一个块,之后,将该多个块分为数目大致相等的3份,再按照2,3,1的顺序在块中搜索和后缀信息一致的压缩包标记。具体如,假设后缀信息是ZIP,将文件头部从头部开始分为大小分别是4K,4K和2K的3个块,之后先搜索中间的4K(指文件大小,后续含义类似)的块,再搜索2K的块,最后再搜索第一个4K的块,以从中得到压缩包标记ZIP,当从某个块中,假设从中间的4K块中查找到ZIP标记,则不再搜索后续块,即不再搜索2K块和第一个4K块。由于压缩包标记通常位于中后部,通过上述搜索顺序,可以提高搜索效率。
第四单元524用于当所述第三单元搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象;
可选的,所述第四单元524具体用于:
在所述文件中以所述搜索到的压缩包标记作为文件偏移起点,形成新的文件对象。
例如,在中间的4K块中查找到ZIP标记,假设该ZIP标记在文件头部开始的5K位置处,则从文件头部的5K位置处到文件最后形成新的文件对象,即新的文件对象不包括原来的文件头部开始的5K部分。
通过文件偏移,可以只对新的文件对象进行处理,避免对原始文件的释放,可以节省开销。
第五单元525用于采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
例如,当在文件头部找到ZIP标记后,对新的文件对象采用ZIP格式对应的解压缩方式进行解压。
一个实施例中,解压缩模块52可以包括第六单元526和第七单元527。
第六单元526用于当所述头部信息中包含的文件格式标记是压缩包标记时,根据所述头部信息中包含的文件大小信息获取第一压缩包的大小;
其中,当头部信息中包含的文件格式标记是压缩包标记时,可以确定文件中至少包含一个压缩包,且头部信息中会包含表明该至少一个压缩包大小的文件大小信息。该压缩包标记对应的压缩包可以称为第一压缩包。
第七单元527用于当所述第一压缩包的大小小于第三预设阈值时,根据所述头部信息和所述后缀信息对所述要检测的文件进行解压缩,以及,确定是否需要在所述文件中搜索其他压缩包,并在需要时,在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩。
其中,第三预设阈值可以具体是1M。
可选的,所述第七单元527具体用于:
当所述压缩包标记与所述后缀信息一致时,采用所述压缩包标记对应的解压缩方式对所述要检测的文件进行解压缩,并判断是否解压缩成功;
在解压缩失败且失败类型是压缩包头部信息无效且没有解压缩出任何文件时,从所述文件中选择文件头部,并在所述文件头部中搜索其他压缩包标记;
当搜索到其他压缩包标记时,采用所述其他压缩包标记对所述要检测的文件进行解压缩。
其中,本实施例中头部信息中的文件格式标识是压缩包标记。
例如,a.zip+virus.rar拼接得到b.rar,当要检测b.rar时,则头部信息中的压缩包标记与后缀信息不一致;否则,a.rar+virus.rar拼接得到b.rar,当要检测b.rar时,则头部信息中的压缩包标记与后缀信息一致。
例如,a.rar+virus.rar拼接得到b.rar时,则采用rar的解压缩格式对b.rar进行解压缩。
可选的,所述第七单元527具体用于:
当所述压缩包标记与所述后缀信息不一致时,采用所述压缩包标记对应的解压缩方式对所述文件进行解压缩,如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小大于或等于所述第三预设阈值,则解压完成;
如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,或者,如果采用所述压缩包标记对应的解压缩方式对所述文件解压失败,确定需要在所述文件中搜索其他压缩包。
例如,a.zip+virus.rar拼接得到b.rar时,则采用zip的解压缩格式对b.rar进行解压缩。
可选的,如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,所述第七单元527具体用于:
在所述文件中包含的第一位置与第二位置之间的部分中搜索与所述后缀信息一致的压缩包标记,所述第一位置是所述解压缩后的第一压缩包的结束位置,所述第二位置是所述文件从头部开始后大小为所述预设阈值的位置;
当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象,将所述新的文件对象确定为其他压缩包;
采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
例如,如果解压缩后的文件的大小小于1M,则在1M之后至1M大小的位置之间的部分进行其他压缩包标记的搜索。
其中,搜索可以具体包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;该步骤的待搜索的部分是指所述文件中包含的第一位置与第二位置之间的部分;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
具体搜索流程可以参见图3所示实施例。
可选的,如果采用所述压缩包标记对应的解压缩方式对所述文件解压失败,所述第七单元527具体用于:
从所述文件中选择文件头部,并在所述文件头部中搜索与所述后缀信息一致的压缩包标记;
当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象,将所述新的文件对象确定为其他压缩包;
采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
其中,所述从所述文件中选取文件头部,包括:
从所述文件的头部开始选取大小是所述第三预设阈值的部分作为文件头部。
其中,在所述文件头部中搜索与所述后缀信息一致的压缩包标记,包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;该步骤的待搜索的部分是指文件头部;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
具体的搜索压缩包标记的流程可以参见图3所示实施例。
本实施例通过获取要检测的文件的压缩包,对压缩包进行解压缩,并对解压缩后的文件进行病毒检测,可以实现对压缩包的病毒检测,不需要采用专门的解压文件解压后进行病毒检测,从而提高病毒检测能力和效果。
本发明实施例还提供了一种电子设备,该电子设备包括壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:
S11’:获取要检测的文件的头部信息和后缀信息;
其中,文件的头部信息中会包含文件格式标记,例如,JPEG文件头是FFD8FF,ZIP文件头是504B0304等。
文件的后缀信息也会包含文件的格式信息,例如,文件的后缀信息包括:.7z,.zip或者.rar等。
S12’:根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,获取解压缩后的文件;
其中,为了避免压缩文件是病毒文件,本实施例对压缩文件进行解压缩。在解压缩时,可以结合头部信息和后缀信息,实现对文件的循环解压,使得压缩包可以得到完全解压。
随着技术发展,病毒作者不仅可以将病毒进行压缩,还可以将病毒压缩包与其他内容进行结合得到变异压缩包。例如,图片、文本或者其他的压缩包等+包含病毒的压缩包。
对于此类变异压缩包,如果杀毒软件在病毒检测时只看文件的头部信息中是否包含压缩包标记,如果不包含则不做解压缩处理,如果包含则只根据头部信息中的标记进行解压缩,则会使得变异压缩包躲避病毒扫描。例如,图片+包含病毒的压缩包,由于头部信息中不包含压缩包标记,如果不解压缩则会使包含病毒的压缩包躲避扫描,或者,其他压缩包+包含病毒的压缩包,如果只根据头部信息中的压缩包标记进行解压缩则只会解压缩出其他压缩包,不能解压缩出包含病毒的压缩包,同样会使包含病毒的压缩包躲避扫描。
本实施例通过结合头部信息和后缀信息,可以解压缩出文件包含的每个压缩包,避免包含病毒的压缩包躲避扫描。
S13’:对所述解压缩后的文件进行病毒扫描。
其中,在解压缩后,可以对解压缩后的文件与预先建立的病毒库进行比对,以获知是否存在病毒,具体的病毒扫描算法可以采用现有的算法实现。
本实施例通过获取要检测的文件的压缩包,对压缩包进行解压缩,并对解压缩后的文件进行病毒检测,可以实现对压缩包的病毒检测,不需要采用专门的解压文件解压后进行病毒检测,从而提高病毒检测能力和效果。
另一实施例中,处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:
S21’:获取要检测的文件的头部信息和后缀信息;
其中,文件的头部信息中会包含文件格式标记,例如,JPEG文件头是FFD8FF,ZIP文件头是504B0304等。
文件的后缀信息也会包含文件的格式信息,例如,文件的后缀信息包括:7z,zip或者rar等。
S22’:判断该头部信息中包含的文件格式标记是否是压缩包标记,若是,执行S24’,否则执行S23’。
例如,当头部信息中包含504B0304,由于其标识的文件格式是ZIP,而ZIP是压缩包格式,因此,头部信息包含504B0304时表明头部信息中包含的文件格式标记是压缩包标记;又例如,当头部信息中包含FFD8FF时,由于FFD8FF标记的是JPEG格式,其是一种图片格式,不是压缩包格式,因此,头部信息中包含FFD8FF时表明头部信息中包含的文件格式标记不是压缩包标记。
S23’:当头部信息中包含的文件格式标记不是压缩包标记时,按照头部不是压缩包的解压流程对要检测的文件进行解压。之后,执行S25’。
头部是非压缩包的解压流程可以具体包括:
S301’:判断头部信息中包含的文件格式标记是否与后缀信息一致,若否,执行S302’,若是执行S308’。
其中,当文件格式标记是非压缩包标记时,而后缀信息是压缩包标记时,则中包含的文件格式标记与后缀信息不一致。
例如,a.jpg+virus.rar拼接得到b.rar时,当要检测b.rar时,由于jpg与rar格式不一致,则执行如下流程。
S302’:判断后缀信息是否是预设后缀信息中的一种,若是,执行S303’,否则,执行S307’。
其中,客户端可以从云端获取预设后缀信息,预设后缀信息是压缩包格式,可以包括:7z,zip和rar格式。
通过设置预设后缀信息,可以降低要处理的文件数量,减小资源消耗。
S303’:从所述文件中选取文件头部。
其中,所述从所述文件中选取文件头部,包括:
当所述文件的大小大于或等于第一预设阈值时,从所述文件的头部开始选取大小是所述第一预设阈值的部分作为文件头部;或者,
当所述文件的大小小于所述第一预设阈值时,从所述文件的头部开始选取大小是N的部分作为文件头部,其中,N=所述文件的文件大小-第二预设阈值。
具体的,所述第一预设阈值是1M字节,所述第二预设阈值是4K字节。
例如,当要检测的文件的大小大于或等于1M时,则从该文件的头部开始选择1M的部分作为文件头部;或者,
当要检测的文件的大小小于1M时,则从该文件的头部开始选择(文件大小-4K)的部分作为文件头部。
S304’:在所述文件头部中搜索与所述后缀信息一致的压缩包标记。
其中,在所述文件头部中搜索与所述后缀信息一致的压缩包标记,包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;本实施例的待搜索的部分是指文件头部;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
例如,将文件头部分为多个块,每个块的大小是4K,或者不足4K的单独作为一个块,之后,将该多个块分为数目大致相等的3份,再按照2,3,1的顺序在块中搜索和后缀信息一致的压缩包标记。具体如,假设后缀信息是ZIP,将文件头部从头部开始分为大小分别是4K,4K和2K的3个块,之后先搜索中间的4K(指文件大小,后续含义类似)的块,再搜索2K的块,最后再搜索第一个4K的块,以从中得到压缩包标记ZIP,当从某个块中,假设从中间的4K块中查找到ZIP标记,则不再搜索后续块,即不再搜索2K块和第一个4K块。由于压缩包标记通常位于中后部,通过上述搜索顺序,可以提高搜索效率。
S305’:判断是否搜索到与后缀信息一致的压缩包标记,若是,执行S306’,否则执行S308’。
例如,后缀信息是ZIP,则判断在文件头部是否搜索到ZIP对应的文件格式标记。
S306’:根据所述搜索到的压缩包标记形成新的文件对象;
具体的,可以包括:在所述文件中以所述搜索到的压缩包标记作为文件偏移起点,形成新的文件对象。
例如,在中间的4K块中查找到ZIP标记,假设该ZIP标记在文件头部开始的5K位置处,则从文件头部的5K位置处到文件最后形成新的文件对象,即新的文件对象不包括原来的文件头部开始的5K部分。
通过文件偏移,可以只对新的文件对象进行处理,避免对原始文件的释放,可以节省开销。
S307’:采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
例如,当在文件头部找到ZIP标记后,对新的文件对象采用ZIP格式对应的解压缩方式进行解压。
S308’:解压结束。
其中,在解压结束后,可以对文件进行病毒扫描等,之后的流程可以采用现有病毒扫描流程实现。
S24’:当头部信息中包含的文件格式标记是压缩包标记时,按照头部是压缩包的解压流程对要检测的文件进行解压。之后,执行S25’。
头部是压缩包的解压流程可以具体包括:
S401’:根据头部信息中包含的文件大小信息获取第一压缩包的大小;
其中,当头部信息中包含的文件格式标记是压缩包标记时,可以确定文件中至少包含一个压缩包,且头部信息中会包含表明该至少一个压缩包大小的文件大小信息。该压缩包标记对应的压缩包可以称为第一压缩包。
S402’:判断第一压缩包的大小是否小于第三预设阈值,若是,执行S403’,否则,执行S415’。
其中,第三预设阈值可以具体是1M。
当第一压缩包小于1M时,可以根据所述头部信息和所述后缀信息对所述要检测的文件进行解压缩,以及,确定是否需要在所述文件中搜索其他压缩包,并在需要时,在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩。具体可以包括:
S403’:判断头部信息中包含的压缩包标记是否与后缀信息一致,若是,执行S404’,否则,执行S408’。
其中,本实施例中头部信息中的文件格式标识是压缩包标记。
例如,a.zip+virus.rar拼接得到b.rar,当要检测b.rar时,则头部信息中的压缩包标记与后缀信息不一致;否则,a.rar+virus.rar拼接得到b.rar,当要检测b.rar时,则头部信息中的压缩包标记与后缀信息一致。
S404’:采用所述压缩包标记对应的解压缩方式对所述要检测的文件进行解压缩。
例如,a.rar+virus.rar拼接得到b.rar时,则采用rar的解压缩格式对b.rar进行解压缩。
S405’:判断是否解压缩成功,若否,执行S406’,若是,执行S415’。
S406’:在解压缩失败且失败类型是压缩包头部信息无效且没有解压缩出任何文件时,从所述文件中选择文件头部,并在所述文件头部中搜索其他压缩包标记。
当所述文件的大小大于或等于第一预设阈值时,从所述文件的头部开始选取大小是所述第一预设阈值的部分作为文件头部;或者,
当所述文件的大小小于所述第一预设阈值时,从所述文件的头部开始选取大小是N的部分作为文件头部,其中,N=所述文件的文件大小-第二预设阈值。
其中,在所述文件头部中搜索与所述后缀信息一致的压缩包标记,包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;该步骤的待搜索的部分是指文件头部;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
具体的选择文件头部和搜索压缩包标记的流程可以参见图3所示实施例。
S407’:当搜索到其他压缩包标记时,采用所述其他压缩包标记对所述要检测的文件进行解压缩。之后执行S415’。
S408’:当所述压缩包标记与所述后缀信息不一致时,采用所述压缩包标记对应的解压缩方式对所述文件进行解压缩。
例如,a.zip+virus.rar拼接得到b.rar时,则采用zip的解压缩格式对b.rar进行解压缩。
S409’:判断解压缩是否成功,若是,执行S410’,否则,执行S412’。
S410’:判断解压缩后的第一压缩包的大小是否小于第三预设阈值,若是,执行S411’,否则,执行S415’。
如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,或者,如果采用所述压缩包标记对应的解压缩方式对所述文件解压失败,确定需要在所述文件中搜索其他压缩包。
如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,所述在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩,包括:
S411’:在所述文件中包含的第一位置与第二位置之间的部分中搜索与所述后缀信息一致的压缩包标记,所述第一位置是所述解压缩后的第一压缩包的结束位置,所述第二位置是所述文件从头部开始后大小为所述第三预设阈值的位置。
例如,如果解压缩后的文件的大小小于1M,则在1M之后至1M大小的位置之间的部分进行其他压缩包标记的搜索。
其中,搜索可以具体包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;该步骤的待搜索的部分是指所述文件中包含的第一位置与第二位置之间的部分;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
具体搜索流程可以参见图3所示实施例。
S412’:从所述文件中选择文件头部,并在所述文件头部中搜索与所述后缀信息一致的压缩包标记;
其中,所述从所述文件中选取文件头部,包括:
从所述文件的头部开始选取大小是所述第三预设阈值的部分作为文件头部。
其中,在所述文件头部中搜索与所述后缀信息一致的压缩包标记,包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;该步骤的待搜索的部分是指文件头部;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
具体的搜索压缩包标记的流程可以参见图3所示实施例。
S413’:当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象,将所述新的文件对象确定为其他压缩包;
具体的,可以包括:在所述文件中以所述搜索到的压缩包标记作为文件偏移起点,形成新的文件对象。
S414’:采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
具体的偏移得到新的文件对象并对新的文件对象进行解压缩的流程可以参见图3所示实施例。
S415’:解压结束。
S25’:对所述解压缩后的文件进行病毒扫描。
其中,在解压缩后,可以对解压缩后的文件与预先建立的病毒库进行比对,以获知是否存在病毒,具体的病毒扫描算法可以采用现有的算法实现。
本实施例通过有选择性的头部信息搜索和重入解压,可以在不对扫描性能产生很大影响的情况下解压出大多数的变异压缩包,在对抗变异压缩包方面有显著效果;通过文件的大小,后缀信息,头部信息的结合实现对变异压缩包的识别;通过将指针偏移到真正压缩包头部组织成新的文件对象,避免对原始文件的释放,节省开销。
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (23)
1.一种病毒检测方法,其特征在于,包括:
获取要检测的文件的头部信息和后缀信息;
根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,获取解压缩后的文件;
对所述解压缩后的文件进行病毒扫描;
所述根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,包括:
当所述头部信息中包含的文件格式标记不是压缩包标记时,判断所述头部信息中包含的文件格式标记是否与所述后缀信息一致;
如果不一致,判断所述后缀信息是否是预设后缀信息中的一种;
如果所述后缀信息是预设后缀信息中的一种,从所述文件中选取文件头部,并在所述文件头部中搜索与所述后缀信息一致的压缩包标记;
当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象;
采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩;或者,
当所述头部信息中包含的文件格式标记是压缩包标记时,根据所述头部信息中包含的文件大小信息获取第一压缩包的大小;
当所述第一压缩包的大小小于第三预设阈值时,根据所述头部信息和所述后缀信息对所述要检测的文件进行解压缩,以及,确定是否需要在所述文件中搜索其他压缩包,并在需要时,在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩。
2.根据权利要求1所述的方法,其特征在于,所述从所述文件中选取文件头部,包括:
当所述文件的大小大于或等于第一预设阈值时,从所述文件的头部开始选取大小是所述第一预设阈值的部分作为文件头部;或者,
当所述文件的大小小于所述第一预设阈值时,从所述文件的头部开始选取大小是N的部分作为文件头部,其中,N=所述文件的文件大小-第二预设阈值。
3.根据权利要求2所述的方法,其特征在于,所述第一预设阈值是1M字节,所述第二预设阈值是4K字节。
4.根据权利要求1所述的方法,其特征在于,所述根据所述头部信息和所述后缀信息对所述要检测的文件进行解压缩,包括:
当所述压缩包标记与所述后缀信息一致时,采用所述压缩包标记对应的解压缩方式对所述要检测的文件进行解压缩,并判断是否解压缩成功;
在解压缩失败且失败类型是压缩包头部信息无效且没有解压缩出任何文件时,从所述文件中选择文件头部,并在所述文件头部中搜索其他压缩包标记;
当搜索到其他压缩包标记时,采用所述其他压缩包标记对所述要检测的文件进行解压缩。
5.根据权利要求1所述的方法,其特征在于,所述确定是否需要在所述文件中搜索其他压缩包,包括:
当所述压缩包标记与所述后缀信息不一致时,采用所述压缩包标记对应的解压缩方式对所述文件进行解压缩,如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小大于或等于所述第三预设阈值,则解压完成;
如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,或者,如果采用所述压缩包标记对应的解压缩方式对所述文件解压失败,确定需要在所述文件中搜索其他压缩包。
6.根据权利要求5所述的方法,其特征在于,如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,所述在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩,包括:
在所述文件中包含的第一位置与第二位置之间的部分中搜索与所述后缀信息一致的压缩包标记,所述第一位置是所述解压缩后的第一压缩包的结束位置,所述第二位置是所述文件从头部开始后大小为所述预设阈值的位置;
当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象,将所述新的文件对象确定为其他压缩包;
采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
7.根据权利要求5所述的方法,其特征在于,如果采用所述压缩包标记对应的解压缩方式对所述文件解压失败,所述在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩,包括:
从所述文件中选择文件头部,并在所述文件头部中搜索与所述后缀信息一致的压缩包标记;
当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象,将所述新的文件对象确定为其他压缩包;
采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
8.根据权利要求7所述的方法,其特征在于,所述从所述文件中选择文件头部,包括:
从所述文件的头部开始选取大小是所述第三预设阈值的部分作为文件头部。
9.根据权利要求8所述的方法,其特征在于,所述第三预设阈值是1M字节。
10.根据权利要求1、6或7所述的方法,其特征在于,所述根据所述搜索到的压缩包标记形成新的文件对象,包括:
在所述文件中以所述搜索到的压缩包标记作为文件偏移起点,形成新的文件对象。
11.根据权利要求1、6或7所述的方法,其特征在于,所述搜索与所述后缀信息一致的压缩包标记,包括:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
12.一种病毒检测装置,其特征在于,包括:
获取模块,用于获取要检测的文件的头部信息和后缀信息;
解压缩模块,用于根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,获取解压缩后的文件;
扫描模块,用于对所述解压缩后的文件进行病毒扫描;
所述解压缩模块包括:
第一单元,用于当所述头部信息中包含的文件格式标记不是压缩包标记时,判断所述头部信息中包含的文件格式标记是否与所述后缀信息一致;
第二单元,用于在所述第一单元的判断结果是不一致时,判断所述后缀信息是否是预设后缀信息中的一种;
第三单元,用于在所述第二单元的判断结果是所述后缀信息是预设后缀信息中的一种时,从所述文件中选取文件头部,并在所述文件头部中搜索与所述后缀信息一致的压缩包标记;
第四单元,用于当所述第三单元搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象;
第五单元,用于采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩;或者,
所述解压缩模块包括:
第六单元,用于当所述头部信息中包含的文件格式标记是压缩包标记时,根据所述头部信息中包含的文件大小信息获取第一压缩包的大小;
第七单元,用于当所述第一压缩包的大小小于第三预设阈值时,根据所述头部信息和所述后缀信息对所述要检测的文件进行解压缩,以及,确定是否需要在所述文件中搜索其他压缩包,并在需要时,在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩。
13.根据权利要求12所述的装置,其特征在于,所述第三单元具体用于:
当所述文件的大小大于或等于第一预设阈值时,从所述文件的头部开始选取大小是所述第一预设阈值的部分作为文件头部;或者,
当所述文件的大小小于所述第一预设阈值时,从所述文件的头部开始选取大小是N的部分作为文件头部,其中,N=所述文件的文件大小-第二预设阈值。
14.根据权利要求13所述的装置,其特征在于,所述第一预设阈值是1M字节,所述第二预设阈值是4K字节。
15.根据权利要求12所述的装置,其特征在于,所述第七单元具体用于:
当所述压缩包标记与所述后缀信息一致时,采用所述压缩包标记对应的解压缩方式对所述要检测的文件进行解压缩,并判断是否解压缩成功;
在解压缩失败且失败类型是压缩包头部信息无效且没有解压缩出任何文件时,从所述文件中选择文件头部,并在所述文件头部中搜索其他压缩包标记;
当搜索到其他压缩包标记时,采用所述其他压缩包标记对所述要检测的文件进行解压缩。
16.根据权利要求12所述的装置,其特征在于,所述第七单元具体用于:
当所述压缩包标记与所述后缀信息不一致时,采用所述压缩包标记对应的解压缩方式对所述文件进行解压缩,如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小大于或等于所述第三预设阈值,则解压完成;
如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,或者,如果采用所述压缩包标记对应的解压缩方式对所述文件解压失败,确定需要在所述文件中搜索其他压缩包。
17.根据权利要求16所述的装置,其特征在于,如果采用所述压缩包标记对应的解压缩方式对所述文件成功解压,且解压缩后的第一压缩包的大小小于所述第三预设阈值,所述第七单元具体用于:
在所述文件中包含的第一位置与第二位置之间的部分中搜索与所述后缀信息一致的压缩包标记,所述第一位置是所述解压缩后的第一压缩包的结束位置,所述第二位置是所述文件从头部开始后大小为所述预设阈值的位置;
当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象,将所述新的文件对象确定为其他压缩包;
采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
18.根据权利要求16所述的装置,其特征在于,如果采用所述压缩包标记对应的解压缩方式对所述文件解压失败,所述第七单元具体用于:
从所述文件中选择文件头部,并在所述文件头部中搜索与所述后缀信息一致的压缩包标记;
当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象,将所述新的文件对象确定为其他压缩包;
采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩。
19.根据权利要求18所述的装置,其特征在于,所述第七单元具体用于:
从所述文件的头部开始选取大小是所述第三预设阈值的部分作为文件头部。
20.根据权利要求19所述的装置,其特征在于,所述第三预设阈值是1M字节。
21.根据权利要求12所述的装置,其特征在于,所述第四单元具体用于:
在所述文件中以所述搜索到的压缩包标记作为文件偏移起点,形成新的文件对象。
22.根据权利要求12所述的装置,其特征在于,所述第三单元具体用于:
将待搜索的部分按照在文件中的位置从前到后的顺序划分为第一部分、第二部分和第三部分;
按照第二部分、第三部分和第一部分的顺序,搜索与所述后缀信息一致的标记信息。
23.一种电子设备,其特征在于,包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:
获取要检测的文件的头部信息和后缀信息;
根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,获取解压缩后的文件;
对所述解压缩后的文件进行病毒扫描;
所述根据所述头部信息和/或后缀信息,获取所述文件中包含的压缩包,并对所述压缩包进行解压缩,包括:
当所述头部信息中包含的文件格式标记不是压缩包标记时,判断所述头部信息中包含的文件格式标记是否与所述后缀信息一致;
如果不一致,判断所述后缀信息是否是预设后缀信息中的一种;
如果所述后缀信息是预设后缀信息中的一种,从所述文件中选取文件头部,并在所述文件头部中搜索与所述后缀信息一致的压缩包标记;
当搜索到与所述后缀信息一致的压缩包标记时,根据所述搜索到的压缩包标记形成新的文件对象;
采用所述后缀信息对应的解压缩方式对所述新的文件对象进行解压缩;或者,
当所述头部信息中包含的文件格式标记是压缩包标记时,根据所述头部信息中包含的文件大小信息获取第一压缩包的大小;
当所述第一压缩包的大小小于第三预设阈值时,根据所述头部信息和所述后缀信息对所述要检测的文件进行解压缩,以及,确定是否需要在所述文件中搜索其他压缩包,并在需要时,在所述文件中搜索其他压缩包,并对所述其他压缩包进行解压缩。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410458506.7A CN104239793B (zh) | 2014-09-10 | 2014-09-10 | 病毒检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410458506.7A CN104239793B (zh) | 2014-09-10 | 2014-09-10 | 病毒检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104239793A CN104239793A (zh) | 2014-12-24 |
CN104239793B true CN104239793B (zh) | 2017-05-31 |
Family
ID=52227835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410458506.7A Active CN104239793B (zh) | 2014-09-10 | 2014-09-10 | 病毒检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104239793B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106777289A (zh) * | 2016-12-29 | 2017-05-31 | 深圳市捷顺科技实业股份有限公司 | 一种文件搜索方法及装置 |
CN113794676A (zh) * | 2021-07-26 | 2021-12-14 | 奇安信科技集团股份有限公司 | 文件过滤方法、装置、电子设备、程序产品及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306263A (zh) * | 2011-09-07 | 2012-01-04 | 盛乐信息技术(上海)有限公司 | 安全压缩和解压缩系统、安全压缩方法及安全解压缩方法 |
CN102594809A (zh) * | 2012-02-07 | 2012-07-18 | 奇智软件(北京)有限公司 | 一种文件快速扫描方法和系统 |
CN103793649A (zh) * | 2013-11-22 | 2014-05-14 | 北京奇虎科技有限公司 | 通过云安全扫描文件的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007117574A2 (en) * | 2006-04-06 | 2007-10-18 | Smobile Systems Inc. | Non-signature malware detection system and method for mobile platforms |
-
2014
- 2014-09-10 CN CN201410458506.7A patent/CN104239793B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306263A (zh) * | 2011-09-07 | 2012-01-04 | 盛乐信息技术(上海)有限公司 | 安全压缩和解压缩系统、安全压缩方法及安全解压缩方法 |
CN102594809A (zh) * | 2012-02-07 | 2012-07-18 | 奇智软件(北京)有限公司 | 一种文件快速扫描方法和系统 |
CN103793649A (zh) * | 2013-11-22 | 2014-05-14 | 北京奇虎科技有限公司 | 通过云安全扫描文件的方法和装置 |
Non-Patent Citations (1)
Title |
---|
跨平台的多压缩格式解压引擎的设计与实现;李振;《中国优秀硕士学位论文全文数据库 信息科技辑》;20131115;I138-98 * |
Also Published As
Publication number | Publication date |
---|---|
CN104239793A (zh) | 2014-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9098605B2 (en) | Test system, test method, and test device | |
CN104504109B (zh) | 图片搜索方法和装置 | |
US9479785B2 (en) | Image compression with alpha channel data | |
JP2009542092A5 (zh) | ||
CN106257403A (zh) | 用于关于数据传送的单通熵检测的装置和方法 | |
EP3493113B1 (en) | Image processing method, computer device, and computer readable storage medium | |
CN104239793B (zh) | 病毒检测方法和装置 | |
CN107391145A (zh) | 升级包制作方法及装置、升级文件的方法及装置 | |
CN104317574B (zh) | 识别应用程序类型的方法和装置 | |
US20170004256A1 (en) | Methods and apparatuses for generating reference genome data, generating difference genome data, and recovering data | |
EP1702412A1 (en) | Rapidly queryable data compression format for xml files | |
CN111654504B (zh) | 一种dga域名检测方法及装置 | |
CN106776663B (zh) | 音频文件的压缩方法和装置 | |
CN106688186A (zh) | 在基于lz的压缩算法中在多个经压缩块之间共享初始词典和霍夫曼树 | |
CN107169057B (zh) | 一种重复图片的检测方法和装置 | |
US9449249B2 (en) | Method and apparatus for enhancing visual search | |
CN105657575A (zh) | 视频标注方法和装置 | |
US20220199202A1 (en) | Method and apparatus for compressing fastq data through character frequency-based sequence reordering | |
CN102147818A (zh) | 测试文件压缩方法 | |
US9202108B2 (en) | Methods and apparatuses for facilitating face image analysis | |
CN108563795A (zh) | 一种加速压缩流量正则表达式匹配的Pairs方法 | |
CN109388726A (zh) | 一种图片显示方法、装置、设备及计算机可读介质 | |
JP5433753B1 (ja) | 試験装置及び試験方法 | |
KR20210091126A (ko) | Fpga 기반 리시퀀싱 분석 방법 및 장치 | |
CN107026888B (zh) | 大容量数据传送装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20181213 Address after: 519030 Room 105-53811, No. 6 Baohua Road, Hengqin New District, Zhuhai City, Guangdong Province Patentee after: Zhuhai Seal Interest Technology Co., Ltd. Address before: 519070, six level 601F, 10 main building, science and technology road, Tangjia Bay Town, Zhuhai, Guangdong. Patentee before: Zhuhai Juntian Electronic Technology Co.,Ltd. |
|
TR01 | Transfer of patent right |