电脑病毒是一些能够自我复制的程序段,它能附在应用程序或系统文件的可执行部分。在宿主程序执行的某些阶段,它能够获得执行控制权。按病毒传染机理可分为两大类:一类是系统引导型,它感染系统引导时的程序(系统引导扇区、操作系统的某些模 块、设备驱动程序等);
另一类是文件型,它感染可执行的程序文件(即应用程序,含COM文件、EXE文件或覆盖文件等)。
透过各种病毒的分析,可以发现病毒有三个本质弱点:
(1)病毒的宿主目标必须是电脑系统的可执行程序,也就是说它们只能感染系统引导程序或应用程序。
(2)病毒的感染总是以某种方式改变被感染的程序段,如果附在现存程序上,它会改变程序的开头、结尾或程序中间的某些部分,如果它隐藏在磁盘的某些区,它会更改这些区的内容。
(3)如果病毒要存活、传播, 那么它的程序代码必须能够被执行,即病毒必须把自身或一部分定位于宿主程序的特殊位置,以便获得控制权。
实际上,现有PC病毒都是通过改变宿主程序的第一条执行的指令,达到先于宿主程序执行的目的。对于COM 文件,病毒替换它的第一条指令(因为COM 文件入口地址固定为CS:100H);对于EXE文件,病毒改变入口指针(在文件头);对于中断服务程序,也类似地改变它的中断向量。
因此,病毒破坏了被感染程序的数据真实性,准确地说是破坏了被感染程序第一条被执行指令的真实性。所以,对应用程序的校验只要针对第一条执行的指令和附近的数据,既可保证准确性,又减少检测时间。