计算机病毒分析与对抗————四、引导型病毒

一、硬盘结构简介html

硬盘的三个基本参数(CHS):spa

柱面数(Cylinders表示硬盘每一面盘片上有几条磁道,最大为1023(用10个二进制数存储)操作系统

磁头数(Header):表示磁盘总共有几个磁头,也就是有几面盘片,硬盘是由多个盘片组成的,而每一个盘片上都有一个读写磁头负责该磁片的读写操做,磁头数最大为255设计

扇区数(Sectors):表示每一条磁道上有几个扇区,最大为63(用6个二进制位存储)。每一个扇区通常是512字节。3d


在CHS寻址方式中,磁头、柱面、扇区的取值范围是:0-255,0-102三、1-63(注意是从1开始)指针

磁盘最大容量code

255 * 1023 * 63 * 512 / 1048576 = 8024 MB    (1M =1048576 Bytes )htm

硬盘厂商经常使用的单位:
255 * 1023 * 63 * 512 / 1000000 = 8414 MB    ( 1M =1000000 Bytes )对象


二、从CHS到LBAblog

假设用C表示当前柱面号,H表示当前磁头号,Cs表示起始柱面号,Hs表示起始磁头号,Ss表示起始扇区号,PS表示每磁道有多少个扇区,PH表示每柱面有多少个磁道,则有如下对应关系:

LBA=(C-Cs)*PH*PS+(H-Hs)*PS+(S-Ss)

通常状况下,CS=0,HS=0,SS=1;PS=6三、PH=255

那么能够根据公式计算以下:

C/H/S=0/0/1,带入公式中获得LBA=0

C/H/S=0/0/63,带入公式中获得LBA=62

从LBA到CHS

C=LBA/(PH*PS)+Cs

H=(LBA/PS)MOD PH +Hs

S=LBA MOD PS +Ss


三、主引导扇区结构简介

主引导扇区也就是硬盘的第一个扇区(0面0道1扇区),它由主引导记录MBR)、硬盘分区表(DPT)、引导扇区标记(Boot Record ID)三部分组成。

