检测和清除已知及未知计算机病毒的方法、系统和介质的制作方法

文档序号:6555894阅读:361来源:国知局
专利名称:检测和清除已知及未知计算机病毒的方法、系统和介质的制作方法
技术领域
本发明涉及一种检测和清除(即查杀)计算机病毒的技术,特别是一种能检测和杀除未知病毒的方法,以及采用这种方法的计算机系统,以及载有和传输这种查杀病毒的软件的存储介质和传输介质。
长期以来,计算机病毒成为困扰使用计算机的人们的一个重大问题。由于病毒的感染性、自我复制性和破坏性,计算机病毒已经威胁到了人们对计算机的正常使用,如造成数据丢失、篡改、文件损坏、软件破坏等。人们经常使用各种各样的杀毒软件来检测和杀除这些病毒。
目前使用的杀病毒软件大都只能检测和杀除已知类型的病毒,也就是,对于已知的各种类型的病毒,已知其特征码,通过对可能带毒的文件进行检测,寻找病毒特征码,如找到相应病毒的特征码,则判断有病毒,进而进行杀毒。这种方法,不能检测到未知类型的病毒。只有在新的病毒被发现并被病毒分析员分析后,才能取得该新病毒的特征码。将这种新的病毒特征码加入到现有的杀毒软件中,才能识别和检测出新的病毒。
自从计算机病毒出现以来,查病毒主要是通过特征值扫描法,即在捕捉到一个病毒后,反病毒人员从病毒的程序体中提取一串或多串特征码,作为该病毒的特征值,查毒软件根据文件中是否含有病毒的特征值,来判断该文件是否带病毒。虽然十几年来,查毒技术有了一定的改进,但特征值扫描法作为查毒软件的基础并未动摇。特征值扫描法(即查毒软件)的最大缺陷是只有先捕捉到一个病毒并被病毒分析员分析提出病毒特征码加入病毒特征库,然后查毒软件才能查出该病毒,即查毒软件总是落后于病毒,病毒一定要让病毒分析员分析。
目前已知的能够检测未知病毒的杀毒技术例如有广谱查毒、启发式查毒等等,它们是用足够多的经典的病毒特征码,有的还用虚拟机运行待查毒对象的部分代码,运用经验值来判断该待查毒对象可能有毒或判断该待查毒对象里有可疑代码。例如,国内外一些反病毒公司推出了查未知病毒的方法,这些方法都是基于一种思想,总结一些病毒攻击计算机常用的方法,比如写盘,写文件等,然后从查毒对象中查找这些特征,实际这就是行为特征描述。这种方法有的称为诱导式查毒方法,有的称为启发式查毒方法。这种方法可以发现一些未知的病毒,起到警报的作用,但是效果很差,误报率和漏报率都非常高。这有两方面的原因,一是病毒攻击的方法多种多样,很难一一列举,二是病毒采用的攻击方法对于系统来说都是合法的,有很多工具性软件也有同样的行为,很难鉴别。使用这种方法查毒对于用户来说,能查到一些未知病毒,并提醒用户注意,但由于误报率比较高,也给用户带来不必要的恐慌,而且最为重要的一点,它无法杀毒,如果真的被病毒攻击,也只能停机等待杀毒软件的升级。而且这种方法不能确定待查毒对象是否有毒只能说可能有毒。到目前为止,世界上还没有能杀未知病毒的反病毒产品也没有不用病毒特征库(数据库或代码库)能杀已知病毒的反病毒产品。
针对上述现有的杀毒软件技术中的问题,本发明的目的在于提供一种能有效检测和清除出已知及未知病毒的方法、系统和介质,它利用病毒的基本特性感染性,来检测出病毒的存在,从而能从根本上解决检测未知病毒的问题,它能检测出绝大多数已知和未知病毒的存在,进而加以杀除。从根本上改变十几年来每种病毒都必须由人工分析后才能查杀的事实。有了该发明,就使未知病毒能被及时的发现并清除,大大的减轻了病毒对信息及数据破坏的可能性;绝大多数已知和未知病毒的查杀不再需要人工分析,从而节省大量人力和财力。
本发明提供一种检测和清除计算机病毒的方法,包括以下步骤计算机模拟步骤,在一台计算机上模拟一个计算机病毒赖以生存的虚拟计算机环境;提供多个计算机病毒可能感染的感染对象,即诱饵,用于诱发病毒感染;装入待检测对象到所述模拟的计算机环境中;在所述模拟的计算机环境中激活该待检测对象,以诱发附在所述待测对象上的病毒对所述多个感染对象进行感染,并生成感染后的标准样本;将运行后的所述多个感染对象与原始提供的多个感染对象进行比较分析,判断有无改变,如有改变,判断所述待检测对象带有病毒;如无改变,判断其没有病毒。
本发明的所述检测和清除计算机病毒的方法,还包括以下步骤病毒分析和学习步骤,用于在所述病毒判断步骤判断有病毒时,对生成的标准样本进行分析,并从标准样本中提取关于病毒的信息和知识;病毒清除步骤,用于根据所述关于病毒的信息和知识,根据病毒对所述感染对象即诱饵的改变,对所述带病毒的待检测对象进行相应的清除病毒体和修正改病毒修改过的关键信息从而清除病毒。
本发明还提供一种检测和清除计算机病毒的计算机系统,包括一普通的计算机,该系统包括计算机模拟单元,在一台计算机上模拟一个计算机病毒赖以生存的虚拟计算机环境;多个计算机病毒可能感染的感染对象,即诱饵,用于诱发病毒感染;控制单元,用于装入待检测对象到所述模拟的计算机环境中;病毒感染诱发单元,用于在所述模拟的计算机环境中激活该待检测对象,以诱发附在所述待测对象上的病毒对所述多个感染对象进行感染,并生成感染后的标准样本;病毒判断单元,用于将运行后的所述多个感染对象与原始提供的多个感染对象进行比较分析,判断有无改变,如有改变,判断所述待检测对象带有病毒;如无改变,判断其没有病毒。
本发明的所述检测和清除计算机病毒的计算机系统,还包括病毒分析和学习机,用于在所述病毒判断步骤判断有病毒时,对生成的标准样本进行分析,并从标准样本中提取关于病毒的信息和知识;病毒清除单元,用于根据所述关于病毒的信息和知识,根据病毒对所述感染对象即诱饵的改变,对所述带病毒的待检测对象进行相应的清除病毒体和修正改病毒修改过的关键信息从而清除病毒。
本发明还提供一种计算机可读的存储介质,用于使计算机执行上述检测和清除计算机病毒方法中的各个步骤;以及提供一种传输介质,用于通过网络传输使计算机执行上述检测和清除计算机病毒方法中的各个步骤。


