友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
八八书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

知者无畏--一个真实的簿世界-第章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



随机的移动指令,然后利用跳转(JMP)或者调用(CALL)指令使病毒代码仍然能够实现原来的功能。另外一种“TMC”病毒没有在运行过程中改变代码,但是在感染的时候,整个代码的分段、偏移量和填充代码的分布都是可以随机变化的,这样虽然病毒没有对自己进行加密/解密,仍然可以看成一种多态病毒,使用传统的特征代码比较法很难准确的查到病毒并且安全的清除。

第五节 看不见的战斗——病毒的隐藏技术
病毒在进入你的系统之后,会采取种种方法隐藏自己的行踪,让你无法感觉到病毒的存在,在引导型病毒、文件型病毒、宏病毒以及视窗环境下的病毒采用了不同的技术达到这个目的。

引导型病毒的隐藏技术

引导病毒的隐藏有两种基本的方法:
一种是改变基本输入输出系统(BIOS)中断13H(十六进制)的入口地址使其指向病毒代码之后,发现调用INT13H读被感染扇区的请求的时候,将原来的没有被感染过的内容返回给调用的程序,这样,任何DOS程序都无法觉察到病毒的存在,如果反病毒软件无法首先将内存中的病毒清除的话(也就是说首先恢复被替换的IN13H中断服务程序),同样无法清除这种病毒。

另外一种更高明的方法是直接针对杀毒软件的,为了对付上面所说的病毒隐藏手段,一些杀毒软件采用直接对磁盘控制器进行操作的方法读写磁盘扇区。病毒的制造者们当然不会甘心束手就擒,他们使用了在加载程序的时候制造假象的方法,当启动任何程序的时候(包括反病毒程序),修改DOS执行程序的中断功能,首先把被病毒感染的扇区恢复原样,这样即使反病毒程序采用直接磁盘访问也只能看到正常的磁盘扇区,当程序执行完成后再重新感染。对付这种病毒的唯一方法是在进行病毒检测之前首先清除内存中的所有病毒。


引导型病毒为了隐藏自己,经常采用更改活动引导记录、使病毒代码看起来非常类似于正常启动代码等方法,尽可能减少被杀毒软件发现的可能性。

文件型病毒的隐藏技术

文件型病毒的隐藏技术和引导型病毒使用的技术非常类似,同样是替换DOS或者基本输入输出系统(BIOS)的文件系统相关调用,在打开文件的时候将文件的内容恢复未感染的状态,在关闭文件的时候重新进行感染。
由于访问文件型病毒的方式、方法非常多,所以实现完全的文件型病毒隐藏是一件非常困难的任务,一个完整的隐藏技术应该改包括对下面几个方面的处理:


一般的文件型病毒仅仅使用其中的一部分隐藏技术,最常见的是对列目录进行隐藏,这样在使用DIR命令列目录的时候,看到的文件大小是病毒提供的,从实际大小减去病毒大小的数值,这样你就不会感觉到病毒的存在。但是如果使用诺顿磁盘工具或者“PCTools”等工具查看磁盘的时候,由于这些工具使用了直接磁盘存取技术,不通过DOS中断获得文件的大小,所以你可以看到感染病毒后文件的实际大小,这种方法经常被推荐用来检查是否有病毒的存在。在没有合适的工具情况下,不失为一种简单有效的方法。

宏病毒的隐藏技术

宏病毒的隐藏技术和引导型病毒以及文件型病毒比起来要简单很多,只要在WORD/EXCEL中禁止菜单:文件-》模板 或者 工具-》宏就可以隐藏病毒了,可以通过宏病毒代码删除菜单项以及宏病毒用自己的FileTemplates和ToolsMacro宏替代系统缺省的宏就可以了。
第六节 病毒是如何进入内存的
大部分病毒都包括了内存驻留的部分,当被感染的文件执行之后,一部分病毒进入内存,并且一直呆在那儿,即使程序执行完毕。这部分内存中的代码会执行感染文件或者引导区的操作,因此,如果内存中仍然存在病毒的话,即使将硬盘上所有感染病毒的文件都彻底清除,病毒仍然会在进行任何文件访问后重新感染。
对于不包括内存驻留部分的病毒,清除就简单得多,因为病毒只有在执行之后才进行短暂的感染,所以执行杀毒程序,彻底检测和清除硬盘上的文件就可以完全清除病毒了。

