一种反CPAV的病毒——1971病毒

Author: 四川 那璜甏 Date: 1993-11-05

        1971病毒传染硬盘的主引导记录和所有长度大于666H个字节的COM和EXE文件,并占用硬盘的第3-6四个扇区。当用带毒的硬盘引导系统或运行带病毒的程序时病毒驻留内存,以后每运行一个未被传染的文件则传染,传染后的文件长度增大1971个字节(EXE文件长度略有不同),文件尾部是666H(病毒标志),文件的日期和时间并不改变。1971病毒有两种发作方式:(1)当每天整点时在DOS下运行一个程序则在屏幕第九行第十一列起用蓝底红字显示“Please give me a cigarette!”(请给我一支烟),用户只有输入“OK”并回车后才可继续运行。(2)当每月第一天在DOS下运行一个可执行程序则会在相同的地点以相同的颜色显示出“Smoking hurts your health!”(吸烟有害健康)并要求用户输入“OK”和回车,但此时程序文件已被删除。
        1971病毒的反反病毒能力较强,CPAV不仅不能发现它,而且它还能通过CPAV的清毒过程进行传染,包括CPAV自身也被感染。而且CPAV的系统信息保护程序BOOTSAFE也不能发现主引导记录发生改变。通过分析病毒的汇编代码,发现其中一小段代码似乎是专门针对CPAV的immunize(免疫)功能而编写的,它通过中断21逃避了immunize的自诊断,使它认为程序的长度没有改变,并且内容也没有被改变。还有一段程序则是针对读写主引导扇区编写的,当带毒读主引导扇区时读出的是正确的主引导扇区的内容,而写主引导扇区则会失败,所以隐蔽性强。
        检查该病毒的方法很简单,可以直接判断程序是否增加1971个字节,或者在DEBUG中运行下列程序:
        movah,30
        movcx,666
        movbx,cx
        int21
        int3
        执行后如果AX是666,则一定被感染了。
        如果发现程序已被感染,则可利用病毒的自杀功能来消毒,将系统日期设为11月29日,然后运行CPAV消毒或运行每一个已被感染的程序则可彻底清除病毒,包括硬盘主引导记录也被恢复。但已被删除的文件无法恢复。我们也可以通过在文件未尾加上病毒标志666达到免疫,但关键还是加强机房管理制度,切断病毒的传染途径。(四川那璜甏)