图1示出了本发明的检测和清除计算机病毒的计算机系统的结构框图。
图2A-2C示出了本发明的检测和清除计算机病毒的方法的工作流程图。
计算机病毒之所以被称为病毒,主要是它具有感染性,因此感染性是病毒最本质的特征。如果一个程序具有感染性,就可断定其带有病毒。通过识别一个程序是否具有感染性判断该程序是否被病毒感染,是识别病毒最有效方法。但是,由于病毒具有感染性,要验证它具有感染性,就意味着它要感染某个对象,如果是在真实的环境下进行,这意味着查毒同时,病毒一直在传播,显然不能在真实的环境下进行。验证待查对象是否具有感染性,只能在虚拟环境中进行。
本发明就是利用上述病毒的感染性,把可能带毒的对象放入一个病毒赖以生存繁殖的虚拟的计算机环境里并激活可能带毒的对象,用诱饵来诱发其感染。并且,由于各种病毒可能会有一定的感染条件,如有的病毒会对目标对象的尺寸、内容等等有一定的要求,因此,本发明提供各种各样的“诱饵”,包括各种各样的不同大小不同内容的诱饵对象,如用format.com、sort.com等文件诱发DOS com型病毒;用debug.exelable.exe等文件诱发DOS exe型病毒;用模拟的软盘引导扇、硬盘一引导扇区、硬盘主引导扇区诱发DOS boot型病毒;用notepad.exe、word.exe等文件诱发WINDOWS pe型病毒;等等。以不同的诱饵对象尽量满足病毒对目标对象的要求。
本发明是指虚拟环境的病毒繁殖—查杀病毒新技术,该技术归属于行为结果查杀毒范畴。本发明用虚拟环境模仿一个真实计算机环境,实现病毒的生存繁殖及传播的全部过程。同时监控病毒的生存繁殖及传播这一过程,并学习病毒的感染方法,进一步推导出病毒感染的逆过程即杀毒方法。具体步骤是如下第一步,建立一个病毒赖以生存繁殖的虚拟环境,把待查毒的对象也放到该环境里;第二步激活可能带毒的对象,如果待查毒的对象真带毒的话,该虚拟计算机环境也成了带毒环境。对虚拟环境里的诱饵进行各种操作,尽最大努力让病毒感染诱饵。也就是在虚拟环境里做病毒感染繁殖试验,如果诱饵被病毒感染了,说明待查毒的对象真的带毒,被病毒感染的诱饵便成了一个标准样本;第三步,如果上一步感染繁殖试验成功,就用程序来分析标准样本(而不是病毒分析员),并从标准样本中提出查杀该病毒所需的尽可能多的信息。第四步,把程序分析标准样本得到的信息应用到带毒对象上,进一步把病毒给清除。
图1具体示出了按照本发明的优选实施例的检测未知病毒的计算机系统的构成方框图。如图1所示,在一个普通的计算机系统1中,装有一个可由该计算机执行的本发明的查杀毒单元2。该计算机1中可以带有通常的CPU、内存、操作系统(OS)、外部存储设备(硬盘、软盘等)(图中未示出)。该查杀毒单元2的整个程序由计算机1的CPU中执行。该计算机系统中还包括一待查毒对象19,它可以是计算机2的硬盘、软盘中的文件,硬盘、软盘的引导扇区,以及从互联网下载和传输的文件或数据等可能带毒的对象。
如图1所示,所述查杀毒单元2包括一查毒控制单元3,用于输入待查毒对象19到模拟的计算机环境中,并控制查毒处理各单元的整个过程;一计算机模拟单元4,又称虚拟计算机,用于生成一个完整的模拟计算机系统,作为病毒赖以生存繁殖传播的虚拟环境,该生成的模拟计算机系统可以包括虚拟的CPU5、虚拟内存6、虚拟的操作系统(OS)7、虚拟的外部存储设备8(硬盘、软盘等)及其它病毒生存繁殖传播所需的系统资源的部分9,如系统时间等;一个或多个标准诱饵11(即计算机病毒可能感染的感染对象),用于诱发病毒感染;一病毒感染诱发单元10,用于将所述待查毒对象19装入到所述虚拟计算机4中进行运行,并用所述标准诱饵11来诱发待查毒对象19可能带有的病毒对这些标准诱饵11以及诱发病毒对所述模拟计算机环境本身中的模拟硬盘、模拟软盘的引导扇区等部分的感染,并生成感染后的标准样本13;一病毒比较判断单元12,用于检查在诱发病毒前后所述模拟计算机环境本身中的模拟硬盘、模拟软盘的引导扇区等部分有无改变,以及将所述感染后的标准样本13与感染前的标准诱饵11进行比较,检查有无改变,如有改变,则判断为该待查毒对象19带病毒,如无改变,则认为无病毒18。
所述查杀毒单元2的杀毒部分包括一杀毒控制单元17,用于控制杀毒毒处理各单元的整个过程;一病毒分析学习单元14,用于根据所述标准诱饵11和感染病毒后生成的标准样本13来分析病毒感染所造成的改变,并学习关于该病毒的知识;一病毒清除单元15,用于根据所述病毒分析学习单元14生成的关于病毒的知识,有针对性地杀除病毒,并产生清除病毒后的对象16。该清除病毒后的对象16可以由所述杀毒控制单元17覆盖到输入的待杀毒对象19上,以消除病毒的存在。
按照本发明的一个实施例,上述查毒控制单元2和杀毒控制单元17可以合并为一个控制单元,以控制上述查毒和杀毒的整个过程。
所述计算机模拟单元4生成的虚拟计算机环境包括虚拟机(虚拟的CPU)5、虚拟的操作系统7、虚拟的计算机外部存储设备8、虚拟的物理内存6等,总之病毒生存所需的一切计算机资源都被模拟出来;可能带毒的对象是指理论上说可能被病毒感染的对象。在适当的条件下把可能带毒的对象放到病毒赖以生存的虚拟环境里并在此环境虚拟激活。
所述虚拟CPU5又称softcpu()(软件实施或模拟的CPU)。softcpu()就是一个真实CPU指令解释器。softcpu()对程序是解释执行的,就象是一个真正的CPU,能读懂每一句程序代码并正确解释执行。理论上讲,只要真实CPU能执行的代码softcpu()就能执行,只要真实CPU能执行的程序,softcpu()也能解释执行下去;只要真实CPU认识的指令,softcpu()也将认识,softcpu()按照真实CPU处在这种状态会怎么做,那softcpu()也照样去做。不过真实CPU操作的所有对象(例如BIOS芯片、磁盘)是真实的对象,而softcpu()操作的所有对象(例如BIOS芯片、磁盘)都是虚拟的对象。
另外,softcpu()只是解释真实CPU指令的一个函数而已,可以用汇编语言、C语言或其它语言写。为了可移植性及可维护性,按照本发明的一个实施例,采用C语言编写。
如果要查感染Intel计算机上的病毒,softcpu()模拟的是Inte1的CPU;如果要查感染MAC计算机上的病毒,softcpu()模拟的是MAC的CPU;等等。
任何程序总是运行在特定操作系统下,病毒也不例外。虚拟的操作系统7就是要模拟病毒所运行的操作系统。该模拟操作系统7可以包括病毒运行所需的多个操作系统,如DOS的虚拟操作系统、WINDOWS95的虚拟操作系统、UNIX的虚拟操作系统等。为了提高效率,按照本发明的一个实施例,该模拟的操作系统7仅模拟病毒所运行的操作系统最小内核。如果要查杀DOS病毒,该模拟的操作系统选为DOS的虚拟操作系统;如果要查杀WINDOWS95病毒,该模拟的操作系统选为WINDOWS95的虚拟操作系统,等等。
本发明的计算机模拟单元4产生虚拟的计算机外部存储设备8,包括硬盘、软盘等。在该虚拟计算机环境中,待查毒对象的程序中所有对计算机外部存储设备的读写均是对虚拟外部存储设备的读写,即在程序虚拟运行时,对磁盘文件的感染和破坏数据,都是对虚拟磁盘中的文件感染和破坏虚拟磁盘中的数据。
按照本发明的一个实施例,所述虚拟的计算机外部存储设备8包括一可由所述计算机模拟单元4调用的虚拟计算机外部存储设备函数或程序单元8,其可生成一虚拟硬盘。该虚拟计算机外部存储设备单元8完成的主要功能是在内存中开辟一块所需大小的内存空间,然后根据具体要求使内存空间的虚拟硬盘具有跟正常硬盘一样的结构,如有扇区号、磁道号、柱面号的三维空间概念,主引导扇区和对应的0道中的空闲扇区,紧接着有引导区,文件分配表,根目录区,还有所需的系统文件(对于DOS系统有IO.SYS MSDOS.SYS COMMAND.COM),以及用来测试的诱饵文件(对于DOS文件型病毒来说应有例如DOSEXE.EXE DOSCOM.COM等文件)。虚拟盘上的对本发明的查杀毒系统有用的数据也不过占几十K到几百K的字节空间,而通常的硬盘有几M到几G的字节空间,在本系统中其绝大多数空间是没用上的,所以按照本发明的一个实施例,可以只在内存中开辟几十K到几百K的字节空间来虚拟一个几M到几G的字节空间的硬盘。虚拟一个大的硬盘只需小量内存空间,所以在普通的微机上就可以实现本系统所需要的虚拟硬盘。并且,由于在查杀毒期间不用访问实际的硬盘,所访问的虚拟硬盘实际是在内存的一个小区域中,所以处理速度快,节省了时间。而且,由于该虚拟磁盘仅仅是一块内存空间,既不会对真实的磁盘造成感染和破坏,也不会破坏内存的物理特性,所以对用户的系统是无害的。
按照本发明的进一步的实施例,在用此单元8虚拟硬盘的时候,可以提供一预定的全局结构hard_disk_struct来控制生成硬盘的具体规格,诸如,虚拟一空盘,一引导盘,一张包含系统文件及诱饵文件的硬盘。
所述虚拟计算机外部存储设备单元8也可模拟软盘,完成的主要功能是在内存中开辟一块所需大小的内存空间,然后根据具体要求使内存空间的虚拟软盘具有跟正常软盘一样的结构,如有引导区,文件分配表,根目录区,还有所需的系统文件(对于DOS系统有IO.SYS,MSDOS.SYS,COMMAND.COM),以及用来测试的诱饵文件(如DOSEXE.EXE,DOSCOM.COM等),其所需的数据仅仅只占几十K。按照本发明的一个实施例,可以设定一全局结构floppy_disk_struct来控制生成软盘的具体规格,诸如,虚拟一空盘,一引导盘,一张包含系统文件及诱饵文件的软盘,具体为可以根据该全局变量生成360K,720K,1.2M,1.44M的软盘。
同样,可以模拟任何一种操作系统的硬盘和软盘。上述的灵活实现可以节省装入的系统时间开销,在实际调用过程中,该虚拟计算机外部存储设备单元8把所需数据正确的加载到指定的内存空间。
上述的虚拟CPU5、虚拟内存6、虚拟OS7等的程序单元都是用本领域技术人员已知的编程语言来实现的,其包含模拟CPU的各种指令、内存的各种管理和存取操作、OS的各种数据结构和功能服务的实现代码,这些都是目前的编程技术所能够实现的。因此,这里不再赘述。
激活待查毒对象就是要让附在待查毒对象上的病毒活动起来并表现出病毒的行为。例如如果待查毒对象是可执行二进制文件(DOS exe文件、DOS com文件、DOS bat文件、Windows NE或PB文件),那么激活就是执行的意思;如果待查毒对象是WORD等带可执行宏的文档文件,那么激活就是打开该文档并是能让其中的宏执行的方式打开。
上述标准诱饵还可设置虚拟的系统时间,包括各种日期和时间,用于诱发对时间敏感的病毒,如类似CIH病毒(在4月26日发作)、和“黑色星期五”病毒等。如图1所示,本发明的查杀毒程序2的查毒部分提供一个标准诱饵的集合,包括多个标准诱饵11,或诱饵集。所谓诱饵,是指可能被病毒感染的已知对象。按照本发明的一个实施例,如果要查杀DOS病毒,诱饵是DOS程序;如果要查杀WINDOWS95病毒,诱饵是WINDOWS95程序;如果要查杀WORD病毒,诱饵是WORD文档;等等。无论待查杀毒对象是一个什么类型的可执行体,诱饵都是一个与待查杀毒对象同类型的可执行体。不过诱饵是无毒的,其尺寸、内容、结构及它的行为功能都是已知,而待查杀毒对象是否带毒是未知的(在查之前),如果真带毒的话,那么其真实尺寸、内容、结构及它的行为功能都是未知的。
另外,上述诱饵11不是随便的一个可执行体,而是经过大量的已知病毒实验,使其能被大量的已知病毒感染所得到的可执行体。诱饵的尺寸、内容都很合病毒“胃口”即可感染性极强。如果诱饵被病毒感染了,能够从诱饵中提取出病毒信息。总之,诱饵就是一个很容易被病毒感染的已知可执行体,诱饵集就是多个很容易被病毒感染的各种类型已知可执行体的集合。
具体讲,按照本发明的一个实施例,上述标准诱饵11的设置包括,例如,DOS com型诱饵集,包含构成诱饵集的多个诱饵文件,其尺寸分布在1K至60K之间大小不等的多个文件(1K、2.5K、12K、20K、30K、40K等);诱饵集中文件的第一条指令应分别为Jmp、call、mov、xor等指令;诱饵集中文件的时间日期和属性也应分别不同,用于诱发不同类型的对时间或属性敏感的病毒。
上述标准诱饵的设置还可以包括DOS exe型诱饵集,包括构成诱饵集的多个诱饵文件,其文件头尺寸分别为0×20、0×200、0×400、0×600、0×800等几种,文件尺寸分别为4K、10K、20K、40K、80K等几种,文件最后一页大小分别为为0×00、0×03、0×80、0×87、0×100、0×198等几种;其重定位项数分别为0×00、0×01、0×02、0×04、0×10等几种但不占满重定位项表;其CS、IP的值也设为各种各样的值;程序的堆栈空间分别设有堆栈空间在程序体前部、堆栈空间在程序体中部、堆栈空间在程序体后部、堆栈空间在程序体末端(不属于程序体)等几种。
上述标准诱饵的设置还可以包括引导型诱饵集,其包括MSDOS、PCDOS、DRDOS、WIN9X等系统的不同版本的引导扇区及主引导扇区的集合。它实际上是在上述计算机模拟单元4生成虚拟硬盘、软盘时,按照上述引导型诱饵集生成包含各种如MSDOS、PCDOS、DRDOS、WIN9X等系统的不同版本的引导扇区及主引导扇区的虚拟硬盘和软盘,用来诱发引导型病毒。
同样,上述标准诱饵的设置还可以包括宏病毒诱饵集,包括各种尺寸、各种类型的WORD文件,用于诱发宏病毒感染。
如图1所示,所述病毒感染诱发单元10又称病毒样本生成机,利用上述提供的各种诱饵集,进行病毒感染诱发处理,即运行所述待查毒文件及其中可能带有的病毒,尽最大努力让标准宿主文件即上述各种诱饵感染上病毒的一个功能单元。染毒判断单元12判断是否有任何诱饵在病毒样本生成机10中被感染上病毒。具体讲,染毒判断单元12将病毒感染诱发单元10中将待查毒对象运行后得到的各个诱饵与运行前的各自诱饵进行比较,检查有无改变。如果有任何诱饵在病毒诱发运行前后发生了改变,则认定该待查毒对象带毒。同时该改变后的诱饵文件即为病毒样本。也就是说,如果病毒样本生成机10没有生成样本13,说明目标文件无毒;若样本生成机生成了样本13,说明目标文件有毒并且标准宿主文件(诱饵)成了标准样本,其体内有所有的杀毒信息。按照本发明的一个实例,假设在上述虚拟DOS环境中已有DOS内存病毒驻留上述虚拟内存,病毒样本生成机对DOS exe、DOS com诱饵进行执行、打开、读、关闭、查找等等操作,尽最大努力让内存病毒感染上上述诱饵。被病毒改写、即感染后的待查毒对象即为标准样本13。
对于文件型病毒,感染上病毒的诱饵文件本身就成为上述标准样本。对于引导区型病毒,所述样本生成机10根据在上述虚拟硬盘或软盘中的被病毒改变后的引导区信息,生成上述标准样本13。
所述标准样本13是指一个被病毒感染的标准诱饵或指一个被病毒感染的标准宿主。标准宿主是病毒分析员对其大小、内容及体系结构都很清楚的可执行体,其上面很适合附带病毒,如感染条件合适的话。
如图1所示,按照本发明的一个实施例,本发明的杀毒部分的病毒学习机14,又称标准样本分析机,它把上述标准诱饵11与生成的标准样本13进行比较,分析样本,并从标准样本中提取出全部的病毒信息或杀毒所必需的信息。此过程叫病毒学习机的学习过程。病毒学习机的学习过程是一种仿人工杀毒的过程,其不用特征码,与特征码杀毒有本质区别。病毒学习机从标准样本中提取的信息或学习的知识包括病毒的尺寸大小、病毒在文件宿主中的位置、病毒是否加密变型、病毒是否对宿主进行了加密运算、或病毒已经破坏了宿主程序没法清除(可以删除)、病毒是否对宿主进行了重定位、病毒是否把宿主进行了节对齐、宿主对象的关键信息(例如宿主程序的入口)的值或位置等等。
例如对于普通DOS com型病毒,该病毒学习机14提取出两点知识1.病毒的尺寸大小;2.宿主对象原有功能是否完整或病毒是否已经破坏了宿主程序的原有功能。其中,采用的得到病毒的尺寸大小的算法之一是用标准样本的尺寸大小减去标准诱饵(或标准宿主)的尺寸大小;采用的判断宿主对象原始功能是否完整的算法是在上述计算机模拟单元4中虚拟计算机环境里运行标准样本直到结束或虚拟计算机当机,在此过程中如果产生了标准诱饵(或标准宿主)的原始功能,那么宿主对象原始功能完整,否则宿主对象原始功能不完整。
传统的特征码杀毒方法是用事先由病毒分析员填好的已知病毒特征库里的信息(数据或代码)来清除病毒的。本发明的病毒清除单元15是一种仿人工的杀毒单元,它不用病毒分析员填好的已知病毒特征库来杀毒,而是用病毒学习机14实时学习得到的病毒知识来把病毒清除。该模仿人工查杀毒的病毒清除单元15根据上述病毒学习机14提取的关于病毒的信息和知识,把病毒学习机14实时学习得到的病毒知识运用到待杀毒对象上并清除病毒。该清毒单元的原则是“解铃还需系铃人”,病毒样本生产机10和病毒学习机14向病毒学习病毒的感染过程并分析感染的结果(标准样本)得到病毒的数据及属性;病毒的本质在于感染和传播并有一的隐蔽性,也就是说绝大多数病毒不会破坏宿主的原始功能,清毒单元15虚拟执行病毒,病毒就会还原宿主对象,清毒单元把病毒还原的宿主对象存盘便可(对于那些在内存与在磁盘的存在形式不一样的对象,要进行相应转换)。至于病毒什么时候还原宿主对象就的用病毒学习机学到的病毒属性来判断。例如,按照本发明的一个实施例,采用病毒自还原法就是清毒单元15根据感染过程推理出感染的逆过程即解毒过程的方法之一。如果病毒学习机学到的病毒属性或数据足够多的话,就用这些这种属性或数据计算出原始宿主的关键信息(被病毒改过的信息)从而解毒。用软件实时学习并实时运用的杀毒处理在该清毒单元15得到实现,而这是目前所有查杀毒软件产品所没有的。
作为一个示例,本发明的清毒单元15清除普通DOS com型病毒的过程如下1.如果标准样本的原始功能不完整,那么删除待杀毒文件,否则进行下一步;2.把待杀毒的DOS com文件装入虚拟的计算机环境执行至到虚拟CPU程序段寄存器Cs值为程序段前缀段地址并且寄存器IP值为0×0100时为止;3.计算待杀毒文件清毒后应有尺寸大小,干净的DOScom文件尺寸大小等于待杀毒DOS com文件尺寸大小减去病毒尺寸大小;4.生成干净的目标DOS com型文件,即把虚拟内存CS:IP开始到CS:IP+干净的DOS com文件尺寸大小的内容存为文件。
如果上述病毒学习机14无法学习病毒知识或病毒清除单元16判断病毒宿主的原始功能已经被破坏,则删除所述待查杀对象。
图2A、2B、2C示出了本发明的查杀病毒的方法的一个实施例的处理流程图。该流程的各个步骤分别在上述图1中的各个处理单元中执行,以构成完整的查毒和杀毒处理。如图2A所示,首先,从硬盘、软盘或互联网输入的数据等中待查杀的目标对象19的来源中读取待查杀的目标对象19(步骤S101),然后判断该目标对象是否为可能带毒的对象(S102)。可能带毒的对象,顾名思义就是从理论上说该对象有被病毒感染的可能性,但不一定带毒。可能带毒对象一定是一个可执行体,例如*.exe、*.com、*.bat、.doc、PE和NE文件、磁盘引导扇区及主引导扇区,等等。一个不可执行体不可能是一个可能带毒对象,例如*.txt。
如果在步骤S102中,判断所述目标对象是可能带毒对象,则进至步骤S103,进行查杀毒处理;如判断该对象不可能带毒,如为不可执行体,例如*.txt,则判断该目标对象无毒;如目标对象未知,则报告目标对象为未知对象。
在步骤S103中,由所述计算机模拟单元4生成生成一个模拟的计算机环境,包括生成虚拟CPU,虚拟OS,虚拟外部存储设备(硬盘,软盘),虚拟内存、虚拟系统时间等,以便在其中虚拟运行所述可能带毒对象。在步骤S104,提供多个计算机病毒可能感染的感染对象,即图1中的标准诱饵11,包括上述的文件型诱饵集和所述虚拟硬盘、软盘等的引导扇区诱饵集等。在步骤S105,装入所述待查杀对象19到所述生成的虚拟计算机环境中。在步骤S106,在所述模拟的计算机环境中激活附在所述待查毒对象上的病毒,即用上述设置的各种诱饵去诱发可能的病毒对上述虚拟计算机环境及各种诱饵文件的感染。在一方面,在步骤S107中,判断是否有诱饵被感染,另一方面,在步骤S108中判断该虚拟的计算机环境是否带毒,即判断所述虚拟的内存中是否带毒,所述虚拟的各种硬盘的引导扇区是否带毒,和所述虚拟的软盘的引导扇区中是否带毒。在步骤S107中,如判断有诱饵被感染,则进至图2B中的步骤S111;否则,报告目标对象无毒。在步骤S108中,如判断该虚拟环境带毒,则进至图2B中的步骤S110,对虚拟计算机环境里的诱饵进行尽可能多的操作,以尽量诱发带毒对各种诱饵的感染,然后进到步骤S107,再判断是否有诱饵被感染。
如图2B所示,步骤S111报告所示待查毒对象有毒,产生标准样本,并分析病毒类型,如该病毒是DOS病毒、宏病毒、引导扇区病毒等等。之后进至步骤S112,提示用户是否需要杀毒。如用户不需要杀毒,则给出目标对象带毒的报告,然后在步骤S109,查毒结束。如用户需要杀毒,进至步骤S113。
在步骤S113中,提取出在虚拟计算机环境中生成的所有标准样本,然后在步骤S114中,利用所述病毒学习机14来分析生成的标准样本,其中主要是判断标准样本的原始功能(即标准诱饵的功能)是否完整。在步骤S115,判断标准宿主的原始功能(感染前的功能)是否完整,如判断不完整,则进至步骤S116;如判断为完整的,则进至图2C中的步骤S120。
在步骤S116中,确定病毒宿主的原始功能已经被病毒破坏无法清除只有删除。在步骤S117,询问用户是否删除该带毒文件,若是则删除该待查毒文件(步骤S118),若否,杀毒结束(步骤S119)。
如图2C所示,在步骤S120中,所述病毒学习机14从标准样本中学习所有有关病毒的知识,尽最大努力学到清毒所需的病毒关键数据或属性至到学够了为止。例如一个DOS com型病毒学到以下知识序列便够1.病毒不加密不变形不变长;2.病毒的尺寸virus_size;3.病毒只改了宿主的头三个字节;4.病毒存放宿主的头三个字节的位置data_offset_in_virus(相对病毒体)。
然后在步骤S121中,病毒清除单元15利用病毒学习机14所学到的病毒关键数据或属性在待杀毒对象(宿主对象)中的病毒体内查找或计算原始宿主中被病毒修改过的关键数据或属性。例如一个有下列属性的DOS com病毒1.病毒不加密不变形不变长;2.病毒的尺寸virus_size;3.病毒只改了宿主的头三个字节;4.病毒存放宿主的头三个字节的位置data_offset_in_virus(相对病毒体)。清除上序病毒步骤如下1.计算病毒体在文件中的位置virus_offset_in_file等于待杀毒文件的尺寸fils_size减去病毒的尺寸virus_size;2.计算宿主的头三个字节的位置data_offset_in_file(相对宿主文件)等于virus_offset_in_file+data_offset_in_virus;3.用data_offset_in_file处的三字节修复宿主文件的头三字节;4.把待杀毒文件从尾部砍掉virus_size字节。
在步骤S122中,判断病毒修改过的宿主信息的原始值是否计算成功。如否,则杀毒失败(步骤S125);如是,则进至步骤S123。
在步骤S123中,修复待杀毒对象(宿主对象)的被病毒修改过的数据或属性,例如文件尺寸、文件头数据等,这样,就清除了病毒。
在步骤S124,报告杀毒成功。然后,进至步骤S119,杀毒结束。
本发明的上述查杀毒的方法及其各个查杀毒单元都可以通过用普通的计算机编程语言(如C语言等)编制相应的软件来实现,该软件可以装在计算机中运行;可以包含在软盘中进行销售和运行使用;也可以通过网络及互联网的形式进行传输和下载,并加以运行。
在本发明的用软件实现的所述查杀病毒的计算机系统和方法中,能够利用计算机病毒的根本特性感染性,来查出病毒,并实时学习和实时运用有关病毒的知识,这是目前所有查杀毒软件产品所没有的。本发明判定病毒的方法是根据“结果”,而不是根据行为,可以称其为行为结果判定技术。当然,本发明的方法也知道病毒的行为,而且知道病毒的每一种行为和行为的结果,根据这些行为和结果,可以安全地把病毒清除,但是不对单独的行为(如写盘)进行判断,所以可以节省很多时间,速度较快。并且,本发明在实际内存中用一小区域提供了病毒生存繁殖的模拟环境,使得处理速度足够快,从而使尽量诱发病毒感染能够实际实现。
采用本发明的查杀病毒的计算机系统和方法,绝大多数已知和未知病毒不再需要人工分析,不需病毒特征库就能将其查杀;能及时发现新出现的病毒;能查杀的病毒数量不再受限制,有多少查杀多少;并且,采用本发明的反病毒软件不再落后于病毒,能够可靠地发现和杀除未知的病毒。
虽然本发明已以前述优选实施例说明,然其并非用于限制本发明,任何本领域的普通技术人员,在不脱离本发明的精神和范围的情况下,可作各种的更动与修改。因此本发明的保护范围以后附的权利要求为准。
权利要求
1.一种检测和清除计算机病毒的方法,其特征在于,包括以下步骤计算机模拟步骤,在一台计算机上模拟一个计算机病毒赖以生存的虚拟计算机环境;提供多个计算机病毒可能感染的感染对象,即诱饵,用于诱发病毒感染;装入待检测对象到所述模拟的计算机环境中;在所述模拟的计算机环境中激活该待检测对象,以诱发附在所述待测对象上的病毒对所述多个感染对象进行感染,并生成感染后的标准样本;将运行后的所述多个感染对象与原始提供的多个感染对象进行比较分析,判断有无改变,如有改变,判断所述待检测对象带有病毒;如无改变,判断其没有病毒。
2.如权利要求1所述的方法,还包括以下步骤病毒分析和学习步骤,用于在所述病毒判断步骤判断有病毒时,对生成的标准样本进行分析,并从标准样本中提取关于病毒的信息和知识;病毒清除步骤,用于根据所述关于病毒的信息和知识,根据病毒对所述感染对象即诱饵的改变,对所述带病毒的待检测对象进行相应的清除病毒体并修正改病毒修改过的关键信息从而清除病毒。
3.如权利要求1或2所述的方法,其中所述计算机模拟步骤包括提供功能函数来调用和执行以下步骤中央处理器(CPU)模拟步骤,用于模拟CPU的指令;操作系统(OS)模拟步骤,用于模拟OS提供的各种服务和各种数据结构;外部存储设备模拟步骤,包括模拟硬盘、软盘等设备的存储空间及结构;和内存模拟步骤,用于生成、分配和管理一模拟的内存空间。
4.如权利要求3所述的方法,其中所述提供的感染对象包括不同大小不同内容的各种类型的诱饵集,用于诱发不同类型不同感染条件的病毒,包括DOS文件型诱饵,用于DOS com型文件诱发DOS com型病毒;用模拟的DOS引导扇区,用于诱发DOS引导扇区型病毒;WORD文件型诱饵,用于诱发宏病毒等等。
5.如权利要求4所述的方法,其中对同一种类的病毒提供不同大小不同内容的多种诱饵,尽最大可能的满足待查毒对象里的病毒的感染条件。
6.如权利要求5所述的方法,其中还包括系统时间模拟步骤,生成虚拟的系统时间,用于诱发对时间敏感的病毒。
7.如权利要6所述的方法,其中所述模拟OS包括模拟DOS,WINDOWS,UNIX等多种操作系统之一。
8.如权利要求2所述的方法,在所述病毒清除步骤中,虚拟执行病毒,使被感染的宿主对象即被判断为带有病毒的所述待检测对象还原,从而清除病毒。
9.如权利要求3所述的方法,其中在所述外部存储设备模拟步骤中,在内存中开辟一块小的内存空间来模拟硬盘,使内存空间的虚拟硬盘具有跟正常硬盘一样的结构,包括扇区号、磁道号、柱面号的三维空间概念,主引导扇区和对应的0道中的空闲扇区,紧接着有引导区,文件分配表,根目录区,还有所需的系统文件,以及所述用来诱发病毒的诱饵文件等。
10.如权利要求3所述的方法,其中在所述外部存储设备模拟步骤中,在内存中开辟一块小的内存空间来模拟软盘,使内存空间的虚拟软硬盘具有跟正常软盘一样的结构,包括引导区,文件分配表,根目录区,还有所需的系统文件,以及所述用来诱发病毒的诱饵文件等。
11.一种检测和清除计算机病毒的计算机系统,包括一普通的计算机,其特征在于,该系统包括计算机模拟单元,在一台计算机上模拟一个计算机病毒赖以生存的虚拟计算机环境;多个计算机病毒可能感染的感染对象,即诱饵,用于诱发病毒感染;控制单元,用于装入待检测对象到所述模拟的计算机环境中;病毒感染诱发单元,用于在所述模拟的计算机环境中激活该待检测对象,以诱发附在所述待测对象上的病毒对所述多个感染对象进行感染,并生成感染后的标准样本;病毒判断单元,用于将运行后的所述多个感染对象与原始提供的多个感染对象进行比较分析,判断有无改变,如有改变,判断所述待检测对象带有病毒;如无改变,判断其没有病毒。
12.如权利要求11所述的系统,还包括病毒分析和学习机,用于在所述病毒判断步骤判断有病毒时,对生成的标准样本进行分析,并从标准样本中提取关于病毒的信息和知识;病毒清除单元,用于根据所述关于病毒的信息和知识,根据病毒对所述感染对象即诱饵的改变,对所述带病毒的待检测对象进行相应的清除病毒体和修正改病毒修改过的关键信息从而清除病毒。
13.如权利要求11或12所述的系统,其中所述计算机模拟单元包括中央处理器(CPU)模拟单元,用于模拟CPU的指令;操作系统(OS)模拟单元,用于模拟OS提供的各种服务和各种数据结构;外部存储设备模拟单元,包括模拟硬盘、软盘等设备的存储空间及结构;和内存模拟单元,用于生成、分配和管理一模拟的内存空间,所述的各个单元都是一些可调用的功能函数和分配的内存空间,不依赖于具体的CPU、OS及外部存储设备。
14.如权利要求13所述的系统,其中所述提供的感染对象包括不同大小不同内容的各种类型的诱饵集,用于诱发不同类型不同感染条件的病毒,包括DOS文件型诱饵,用于DOS com型文件诱发DOS com型病毒;用模拟的DOS引导扇区,用于诱发DOS引导扇区型病毒;WORD文件型诱饵,用于诱发宏病毒等等。
15.如权利要求14所述的系统,其中对同一种类的病毒提供不同大小不同内容的多种诱饵,尽最大可能的满足待查毒对象里的病毒的感染条件。
16.如权利要求15所述的系统,其中还包括系统时间模拟单元,用于生成虚拟的系统时间,以诱发对时间敏感的病毒。
17.如权利要求16所述的系统,其中所述模拟OS包括模拟DOS,WINDOWS,UNIX等多种操作系统之一。
18.如权利要求12所述的系统,所述病毒清除单元虚拟执行病毒,使被感染的宿主对象即被判断为带有病毒的所述待检测对象还原,从而清除病毒。
19.如权利要求13所述的系统,其中所述外部存储设备模拟单元在内存中开辟一块小的内存空间来模拟硬盘,使内存空间的虚拟硬盘具有跟正常硬盘一样的结构,包括扇区号、磁道号、柱面号的三维空间概念,主引导扇区和对应的0道中的空闲扇区,紧接着有引导区,文件分配表,根目录区,还有所需的系统文件,以及所述用来诱发病毒的诱饵文件等。
20.如权利要求13所述的系统,其中所述外部存储设备模拟单元在内存中开辟一块小的内存空间来模拟软盘,使内存空间的虚拟软硬盘具有跟正常软盘一样的结构,包括引导区,文件分配表,根目录区,还有所需的系统文件,以及所述用来诱发病毒的诱饵文件等。
21.一种计算机可读的存储介质,用于使计算机执行权利要求1-10的方法中的各个步骤。
22.一种传输介质,用于通过网络传输使计算机执行权利要求1-10的方法中的各个步骤。
全文摘要
检测和清除计算机病毒的方法、系统和介质,包括:计算机模拟步骤,模拟计算机环境;提供多个病毒感染对象,即诱饵;装入待检测对象到模拟计算机环境中并激活,以诱发病毒感染,并生成感染后的标准样本;将感染对象与原始感染对象进行比较分析,判断有无病毒;病毒分析和学习步骤,对标准样本进行分析,并提取关于病毒的信息和知识;病毒清除步骤,清除病毒体并修正病毒修改过的关键信息来清除病毒。可有效检测杀除已知和未知病毒。
文档编号G06F1/00GK1314638SQ0111772
公开日2001年9月26日 申请日期2001年4月29日 优先权日2001年4月29日
发明者唐昭妙 申请人:北京瑞星科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1