汪道之

有人的地方就有江湖

0%

病毒_DOS_链式病毒

介绍

之前的病毒在每份感染文件中都复制了一份病毒拷贝,而链式病毒只保留一份病毒拷贝,其利用文件目录项,将受感染文件的头簇指向病毒

复习

回顾一下文件的查找过程

image-20210512095523949

工作原理

感染过程:

  1. 如首次感染,将病毒保存在某个空闲扇区
  2. 将被感染文件(com文件)首簇存目录项保留段
  3. 修改首簇指向病毒的首簇

执行过程:

  1. 执行被感染文件则启动病毒,加载的是病毒的首簇,并执行
  2. 病毒获取当前执行程序的名字,获取对应目录项。从其中保留字段获取原文件首簇号,并遍历FAT簇链加载它们
  3. 跳到原文件加载的内存中执行

病毒设计

感染部分

  1. 被感染文件的真实起始扇区号写到目录表项的保留区(目录项的保留区从目录项头第13个字节即偏移0ch开始,共10字节)
  2. 修改被感染文件的目录项的起始扇区字段指向病毒文件的首簇
  3. 目录项中的文件大小字段也要修改成病毒的真实大小,这样才能保证病毒能被完整加载
  4. 将原来病毒文件的目录项全部32字节改为0,这样从外部看就不存在这个病毒文件,也没有对应的目录项了

执行部分

  1. 先获取被感染程序的名字
  2. 然后从根目录寻找被感染程序的目录项
  3. 找到后从该文件目录项的保留区获取被感染程序的首簇号
  4. 找到被感染程序所在簇(即扇区),加载该扇区到内存

image-20210512144855424

重点

获取执行文件名

  1. 从com文件的ds:2c处获得环境块首址的段地址
  2. 环境块就在段地址:0000处
  3. 环境块内容PATH=……COMSPEC=C:\COMMAND.COM\0….0 0 xxxx
  4. 环境块开始是PATH等0字符结尾的串,最后是两个00字符。然后有两个字节可能是数目,之后就是执行程序的名字