CN1516011A - 检测和清除计算机病毒的系统和方法 - Google Patents
检测和清除计算机病毒的系统和方法 Download PDFInfo
- Publication number
- CN1516011A CN1516011A CNA031002617A CN03100261A CN1516011A CN 1516011 A CN1516011 A CN 1516011A CN A031002617 A CNA031002617 A CN A031002617A CN 03100261 A CN03100261 A CN 03100261A CN 1516011 A CN1516011 A CN 1516011A
- Authority
- CN
- China
- Prior art keywords
- virus
- script
- sign indicating
- indicating number
- detection
- 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
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种检测和清除计算机病毒的系统和方法。该系统包括:编写该脚本的脚本语言模块;将该脚本中的脚本语句编译成指令码的脚本编译器;执行该指令码的脚本执行机,该脚本语言模块是由自定义的基本指令集所组成,脚本执行机包含执行该字节指令码的虚拟CPU和自定义API函数。调用自定义API函数和基本指令编写脚本,将其编译成字节指令,用含有脚本执行机的引擎执行该些字节指令完成查毒和杀毒工作。可以一次编写病毒的查杀病毒的脚本,就能适用于各种软件平台和各种硬件平台。
Description
技术领域
本发明是有关于一种计算机病毒的检测和清除的技术,特别是一种用自定义的脚本检测和清除计算机病毒的系统,以及采用此系统进行计算机病毒的检测和清除的方法。
背景技术
长期以来,计算机病毒成为困扰使用计算机的人们的一个重大问题。计算机病毒的危害是多方面的,在小的方面,它可以让计算机不能正常工作,把工作成果毁坏一空;在大的方面,它可以使银行、企业以及科研机构的计算机系统瘫痪,有时甚至无法用金钱来计算它所带来的损失。尤其是网络的迅猛发展,成为病毒传播最大的途径。病毒通过比如电子邮件、intemet下载文件等方式进行传播,速度快,范围更广。所以,当今大多数个人和企业一般采用各大软件公司提供的查毒和杀毒的各种软件进行查杀毒。随着病毒的层出不穷,需要定期或不定期地到各大软件公司下载更新的病毒代码和扫描引擎,进行定期或不定期的查杀毒。
目前对于已知的各种类型的病毒,查病毒常用的方法是特征码匹配法。已知其特征码,通过对可能带毒的文件进行检测,寻找病毒特征码,如找到相应病毒的特征码,则判断有病毒,进而进行杀毒。在新的病毒被发现并被病毒分析员分析后,取得该新病毒的特征码,将这种新病毒特征码加入到病毒库中,通过已加入此病毒库的引擎才能识别出这种新病毒。但是,由于这种特征码不具有可编程的特性,当一个病毒特征码不能奏效时,只能增加引擎算法来对付这个病毒。所以,不仅仅需要用户经常性的更新病毒库,还需用户更新引擎。这给用户和查杀病毒软件提供商都提供了很大的麻烦,并且浪费了大量的时间和经历。
发明内容
本发明的主要目的是提供一种跨平台的脚本检测和清除计算机病毒的系统,即脚本机,使它一次编写查杀病毒的脚本,就能用于各种软件平台和各种硬件平台。
本发明的另一个目的是提供一种利用该系统进行查杀计算机病毒的方法。
一种检测和清除计算机病毒的系统,所述系统包括:编写该脚本的脚本语言模块;将该脚本中的脚本语句编译成指令码的脚本编译器;执行该指令码的脚本执行机,该脚本语言模块是由自定义的基本指令所组成,脚本执行机包含执行该字节指令码的虚拟CPU和自定义API函数,用该API函数和基本指令完成脚本语句编写,虚拟CPU执行脚本语句编译成的字节指令码。
将该脚本类型语言执行机成为反病毒引擎的一个主要组成部分。
一种检测和清除计算机病毒的方法,其包括以下步骤:a:编写查杀病毒的脚本;b:将脚本中的脚本类型语句编译成字节指令码;c:并将字节指令码传递给反病毒引擎的脚本执行机中;d:将预查杀文件传递给脚本执行机,根据字节指令码对预查杀文件进行检测,判断该文件是否存在病毒;e:如果发现某种病毒,执行相应病毒的杀毒脚本,进行清除病毒。
该方法还包括将字节指令码放入病毒库中,所述反病毒引擎在初始化时载入该病毒库。
采用上述的脚本机进行检测和清除(查杀)病毒,由如下的显著效果。
1、由于脚本机与平台无关,这样在各个平台上都可以运行相同的脚本,所以,病毒分析员只要在一个常用的平台上实现即可,少去了调试的过程,由于脚本语言模块是由一种文本形式基本指令组成,使其在编写脚本时可以及时发现错误,大大简化病毒分析员的工作。
2、在反病毒引擎载有脚本执行机,获得装有字节指令码的病毒库后,能直接进行查杀毒。每次只要下载或其它方式获得该病毒的字节指令码,就能直接进行该病毒的查杀毒工作,不需要下载引擎,能使软件公司降低了更新查杀病毒软件的成本,最重要的是使广大的用户得到了便利。
附图说明
图1为本发明的检测和清除计算机病毒的系统的结构框图。
图2为采用本发明的检测和清除计算机病毒系统进行检测和清除病毒的方法工作流程图。
具体实施方式
本发明提供一种检测和清除计算机病毒的系统,即脚本机100,包括:脚本语言模块110,用来编写查杀病毒的脚本,该脚本由脚本语句组成;脚本编译器120,用于将脚本语句编译成字节指令码;及脚本执行机130,用于运行字节指令码完成查杀病毒工作。
脚本语言模块110,该脚本语言模块110提供了编写查杀病毒的脚本的环境。该脚本语言模块110包含由自定义的基本指令112组成的基本指令集,其中有算术运算、逻辑判断、跳转语句、循环语句、比较语句等等。脚本是由一条条脚本语句组成,而脚本语句可以调用基本指令112。由于脚本语言模块110中所编写的脚本语句具有不使用平台相关的特征,所以它具有跨平台的特征。在设计时,为了使基本指令跟字节指令码相一一对应,没有采用类似c语言的语法,而采取了类似汇编语言的语法,采用这种语法编写,使病毒分析员很容易上手,简化了编写查毒和杀毒脚本的难度。
脚本编译器120,用于将脚本语句编译成字节指令码。由于脚本执行机130运行字节指令码,而字节指令码是十六进制的编码,很不容易进行编写,设计了上述的脚本语言的基本指令112,所以就需要脚本编译器120,将其脚本语句编译成脚本执行机130能够执行的字节指令码。这一步骤可以使实际使用的脚本节约了存储空间,另一方面可以检查脚本的语法问题,使病毒分析员在编写脚本时可以及时发现错误。
由于脚本设计与各种系统平台和硬件平台无关的,在各个平台的脚本执行机130都可以运行相同的字节指令码,所以脚本编译器120无需在各个平台都实现,只需在一个常用的操作平台,如windows平台实现即可,用该平台的脚本语言模块110编译出查杀病毒的字节指令码。这样的话,病毒分析员不仅可以选择一个常用或熟悉的平台进行编写脚本,而且还省去了到各个平台进行调试的时间和经历,完全意义上作到跨平台。
脚本执行机130,该脚本执行机130提供脚本的API函数(ApplicationProgram Interface应用程序接口)132和虚拟CPU134。该自定义的脚本API函数132,能完成跟平台相关的或较复杂的功能,例如是文件操作、内存操作等。其包括文件操作API函数、缓冲区解码API函数,以及针对文件格式的专用API函数如:MZ文件处API函数,PE文件处理API函数、OLE文件处理API函数、引导区处理API函数等等。通过调用该些文件操作API函数,进行如下的文件操作,如创建、删除、复制、查找、调用、刷新、读取等。调用脚本API函数132和脚本语言模块110的基本指令112,完成脚本语句的编写,一个查病毒的脚本是许多的脚本语句所组成。病毒分析员能在分析完病毒的特征后可以完成查毒脚本。同样,针对该病毒的特征所应采取的处理方法,完成杀毒脚本。
本虚拟CPU134包含大量的内部寄存器、标志位等。在实施过程中,采用了256个寄存器、堆栈、堆栈指针、标志位、指令指针。这些数据包含在一个结构中。该虚拟机134,对每一条脚本语句对应的字节指令码的解释执行,具体地说,是脚本机的解释器,对脚本语句的解释执行。完成这项工作的是虚拟CPU中的执行函数136,该执行函数136为该脚本机是最重要的部分,可以用汇编语言、C语言或其它语言写。为了可移植性及可维护性,按照本发明的一个实施例,采用C语言编写。该执行函数136就象是一个真实CPU指令解释器。对脚本是解释执行,如一个真正的CPU,能读懂每一条字节指令码并正确执行。除了执行函数136,对外还引出几个函数,例如初始化函数138、反初始化函数140。其中初始化函数138用于脚本执行机130本身的初始化、分配需要的内存等;反初始化函数140用于释放脚本执行机130运行时分配的内存等。
该执行机130用可移植性的语言比如C语言进行开发,保证在各系统平台、硬件平台的移植性。在不同的系统平台、硬件平台分别编译一次产生相应平台的二进制代码,该脚本执行机130就可以在该平台上运行。所以,该系统能适用于各种软件平台,各种硬件平台例如是x86、SPARC、MIPS、ALPHA、ARM等甚至巨型机。
该脚本执行机130可以作为一个反病毒引擎的组件模块。引擎是查杀病毒软件中的核心。将本发明所述的脚本执行机130作为引擎的重要组成部分,病毒分析员将查病毒的脚本和相应的杀病毒的脚本编译成字节指令码装入病毒库,利用上述的引擎载入病毒库进行查杀病毒,具体的步骤如下。同时请参阅图2,该方法的主要步骤流程图。
S200,病毒分析员根据该病毒的特征进行分析,利用基本指令112和脚本API函数132,编写脚本语句形成脚本;
S210,脚本编译器120编译该脚本,当脚本中出现脚本语句的语法错误时,进行提示要求改正,只有没有语法错误后,才能将该些脚本语句编译成对应的字节指令码,并且将此字节指令码保存在病毒库中;
S220:反病毒引擎在初始化时加载该病毒库,并将病毒库中的查杀病毒的脚本的字节指令码传递给脚本执行机130的执行函数136;
S230:将预查杀文件传递给脚本执行机130的执行函数136,脚本执行机130依据所有相应的查毒脚本,判断该文件是否存在病毒中。可以选择灵活的方式进行检测工作,例如是根据计算机病毒中的关键字、特征程序段内容、病毒特征及传染方式、文件长度的变化,在特征分类的基础上进行检测工作,或是对某个文件或数据段进行检验和计算并保存其结果而后根据保存的结果对该文件或数据段进行检验是否存在病毒等;
S240:如果发现某种病毒,向用户进行询问,如何处理该病毒,比如,清除、隔离等,根据客户的响应,执行对应的病毒的杀毒脚本,进行病毒处理工作。根据具体病毒的清除方法从传染的程序中除去计算机病毒代码并恢复文件的原有结构信息,这和公知的清除病毒的方法一致,不在这进行叙述。
在具体的实施过程中,病毒分析员将含有字节指令码的病毒库、上述反病毒引擎放在网上或是加载于软件中,客户将下载装入或通过软件直接载入各自的系统即可进行查杀毒,包含有脚本执行机130的反病毒引擎只在系统中装入一次即可。经常性更新的仅是装有查病毒的字节指令或相应的杀病毒的字节指令的病毒库即可,而不必经常性的更新反病毒引擎。
本引擎可以只利用脚本机来查杀病毒,但在具体实施方式中,引擎主要采用脚本机来查杀病毒,把传统的特征码扫描法作为查杀病毒的补充。
本发明仅仅公开了一个具体的实施方式,然并非用来限制本发明的保护范围,本发明的保护范围以权利要求书的保护范围为准。
Claims (9)
1、一种检测和清除计算机病毒的系统,所述系统包括:
编写脚本的脚本语言模块;
将该脚本中的脚本语句编译成字节指令码的脚本编译器;
执行该字节指令码的脚本执行机,其特征在于:该脚本语言模块包含自定义的基本指令,脚本执行机包含执行该字节指令码的虚拟CPU和自定义API函数,用该API函数和基本指令完成脚本语句编写,虚拟CPU执行脚本语句编译成的字节指令码。
2、如权利要求1所述的检测和清除计算机病毒的系统,其特征在于:虚拟CPU有多个寄存器、堆栈、堆栈指针、标志位和指令指针,并将上述数据包含在一个结构中。
3、如权利要求1所述的检测和清除计算机病毒的系统,其特征在于:所述的API函数中还包含有针对文件格式的专用API,该专用API提供与操作系统的接口,包括有可执行文件处理API、OLE文件处理API及引导区处理API。
4、如权利要求1所述的检测和清除计算机病毒的系统,其特征在于:该虚拟CPU包括有解释执行字节指令码的执行函数。
5、一种检测和清除计算机病毒的方法,其特征在于:该方法包括以下步骤:
a:编写查杀病毒的脚本;
b:将脚本中的脚本类型语句编译成字节指令码;
c:并将字节指令码传递给脚本执行机中;
d:将预查杀文件传递给脚本执行机,根据预查杀文件依次对查毒的字节指令码进行执行,判断该文件是否存在病毒;
e:如果发现某种病毒,执行相应病毒的杀毒脚本,进行清除病毒。
6、如权利要求5所述的检测和清除计算机病毒的方法,其特征在于:步骤a中调用API函数和基本指令编写脚本语句成脚本。
7、如权利要求5所述的检测和清除计算机病毒的方法,其特征在于:该方法还提供一包含有脚本执行机的反病毒引擎。
8、如权利要求7所述的检测和清除计算机病毒的方法,其特征在于:该方法还包括将字节指令码放入病毒库中,所述反病毒引擎在初始化时载入该病毒库。
9、如权利要求5所述的检测和清除计算机病毒的方法,其特征在于:该步骤e还包括一个询问的步骤,发现病毒后,询问客户采用处理的方式,根据客户的响应,执行相应的杀毒脚本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA031002617A CN1516011A (zh) | 2003-01-07 | 2003-01-07 | 检测和清除计算机病毒的系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA031002617A CN1516011A (zh) | 2003-01-07 | 2003-01-07 | 检测和清除计算机病毒的系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1516011A true CN1516011A (zh) | 2004-07-28 |
Family
ID=34238955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA031002617A Pending CN1516011A (zh) | 2003-01-07 | 2003-01-07 | 检测和清除计算机病毒的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1516011A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100389391C (zh) * | 2005-11-24 | 2008-05-21 | 北京中星微电子有限公司 | 一种利用脚本及其编译器调用宿主软件函数的系统与方法 |
CN104134039A (zh) * | 2014-07-24 | 2014-11-05 | 北京奇虎科技有限公司 | 病毒查杀方法、客户端、服务器以及病毒查杀系统 |
CN107341398A (zh) * | 2016-04-29 | 2017-11-10 | 腾讯科技(深圳)有限公司 | 程序测评方法及装置 |
CN104392169B (zh) * | 2014-12-15 | 2018-05-01 | 福建天晴数码有限公司 | 一种Native API函数重构方法和装置 |
CN111435392A (zh) * | 2019-01-14 | 2020-07-21 | 孙兴珍 | 网络数据即时更新方法 |
-
2003
- 2003-01-07 CN CNA031002617A patent/CN1516011A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100389391C (zh) * | 2005-11-24 | 2008-05-21 | 北京中星微电子有限公司 | 一种利用脚本及其编译器调用宿主软件函数的系统与方法 |
CN104134039A (zh) * | 2014-07-24 | 2014-11-05 | 北京奇虎科技有限公司 | 病毒查杀方法、客户端、服务器以及病毒查杀系统 |
CN104392169B (zh) * | 2014-12-15 | 2018-05-01 | 福建天晴数码有限公司 | 一种Native API函数重构方法和装置 |
CN107341398A (zh) * | 2016-04-29 | 2017-11-10 | 腾讯科技(深圳)有限公司 | 程序测评方法及装置 |
CN107341398B (zh) * | 2016-04-29 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 程序测评方法及装置 |
CN111435392A (zh) * | 2019-01-14 | 2020-07-21 | 孙兴珍 | 网络数据即时更新方法 |
CN111435392B (zh) * | 2019-01-14 | 2021-09-24 | 武汉网宇信息技术有限公司 | 网络数据即时更新方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kinder et al. | Detecting malicious code by model checking | |
US8726255B2 (en) | Recompiling with generic to specific replacement | |
US9824214B2 (en) | High performance software vulnerabilities detection system and methods | |
KR101687213B1 (ko) | 동적으로 로딩하는 그래프 기반 계산 | |
KR101143154B1 (ko) | 보안 가상 기기를 통하여 보안 정책을 시행하는 방법 및시스템 | |
US7624449B1 (en) | Countering polymorphic malicious computer code through code optimization | |
TW538376B (en) | Analytical virtual machine | |
US20100095281A1 (en) | Internal Function Debugger | |
Regehr et al. | Eliminating stack overflow by abstract interpretation | |
US20050108562A1 (en) | Technique for detecting executable malicious code using a combination of static and dynamic analyses | |
KR20110060822A (ko) | 외래 정보를 분할함에 의한 가상 머신 코드의 메모리 최적화 | |
Lakhotia et al. | A method for detecting obfuscated calls in malicious binaries | |
US20070294675A1 (en) | Method and apparatus for handling exceptions during binding to native code | |
Choi et al. | NTFuzz: Enabling type-aware kernel fuzzing on windows with static binary analysis | |
Grech et al. | Shooting from the heap: Ultra-scalable static analysis with heap snapshots | |
Abercrombie et al. | jContractor: Bytecode instrumentation techniques for implementing design by contract in Java | |
EP2972828B1 (en) | Operating system support for contracts | |
Otsuki et al. | Building stack traces from memory dump of Windows x64 | |
Li et al. | Bytecode testability transformation | |
CN1516011A (zh) | 检测和清除计算机病毒的系统和方法 | |
Escalada et al. | An efficient platform for the automatic extraction of patterns in native code | |
Wojtczuk | UQBTng: A tool capable of automatically finding integer overflows in Win32 binaries | |
Nguyen | Automatic extraction of x86 formal semantics from its natural language description | |
Ferrara et al. | Sarl: Oo framework specification for static analysis | |
Kurš et al. | Efficient parsing with parser combinators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20040728 |