DOS病毒

生活百科 2023-01-25 18:02生活百科www.aizhengw.cn

DOS病毒

DOS病毒是一般只能在DOS环境下运行(引导型病毒不局限于DOS作业系统而存在,早期的某些单纯占用引导记录来作为病毒体的病毒,至今仍可破坏计算机硬碟引导记录),传染的计算机病毒,是最早出现的计算机病毒。感染主引导扇区和引导扇区的DOS病毒称为引导型病毒,米氏病毒、6.4病毒等均属于此类病毒。这一类病毒在数量上与其他类病毒相比虽然不多,但却是感染率最高的DOS病毒。

基本介绍

  • 中文名DOS病毒
  • 外文名DOS virus
  • 系统DOS系统
  • 类型引导型病毒
  • 机理感染DOS执行档
  • 感染档案COM和EXE档案

病毒发展

电脑病毒发展初期因为作业系统大多为DOS系统,指针对DOS作业系统开发的病毒。目前几乎没有新製作的DOS病毒,由于Windows9X病毒的出现,DOS病毒几乎绝迹。但DOS病毒在Win9X环境中仍可以发生感染,若执行染毒档案,Win9X用户也会被感染。
DOS病毒是一般只能在DOS环境下运行(引导型病毒不局限于DOS作业系统而存在,早期的某些单纯占用引导记录来作为病毒体的病毒,至今仍可破坏计算机硬碟引导记录),传染的计算机病毒,是最早出现的计算机病毒。感染主引导扇区和引导扇区的DOS病毒称为引导型病毒,米氏病毒、6.4病毒等均属于此类病毒。这一类病毒在数量上与其他类病毒相比虽然不多,但却是感染率最高的DOS病毒。
要学DOS下的病毒,你必须要学会或掌握彙编语言。DOS下病毒一般分为引导型病毒、档案型病毒、混合型病毒等。大部分病毒是感染COM和EXE档案,你必须了解COM档案和EXE档案结构。

COM档案

COM档案结构及原理
.COM 档案比较简单,.COM档案包含程式的一个绝对映象―――就是说,为了运行程式準确的处理器指令和记忆体中的数据,MS-DOS通过直接把该映象从档案拷贝到记忆体而载入.COM程式,它不作任何改变。为载入一个.COM程式,MS-DOS试图分配记忆体,因为.COM程式必须位于一个64K的段中,所以.COM档案的大小不能超过65,024(64K减去用于PSP的256位元组和用于一个起始堆叠的至少256位元组)。如果MS-DOS不能为程式、一个PSP、一个起始堆叠分配足够记忆体,则分配尝试失败。否则,MS-DOS分配儘可能多的记忆体(直至所有保留记忆体),即使.COM程式本身不能大于64K。在试图运行另一个程式或分配的记忆体之前,大部分.COM程式释放任何不需要的记忆体。
分配记忆体后,MS-DOS在该记忆体的头256位元组建立一个PSP,如果PSP中的第一个FCB含有一个有效驱动器标识符,则置AL为00h,否则为0FFh。MS-DOS还置AH为00h或0FFh,这依赖于第二个FCB是否含有一个有效驱动器标识符。建造PSP后,MS-DOS在PSP后立即开始(偏移100h)载入.COM档案,它置SS,DS和ES为PSP的段地址,接着创建一个堆叠.为创建一个堆叠,MS-DOS置SP为0000h,若已分配了至少64K记忆体;否则,它置暂存器为比所分配的位元组总数大2的值.,它把0000h推进栈(这是为了保证与在早期MS-DOS版本上设计的程式的兼容性)。MS-DOS通过把控制传递偏移100h处的指令而启动程式.程式设计者必须保证.COM档案的第一条指令是程式的入口点。注意,因为程式是在偏移100h处载入,所有代码和数据偏移也必须相对于100h.彙编语言程式设计者可通过置程式的初值为100h而保证这一点(例如通过在原程式的开始使用语句org 100h).

EXE档案结构

  EXE档案比较複杂,每个EXE档案都有一个档案头,结构如下
