发信人: 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]
|
|