7.6.3 恶意代码的免疫方法
历史上曾经使用的免疫方法有两种:基于感染标识的免疫方法;基于完整性检查的免疫方法。
从实现计算机病毒免疫的角度看病毒的传染,可以将病毒的传染分成两种。
(1)在传染前先检查待传染的扇区或程序内是否含有病毒代码,如果没有找到则进行传染,如果找到了则不再进行传染。
如小球病毒、CIH病毒。
(2)在传染时不判断是否存在感染标志(免疫标志),病毒只要找到一个可传染对象就进行一次传染。
如“黑色星期五”病毒(注:“黑色星期五”病毒的程序中具有判别传染标志的代码,由于程序设计错误,使判断失败,导致感染标志形同虚设)。
目前常用的免疫方法有两种。
(1)针对某一种病毒进行的计算机病毒免疫。
一个免疫程序只能预防一种计算机病毒。例如对小球病毒,在DOS引导扇区的1FCH处填上1357 H,小球病毒检查到该标志就不再对它进行感染。优点是可以有效地防止某一种特定病毒的传染,但缺点很严重,主要有以下几点:
对于不设置感染标识或设置后不能有效判断的病毒,不能达到免疫的目的;
当该病毒的变种不再使用这个免疫标志,或出现新病毒时,免疫标志失去作用;
某些病毒的免疫标志不容易仿制,若必须加上这种标志,则需对原文件做大的改动,如大麻病毒;
由于病毒的种类较多,再加上技术上的原因,不可能对一个对象加上各种病毒的免疫标识;
能阻止传染,却不能阻止病毒的破坏行为,仍然放任病毒驻留在内存中。
(2)基于自我完整性检查的计算机病毒免疫。
目前这种方法只能用于文件,而不能用于引导扇区,原理是为可执行程序增加一个免疫外壳程序,同时在免疫外壳程序中记录有关用于恢复自身的信息。执行具有这种免疫功能的程序时,免疫外壳程序首先得到运行,检查自身的程序大小、校验和、生成日期和时间等情况,没有发现异常后,再转去执行受保护的程序。这种方法不只是针对病毒的,由于其他原因造成的文件变化,在大多数情况下免疫外壳程序都能使文件自身得到复原,但仍存在一些缺点和不足:
每个受到保护的文件都要增加额外的存储空间;
现在使用中的一些校验码算法不能满足预防病毒的需要,被某些种类的病毒感染的文件不能被检查出来;
无法对抗覆盖方式的文件型病毒;
有些类型的文件不能使用免疫外壳程序的防护方法,否则将使这些文件不能正常执行;
当已被病毒感染的文件被免疫外壳程序包在里面时,这将妨碍反病毒软件的检测清除。