DOS环境下的内存驻留
对于标准的DOS中止并且驻留程序(TSR)程序来说,有两种方法可以使用,一种是通过在CONFIG。SYS中作为设备驱动程序加载。另外一种是调用DOS中断INT21H(或者INT27H)的退出但仍然驻留功能。但是病毒不是常规的TSR程序,病毒通常会使用更加巧妙的方法驻留内存,下面是一些病毒经常隐身所在的地方:


DOS环境下的内存驻留病毒会修改大量的DOS INT21H功能,根据调用所处理的文件后缀名或者文件类型决定是否进行感染。主要修改的INT21H功能包括:
* 执行文件 (EXEC; AX=4B00)。
* 装入内存 (LOADAH=4BH);。
* 搜索(列目录功能)(FindFirst 和 FindNext; AH=11h;21h;4Eh;4Fh)。
* 创建文件(CREATE; AH=3Ch)。
* 打开文件(OPEN; AH=3Dh)。
* 关闭文件(CLOSE; AH=3Eh)。
* 改变文件属性(CHMMODE; AH=43h)。
* 文件改名(RENAME; AH=56h)
 
内存驻留病毒在装入内存中之后,需要使用一种方式告诉随后执行的被感染文件,内存中已经加载了病毒代码,不需要再把病毒放到内存中了。有下面几种简单的方式可以达到这个目的:
* 修改某些中断,增加一个功能号,比如说中断21H,增加一个AX=FFFFH的调用,如果返回1表示病毒存在,病毒不存在的话,DOS会返回0。
* 在一些很少使用的内存区域中,放置病毒存在的标志。
有一些内存驻留病毒,比如说使用病毒制造库生成的病毒,由于不正确的实现了防止重新加载的算法,会造成病毒反复加载,这样会造成其中的一个不能正常工作,如果加载的次数过多会使系统内存耗尽,造成死机。


引导区病毒的内存驻留

引导区内存驻留程序使用类似的方法将病毒代码放入系统内存中,这样会造成系统可用内存减少,由于引导病毒通常都比较小,所以一般减少的内存都只有1K或者几K。
为了避免用户可以很容易的觉察到系统可用内存的减少,一些病毒会等待DOS完全启动成功,然后使用DOS自己的功能分配内存,这样不会显示整个可用内存减少,而是在DOS可用的内存中增加了一小个常驻的程序,这样往往不会引起用户的警觉。
引导区内存驻留程序往往不包括重入检测部分,因为引导区病毒只会在系统启动的时候加载一次。

视窗环境下病毒的内存驻留

视窗环境下病毒可以通过三种方法驻留内存,由于视窗操作系统本身就是多任务的,所以最简单的方法是将病毒作为一个视窗环境下的应用程序,拥有自己的窗口(可能是隐藏的)、拥有自己的消息处理函数;另外一种方法是使用DPMI申请一块系统内存,然后将病毒代码放到这块内存中;第三种方法是将病毒作为一个VXD(视窗3。x或者视窗9x环境下的设备驱动程序)或者在视窗NT/视窗2000下的设备驱动程序VDD加载到内存中运行。
在视窗环境下,进行一次文件系统调用可以有几种途径,一种是通过传统的21H号中断,这和通常的DOS环境下病毒的感染方法是一样的,另外一种是通过视窗环境的应用程序编程接口(API)进行,这种方式最后都会归结到VXD调用,所以通过VXD形式的内存驻留病毒可以拦截这些调用并进行感染。
传统的防止病毒重新加载的方法基本上在视窗环境下也是可用的,对于VXD病毒,静态加载的会在“SYSTEM。INI”中包含加载设备驱动程序的一行,动态加载的可能使用某些英特尔CPU的一些特殊状态位来表示病毒是否存在于内存中(CIH病毒就采用了这种方法)。

宏病毒的内存驻留方法

宏病毒是一类特殊的病毒,它主要存在于WORD和EXCEL环境中,一旦WORD和EXCEL运行起来,病毒就会被加载并且一直存在于系统中,所以从某种意义上,宏病毒都是内存驻留病毒。
宏病毒通常也会进行重入检测,发现一个文档中已经包含了病毒的特征就不会再对这个文档进行感染,这样可以防止反复感染造成文档不断增大甚至损坏。

重入检测和病毒免疫

由上面的叙述可以知道,大部分驻留内存的病毒会在加载病毒代码之前,检查系统的内存状态(判断内存中是否有病毒),感染文件之前,查看文件的状态,看看该文件是否已经被感染了,如果被感染了则不再
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!