实际上,在以上的方法中存在着一个致命的缺点,那就是:如果用户刚刚感染CIH病毒,那么这样一个大面积的搜索过程实际上也是在扩大病毒的感染面。一般情况下,推荐的方法是先运行一下“写字板”软件,然后使用上面的方法在“写字板”软件的可执行程序Notepade.exe中搜索特征串,以判断是否感染了CIH病毒。
另外一个判断方法是在Windows PE文件中搜索IMAGE_NT_SIGNATURE字段,也就是0x00004550,其代表的识别字符为“PE00”,然后查看其前一个字节是否为0x00,如果是,则表示程序未受感染,如果为其他数值,则表示很可能已经感染了CIH病毒。
最后一个判断方法是先搜索IMAGE_NT_SIGNATURE字段--“PE00”,接着搜索其偏移0x28位置处的值是否为55 8D 44 24 F8 33 DB 64,如果是,则表示此程序已被感染。
还听说凡是感染了CIH病毒的机器,如果玩NEED FOR SPEED II游戏时,会在读取游戏光盘时出现死机现象, 本人没有尝试过,不知道实际上是不是有这一情况存在。
适合高级用户使用的一个方法是直接搜索特征代码,并将其修改掉,方法是:先处理掉两个转跳点,即搜索:5E CC 56 8B F0 特征串以及5E CC FB 33 DB特征串,将这两个特征串中的CC改90(nop),接着搜索 CD 20 53 00 01 00 83 C4 20 与 CD 20 67 00 40 00特征字串,将其全部修改为90,即可(以上数值全部为16进制)。
另外一种方法是将原先的PE程序的正确入口点找回来,填入当前入口点即可(此处以一个被感染的CALC.EXE程序为例),具体方法为:先搜IMAGE_NT_SIGNATURE字段--“PE00”,接着将距此点偏移0x28处的4个字节值,例如“A0 02 00 00”(0x000002A0),再由此偏移所指的位置(即0x02A0)找到数据“55 8D 44 24 F8 33 DB 64”, 并由0X02A0加上0X005E得到0x02FE偏移,此偏移处的数据例如为“CB 21 40 00”(OXOO4021CB),将此值减去OX40000,将得数--“CB 21 00 00”(OXOO0021CB)值放回到距“PE00”点偏移0x28的位置即可(此处为Windows PE格式程序的入口点,术语称为Program Entry Point)。最后将“55 8D 44 24 F8 33 DB 64”全部填成“00”,使得我们容易判断病毒是否已经被杀除过。
按照上面手工杀毒的方法一般适合于某些单独的软件(例如某些软件包含在软盘中,却被感染了CIH不读,可现在就要用,呵呵!)。使用上述方法的缺点在于病毒体还将保留在可执行文件中,虽然不会起作用, 但是想起来可能会有点不舒服(记得“WPS2000测试版残留CIH病毒尸体”的事件么?)。所以,想彻底杀灭,推荐使用某些反病毒软件进行或是CIH专用杀毒工具(以上操作以及使用反病毒软件进行杀毒,必须使用干净的系统盘启动计算机)。
|