EXE档案头信息 
―――――――――――――――――――
├ 偏移量 ┤ 意义 ┤
├00h-01h ┤MZ‘EXE档案标记  ┤
├2h-03h ┤档案长度除512的余数  ┤
├04h-05h ┤...............商  ┤
├06h-07h ┤重定位项的个数 ┤
├08h-09h ┤档案头除16的商  ┤
├0ah-0bh ┤程式运行所需最小段数 ┤
├0ch-0dh ┤..............大.... ┤
├oeh-0fh ┤堆叠段的段值 (SS) ┤
├10h-11h ┤........sp  ┤
├12h-13h ┤档案校验和  ┤
├14h-15h ┤IP  ┤
├16h-17h ┤CS  ┤
├18h-19h ┤............  ┤
├1ah-1bh ┤............ ┤
├1ch  ┤............ ┤ 
―――――――――――――――――――――――――
.EXE档案包含一个档案头和一个可重定位程式映象。档案头包含MS-DOS用于载入程式的信息,例如程式的大小和暂存器的初始值。档案头还指向一个重定位表,该表包含指向程式映象中可重定位段地址的指针鍊表。档案头的形式与EXEHEADER结构对应
EXEHEADER STRUC
exSignature dw 5A4Dh ;.EXE标誌
exExraBytes dw ? ;(部分)页中的位元组数
exPages dw ? ;档案中的全部和部分页数
exRelocItems dw ? ;重定位表中的指针数
exHeaderSize dw ? ;以位元组为单位的档案头大小
exMinAlloc dw ? ;最小分配大小
exMaxAlloc dw ? ;最大分配大小
exInitSS dw ? ;初始SS值
exInitSP dw ? ;初始SP值
exChechSum dw ? ;补码校验值
exInitIP dw ? ;初始IP值
exInitCS dw ? ;初始CS值
exRelocTable dw ? ;重定位表的位元组偏移量
exOverlay dw ? ;覆盖号
EXEHEADER ENDS程式映象,包含处理器代码和程式的初始数据,紧接在档案头之后。它的大小以位元组为单位,等于.EXE档案的大小减去档案头的大小,也等于exHeaderSize的域的值乘以16。MS-DOS通过把该映象直接从档案拷贝到记忆体载入.EXE程式然后调整定位表中说明的可重定位段地址。
定位表是一个重定位指针数组,每个指向程式映象中的可重定位段地址。档案头中的exRelocItems域说明了数组中指针的个数,exRelocTable域说明了分配表的起始档案偏移量。每个重定位指针由两个16位值组成:偏移量和段值。为载入.EXE程式,MS-DOS读档案头以确定.EXE标誌并计算程式映象的大小。然后它试图申请记忆体。,它计算程式映象档案的大小加上PSP的大小再加上EXEHEADER结构中的exMinAlloc域说明的记忆体大小这三者之和,如果总和超过最大可用记忆体块的大小。则MS-DOS停止载入程式并返回一个出错值。否则面,它计算程式映象的大小加上PSP的大小再加上EXEHEADER结构中exMaxAlloc域说明的记忆体大小之和,如果第二个总和小于最大可用记忆体块的大小,则MS-DOS 分配计算得到的记忆体量。否则,它分配最大可用记忆体块。分配完记忆体后,MS-DOS确定段地址,也称为起始段地址,MS-DOS从此处载入程式映象。如果exMinAlloc域和exMaxAlloc域中的值都为零,则MS-DOS把映象儘可能地载入到记忆体最高端。否则,它把映象载入到紧挨着PSP域之上。接下来,MS-DOS读取重定位表中的项目调整所有由可重定位指针说明的段地址。对于重定位表中的每个指针,MS-DOS寻找程式映象中相应的可重定位段地址,并把起始段地址加到它之上。一旦调整完毕,段地址便指向了记忆体中被载入程式的代码和数据段。 MS-DOS在所分配记忆体的最低部分建造256位元组的PSP,把AL和AH设定为载入 .COM程式时所设定的值。MS-DOS使用档案头中的值设定SP与SS,调整SS初始值,把起始地址加到它之上。MS-DOS还把ES和DS设定为PSP的段地址.,MS-DOS从程式档案头读取CS和IP的初始值,把起始段地址加到CS之上,把控制转移到位于调整后地址处的程式。

分类和原理

档案型病毒

DOS病毒的绝大部分是感染DOS执行档,如。EXE,。COM,甚至是。BAT等档案。这类病毒被称为档案型病毒。像“黑色星期五”、“1575"、“卡死脖”病毒(CASPER)等就是档案型病毒。
DOS档案型病毒一般通过将病毒本体连结到执行档(。EXE、。COM)上进行保存自身,并在该执行档得到执行后,主动或被动的找到其他执行档进行感染,複製自身代码,并在适当的时机发作,破坏计算机内的档案。DOS档案型病毒常见的攻击对象有命令解释器command和DOS系统的执行档等。例如在病毒进入记忆体并得到执行,普通的一个dir /a/s命令可以感染该目录及子目录下的所有执行档。

引导性病毒

既感染主引导区或引导区,又感染感染档案的病毒被称为混合型病毒。如“幽灵”病毒(ONEHALF),Natas病毒等。
DOS引导型病毒分为单纯引导型病毒、档案/引导混合型病毒,该类病毒一般会感染主引导记录和DOS引导记录,将病毒体直接写入对应的扇区内,在BIOS执行完毕,将硬碟引导记录调入记忆体,并开始引导时,病毒就已经进入记忆体。一般情况下该类病毒修改INT13的中断服务程式,以达到获取控制权的目的。在发生磁碟IO时,INT13被调用,病毒就开始传染和发作。严重时此类病毒会将引导记录和分区表篡改,造成整个计算机内磁碟数据的丢失,危害极大。
如果主引导区感染了病毒,用格式化程式(FORMAT)是不能清除该病毒的,可以用FDISK/MBR清除该病毒。但如果是被MONKEY或ONEHALF这类的病毒感染,採用FDISK/MBR会丢失数据或使C糟无法找到。
引导区感染了病毒,用格式化程式(FORMAT)可清除病毒。

其他

Windows 9X时代的DOS病毒
有相当一部分DOS病毒可在Windows的DOS视窗下运行,并传播。另一部分DOS病毒在Windows下运行时,可能会导致系统当机或程式运行异常。
因为Windows3.X至Windows9X的作业系统的基础是基于DOS和FAT档案系统开发的,在Windows作业系统启动之前需要先引导DOS作业系统。因为Windows9X及以前的版本是直接继承的BIOS API接口和中断调用方式,系统引导DOS时,很多DOS病毒就已经修改了中断调用函式,取得了控制权,可以继续传染和对系统进行破坏。

Copyright@2015-2025 www.aizhengw.cn 癌症网版板所有