精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 电脑病毒>>☆反病毒技术论坛☆>>浅谈CIH

主题:浅谈CIH
发信人: Vic()
整理人: jia(1998-10-26 01:21:54), 站内信件
个人观点,不保证正确性。

Dos/Windows下可执行文件分四种格式:最老的是DOS下的COM和EXE,后来
Windows3.x下的EXE(但叫NE, New Executable), 现在Win95/NT下的EXE
(叫PE, Portable Executable).NE和PE格式的文件扩展名可以是EXE,也
可以是DLL,VXD,386(你在windows目录下可以找到)MS Visual Basic里有
VBX,OCX.它们都属于NE/PE. NE是16bit保护模式代码,PE是32bit保护模式
代码.DOS的EXE,NE和PE文件的开头2个自己都是MZ,你看看PBL文件开头,
如果也是MZ,那它就应该是NE或PE格式.NE/PE实际上是对DOS EXE格式的
扩展,它们包含了一小块实模式代码(称为stub),一般就是显示:本程序
需要在Microsoft Windows下运行.你在纯DOS环境下执行notepad.exe就
能看到(不过有的NE/PE的stub代码会自动启动windows).stub代码只给DOS
运行的,Windows下执行NE/PE时会找NE/PE的扩展部分,去执行Windows代码.

以往的病毒全部是针对DOS环境的,它们只感染DOS COM/EXE文件.如果在
Windows下运行,它会对NE/PE文件的stub部分进行感染,根本不知道在
Windows下根本不执行stub.并且病毒只能依附于DOS感染(在启动windows
前和DOS窗口里).CIH之所以是划时代的,就是因为它知道PE格式,它把自己
的代码插入到PE文件的代码里而非stub里,并且它通过Windows API把自己
驻留在Windows的文件系统代码里,任何Windows对文件系统的访问都会被
它截取并伺机感染PE文件(老的DOS病毒是驻留在DOS文件系统代码里并截
取DOS对文件系统的访问).所以说CIH是第一个Win32病毒.至于它毁BIOS
什么的并不是什么特别的地方,只是利用了某些主板商的疏漏而已.

NT下CIH不活跃是因为NT下安全级别比较高,除非你总用admin登录,否则很
多文件都无法访问的.Win95/98是非常不安全的,因为任何文件都可以被
访问/改写,CIH当然活力十足.

看看PBL为什么会被感染: CIH进驻Windows后截获文件访问调用,Windows
下运行EXE文件时CIH发现EXE文件是PE格式,感染之.EXE文件又加载DLL/PBL
,CIH发现又是PE格式,再感染.(我猜PBL是子程序/共享代码一类的东西).
从DOS开始,在系统内核里就从来不根据文件扩展名判断文件类型,全部按
文件内容来判.所以你的PBL就被感染了.CIH还有一个特性就是它不改变文
件长度:它会在PE文件中找空白区域,把自己拆开填进去.PE格式文件都是
编译器生成的,一般都会有大块的全0字节,如堆栈,数据段等,它们不会被
执行到,等真正的程序开始用到这些区域的时候,CIH早就把自己驻留到
系统里了.但CIH对空白区的理解并非永远正确,winzip自解压文件被感染
后会报错就是这个原因.

NT下虽然CIH不太发作,不过还是不要掉以轻心的好.

--
道可道非常道名可名非常名

※ 来源:.广州网易 BBS bbs.nease.net.[FROM: 202.102.13.164]

[关闭][返回]