主引导记录(MBR:占用引导扇区(boot sector)的前446个字节(0到0x1BDH),它里面存放着系统主引导程序(它负责从活动分区中装载并运行系统引导程序)

硬盘主分区表(DPT):占用64个字节(0x1BEH——0x1FDH),里面记录了磁盘的基本分区信息,它分为四个分区项,每项16字节,分别记录 每一个主分区的信息(所以最多能够有四个分区)

引导区标记(BootRecord ID:占用两个字节(0x1FEH——0x1FFH),对于合法引导区,它等于0xAA55,这也是判别引导区是否合法的标志。

分区表项内容及其含义:


因为主分区表中只能分为四个分区,没法知足需求,所以设计了一种扩展分区格式。基本上说,扩展分区的信息是以链表的形式存放的,但也有一些特别的地方:



4、系统引导过程

  • 开机
  • BIOS加电自检(Power OnSelf Test,POST),此时电源稳定以后,CPU从内存地址0ffff:0000处开始执行
  • 将硬盘第一个扇区(0面0道1扇区,也就是BootSector)读入内存地址0000:7c00处。
  •  检查(WORD)0000:7dfe是否等于0xaa55,若不等于则转去尝试其余启动介质,若是没有其余启动介质则显示“NO ROMBASIC”,而后死机
  • 跳转到0000:7c00处执行MBR中的程序。
  • MBR首先将本身复制到0000:0600处,而后继续执行。
  • 在主分区表中搜索标志为活动的分区。若是发现没有活动分区或有不止一个活动分区,则显示“Invalid partition table”并挂起系统。
  • 将活动分区的第一个扇区读入内存地址0000:7c00处。
  • 检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示“Miss Operation System”,而后中止,或尝试软盘启动。
  •  跳转到0000:7c00处继续执行特定系统的启动程序。
  •  启动系统……
  • 以上步骤中的2345步是由BIOS的引导程序完成的,6,7,8,9,10步是由MBR中的引导程序完成的。

系统启动过程代码分析(部分代码)

定位到0000:7C00
CLI					:关中断
XOR AX,AX				;设置堆栈端地址为0000
MOV SS,AX
MOV SP,7C00				;设置堆栈指针为7c00
MOV SI,SP				;SI=7c00
PUSH AX
POP ES					;ES=0000
PUSH AX
POP DS                			;DS=0000
STI					;开中断

把MBR重定位到0600

MOV  DI  , 0600
MOV  CX , 0100				;移动256个Word(512byte)
REPNZ					;把MBR从0000:7c00移动到0000:0600
MOVSW

在新位置继续执行MBR,查找活动分区

JMP  0000:061D				;跳转至0000:061D,即程序的下一条指令
MOV SI,07BE				;指向第一分区表的首地址
MOV BL,04				;分区个数为4
SEARCH_LOOP1:
CMP BYTE PTR [SI],80                    ;是否是活动分区
JZ FOUND_ACTIVE				;是,转FOUND_ACTIVE,继续查看其余分区
CMP BYTE PTR [SI],00			;是否是非活动分区
JNZ NOT_ACTIVE				;不是,跳转至NOT_ACTIVE,分区表出现异常

继续查找,直到找到活动分区

ADD SI,10				;增量表指针加16
DEC BL					;减小计数
JNZ SEARCH_LOOP1			;继续检查四个分区中的其余分区
INT 18					;没有找到活动分区,跳转至ROM BASIC
FOUND_ACTIVE:                           ;找到了活动分区
MOV DX, [SI]				;保存磁头号、驱动号到DH、DL
MOV CX,[SI+02]				;保存磁道号、扇区号到CH、CL
MOV BP,SI				;保存当前分区首地址到BP

将活动分区第一个扇区读入内存地址0000:7C00

MOV BX,7C00				;设置读盘缓冲区
MOV AX,0201				;读入一个扇区’
PUSH DI                  		;恢复DI
INT 13					;把扇区读入0000:7c00


五、INT 13H——实现磁盘的读写操做

六、什么是引导性病毒

引导性病毒指专门感染磁盘引导扇区和硬盘主引导扇区的计算机病毒程序。若是被感染的磁盘被做为系统启动盘使用,则在启动系统时,病毒程序即被自动装入内存,从而使现行系统感染上病毒。这样在系统带毒的状况下,若是进行了磁盘I/O操做,则病毒程序就会主动地进行传染,从而使其余磁盘感染上病毒。

七、引导性病毒的工做环境:

引导型病毒是一种在ROMBIOS以后,系统引导时出现的病毒,它先于操做系统,依托的环境是BIOS中断服务程序。

系统的引导过程,只是简单地检查告终束标记0xAA55,但没有对引导扇区的内容进行检查,因此引导型病毒就利用了这一点,在引导区结构不变的状况下替换掉相应代码。

8、引导型病毒的工做原理

引导型病毒是利用操做系统的引导模块放在某个固定的位置,而且控制权的转交方式是以物理位置为依据,而不是以操做系统引导区的内容为依据,于是病毒占据该物理位置便可得到控制权,而将真正的引导区内容搬家转移或替换,待病毒程序执行后,将控制权交给真正的引导区内容,使得这个带病毒的系统看似正常运转,而病毒已隐藏在系统中并乘机传染、发做。

9、引导性病毒主要技术手段

常驻内存高端:

    基本要求:

   想办法把病毒程序载入到内存中,载入后保证这一段代码不被其余代码覆盖。

   利用点:

   内存0000:0413处两字节描述了基本内存的大小,它的值是KB的倍数。

   实现:

   病毒程序首先将自身复制到内存的高端,修改内存容量标志单元,在原有值的基础上减去病毒长度,使得病毒代码可以常驻内存;

修改中断向量表,截获系统中断:

而后将原int 13h磁盘中断服务程序的中断向量保存,并修改此中断向量,将其指向病毒代码,病毒代码所以得到系统控制权,进而执行感染、破坏等工做。

十、引导性病毒的主要特色

(1)引导型病毒式在操做系统以前进入内存,寄生对象又相对固定,所以该类型病毒基本上不得不采用减小操做系统所掌管的内存容量方法来驻留内存高端。而正常的系统引导过程通常是不减小系统内存的。

(2)引导型病毒须要把病毒传染给软盘,通常是经过修改INT 13H的中断向量,而新的INT 13H中断向量地址一定指向内存高端的病毒程序。

(3)引导型病毒感染硬盘时,一定驻留硬盘的主引导扇区或引导扇区,而且只驻留一次,所以引导型病毒通常都是在软盘启动过程当中把病毒传染给硬盘的。而正常的引导过程通常是不对硬盘主引导扇区进行写盘操做的。

(4)引导型病毒的寄生对象相对固定,把当前的系统主引导扇区和引导扇区与干净的主引导扇区和引导扇区进行比较,若是内容不一致,可认定系统引导区异常。

十一、磁盘带毒引导过程

十二、如何清除病毒

著名的石头病毒会将系统的主引导扇区搬家备份到硬盘0面0道7扇区,请问若是系统已中石头病毒后,如何清除掉该病毒?