摘自陈立新《计算机病毒防治百事通》清华大学出版社 EOQaY
计算机病毒比较法诊断的原理 FoLDMx(
比较法是用原始的或正常的与被检测的进行比较。比较法包括长度比较法、内容比较法、内存比较法、中断比 \d5}5J]a&n
较法等。比较时可以靠打印的代码清单(比如DEBUG的口命令输出格式)进行比较,或用程序来进行比较(如DOS的 7V/Zr
DISKCOMP、COMP或PCTOOLS等其他软件)。这种比较法不需要专用的查病毒程序,只要用常规DOS软件和 PCTOOLS等 I}ndRDz[
工具软件就可以进行。而且用这种比较法还可以发现那些尚不能被现有的查病毒程序发现的计算机病毒。因为病毒 .pKN4
传播得很快,新病毒层出不穷,由于目前还没有做出通用的能查出一切病毒,或通过代码分析,可以判定某个程序 0lf"w@/
中是否含有病毒的查毒程序,发现新病毒就只有靠比较法和分析法,有时必须结合这两者来一同工作。 /1N)d?Pcl
1.长度比较法及内容比较法 Xr2 Wa
病毒感染系统或文件,必然引起系统或文件的变化,既包括长度的变化,又包括内容的变化。因此,将无毒的 }JGq 1
系统或文件与被检测的系统或文件的长度和内容进行比较,即可发现病毒。长度比较法和内容比较法就是从长度和 ax]9QrA
内容两方面进行比较而得名。 K
/ZHJkJ7
以长度或内容是否变化做为检测病毒的依据,在许多场合是有效的。但是,众所周知,现在还没有一种方法可 }
Ab_o#Zy
以检测所有的病毒。长度比较法和内容比较法有其局限性,只检查可疑系统或文件的长度和内容是不充分的。因为: 6>lW5U^yA\
(1)长度和内容的变化可能是合法的。有些普通的命令可以引起长度和内容变化。 (l2<+R%1
(2)某些病毒感染文件时,宿主文件长度可保持不变。 iW-t}}Z>B
上述情况下,长度比较法和内容比较法不能区别程序的正常变化和病毒攻击引起的变化,不能识别保持宿主程 Y)v%
序长度不变的病毒,无法判定为何种病毒。实践告诉人们,只靠检测长度或内容是不充分的,将长度比较法、内容 aLHrl6"
比较法做为检测病毒的手段之一,与其他方法配合使用,效果更好。 th90O|;
2.内存比较法 y0y+%H-
这是一种对内存驻留病毒进行检测的方法。由于病毒驻留于内存,必须在内存中申请一定的空间,并对该空间 qAbd xd[
进行占用、保护。因此,通过对内存的检测,观察其空间变化,与正常系统内存的占用和空间进行比较,可以判定 d>~`j8,B
是否,有病毒驻留其间。但无法判定为何种病毒。此法对于那些隐蔽型病毒无效。 e~*S4dKR
3.中断比较法 Ss+F9J
病毒为实现其隐蔽和传染破坏之目的,常采用“截留盗用”技术,更改、接管中断向量,让系统中断向量转向 iI}nW
执行病毒控制部分。因此,将正常系统的中断向量与有毒系统的中断向量进行比较,可以发现是否有病毒修改和盗 @M9_j{A
用中断向量。 >!<V\
Fj1
由于高版本的DOS系统在DOS引导之后重新管理一部分BIOS中断服务程序,即将原中断向量保存起来,这时;引 0pCDEs
导型病毒所修改的中断向量也同时被保存起来,因而从中断向量中可能观察不到引导型病毒对中断向量的修改。与 m9k2h1
PCTOOLS一同提供的MI是一个非常有用的检测工具,它不仅能够显示系统内存大小、内存分配状况, 而且能够显示 pdy+h{]3
出哪个驻留程序占用哪些内存空间、接管哪些中断向量。用MI软件可检测出文件型病毒常驻内存及更改部分中断向 eoJFh
量的信息。 }R\B.2#M_@
使用比较法能发现异常,如文件的长度有变化,或虽然文件长度未发生变化,但文件内的程序代码发生了变化。 <@%ma2
对硬盘主引导区或对DOS的引导扇区做检查,比较法能发现其中的程序代码是否发生了变化。由于要进行比较, 保 x;*VCs
留好原始备份是非常重要的,制作备份时必须在元计算机病毒的环境里进行,制作好的备份必须妥善保管,写好标 lvG3<ls0K$
签,贴写好保护签。 . *Z#cq0
比较法的好处是简单、方便,不需专用软件。缺点是无法确认病毒的种类名称。另外,造成被检测程序与原始 ![j(o!6&
备份之间差别的原因尚需进一步验证,以查明是由于计算机病毒造成的,或是由于DOS数据被偶然原因, 如突然停 |:}L<9Sq
电、程序失控、恶意程序等破坏的。这些要用到下面介绍的分析法,查看变化部分代码的性质,以此来确证是否存 0x6@{0
在病毒。另外,当找不到原始备份时,用比较法就不能马上得到结论。从这里可以看到制作和保留原始主引导扇区 8db6(Q~P
和其他数据备份的重要性。 *eMLbU7
/T{mS7EpYc
计算机病毒校验和法诊断的原理 |})rt5|f1!
将正常文件的内容,计算其校验和,将该校验和写入文件中或写入别的文件中保存。在文件使用过程中,定期 ruWye1X;
地或每次使用文件前,检查文件现在内容算出的校验和与原来保存的校验和是否一致,因而可以发现文件是否感染, w
zdxw$E
这种方法叫校验和法,它既可发现已知病毒又可发现未知病毒。 VgUvD1v?}
这种方法既能发现已知病毒,也能发现未知病毒,但是,它不能识别病毒种类,不能报出病毒名称。由于病毒 hN!.@L
感染井非文件内容改变的唯一的排他性原因,文件内容的改变有可能是正常程序引起的,所以校验和法常常误报警, k:W=5{[
而且此法也会影响文件的运行速度。 cx<h_
病毒感染的确会引起文件内容变化,但是校验和法对文件内容的变化太敏感,又不能区分正常程序引起的变动, vDWr|M%``l
而频繁报警。用监视文件的校验和来检测病毒,不是最好的方法。这种方法当遇到软件版本更新、变更口令以及修 n/Or~@pHD
改运行参数时都会误报警。 MR[N6E6Mg
校验和法对隐蔽性病毒无效。隐蔽性病毒进驻内存后,会自动剥去染毒程序中的病毒代码,使校验和法受骗, &