接下来谈谈可执行文件感染型病毒。顾名思义,可执行文件感染型病毒只感染文件扩展名为.com和.exe等的可执行文件。下面以Windows程序为倒,介绍一下可执行文件感染型病毒的感染机理。
感染机理其实非常简单。用户无意间运行了病毒程序后,病毒就开始查找保存在个人电脑中的其他程序文件,并实施感染。如果是可感染文件,病毒就会随意地更改此文件,并把自身的病毒代码复制到程序中。更改文件的方法包括(A)覆盖感染型、(B)追加感染型、(C)插空感染型三种方式。
用病毒代码进行更改
对于Windows程序文件,基本上来讲描述整个文件尺寸和程序代码起始位置等信息的文件头位于文件的起始部位,在其之后为程序代码。
覆盖感染型病毒是指用自身的病毒代码覆盖文件的程序代码部分。由于只是单纯利用病毒代码进行覆盖,因此感染机理最为简单。
不过,感染这种病毒后,程序文件就被破坏,无法正常工作。也就是说用户受感染后,原来的程序将不能运行,而只能起动病毒程序。结果,即便用户不能马上明白是不是病毒,也会立刻注意到发生了异常情况。
感染后原程序仍然工作
比覆盖感染型更巧妙一些的是追加感染型病毒。
此类病毒并不更改感染对象的程序代码,而是把病毒代码添加到程序文件最后。另外,追加感染型病毒还会更改原程序文件的文件头部分。
具体来说就是把文件头中原来记述的“执行开始地址为XXX(原程序的开头)”等信息更改变成“执行开始地址为ZZZ(病毒程序的开头)”。这样一来,在原程序运行之前,病毒代码就会首先被执行。
另外,在病毒代码的最后会描述一段代码,以便重新回到执行原程序的开始地址。这样一来,受感染程序在执行了病毒代码之后,就会接着执行原程序。
结果,由于原程序会正常运行,用户很难察觉到已经感染了病毒。不过,程序受到追加感染型病毒的感染后,其文件尺寸会变得比原文件大。
最后来看一下插空感染型病毒。这种病毒可以说是由追加感染型病毒发展而来的。事实上,它并不是在程序文件中查找合适的部位,然后把程序代码等信息添加到文件中,而是查找没有实际意义的数据所在的位置。插空感染型病毒找到这些部分以后,就把自身的代码覆盖到这些部分中。结果,尽管原程序照常运行,且文件尺寸也没有任何变化,但是仍能产生感染病毒的文件。
不过,此类病毒进行感染的前提条件是感染对象文件必须具有足够的空间。所以,它无法感染没有足够空间的程序文件。
感染数据的宏病毒 病毒不仅感染可执行文件,还可感染数据文件。这就是宏病毒等“脚本型病毒”。脚本型病毒的感染机理如下。
用户打开带有病毒的数据文件后,该数据文件相关联的应用程序就会执行数据文件中描述的脚本。由此就会起动病毒,然后把自身的脚本添加(或覆盖)到其他数据文件中,进行感染。
由于这种脚本型病毒并不感染可执行文件,而感染数据文件,因此也许会让人感觉与可执行文件感染型病毒区别很大。但实际上并没有太大的区别。虽说感染的是数据文件,但该数据文件最终还是含有可由某些特定应用程序来执行的程序代码的文件。最关键的是,在病毒运行过程中总体上是作为程序来运行的,因此在这个意义上来讲,与可执行文件感染型病毒在本质并没有任何区别。
“宏病毒感染标准模板”就是一个能真实反映这种病毒特点的例子。比如感染Word文档的宏病毒,不仅感染用户生成的数据文件,有时还会感染Word起动时最先调用的标准模板这一特别文件。结果,每当Word应用程序起动时,就会运行宏病毒,每当打开和保存Word文档文件时,就会不断感染其他文档文件。也就是说,就好象病毒感染了Word应用程序本身一样。