MBR

来源:互联网 发布:用过最爽的飞机杯 知乎 编辑:程序博客网 时间:2024/05/01 00:05

最近各种MBR病毒泛滥啊,正好看到系统启动那里,就把这方面的也看了吧,写点心得体会,以后忘了还可以回来看。

硬盘布局示例:


物理磁盘是按照一种称为扇区的单元来寻址的。一个硬盘的扇区通常是512字节。为磁盘做卷划分准备的工具,如fdisk或者Windows Setup程序,它们在硬盘的第一个扇区中写入一扇区数据,这些数据就是主引导记录,即MBR。

MBR包含有可执行的指令(称为引导代码)和一张表(称为分区表),当然,最后还有一个结束标志55AA。其中在这张表中有四个表项,分别定义了该磁盘上主分区所在的位置。当一台计算机引导时,它执行的第一段代码称为BIOS,这些代码被嵌在计算机的ROM中。BIOS选择一个引导设备(通常是本地硬盘),将该设备的MBR读入到内存中,然后将控制权交给MBR中的代码。然后,MBR的代码扫描主分区表,直到找到这样一个分区:它包含一个标记,指示该分区是可引导的(即第0位为80H)。当MBR找到至少一个这样的标记时,它从对应的分区中读入第一个扇区(DBR)到内存中,并且将控制权交给该分区的代码。这种分区称为引导分区,它的第一个扇区称为引导扇区,针对引导分区而定义的卷称为系统卷。


简介

MBR,全称为Master Boot Record,即硬盘的主引导记录。

为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指引导程序而言。

硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),大小512字节。它由三个部分组成,446字节的主引导程序代码、64字节的硬盘分区表DPT(Disk Partition table)和2个字节的硬盘有效标志(55AA)。

它的主要作用是检查分区状态,寻找活动分区,并将控制权交给活动分区引导记录DBR,再由分区引导程序加载操作系统.。


MBR结构

MBR 分为三块:引导代码,硬盘分区表,结束符

引导代码:       00000000h~000001BDh    

硬盘分区表:      000001BEh~000001FDh   

结束符:        000001FEh~000001FFh  


硬盘分区表

    由上可知,该表有四个表项,每项16个字节,分别定义了该磁盘上主分区的所在位置。由于只有四项,所以最多只有四个分区,扩展分区至多只能有一个,所以硬盘最多有四个主分区,或是三个主分区和一个扩展分区 。当然,扩展分区中可以包含扩展分区,以此类推,这使得操作系统实际上可以在一个硬盘上放置无限多个卷。

    主分区就是通常所说的系统逻辑C 盘,它不允许再建立其他逻辑磁盘,而扩展分区可以建立多个逻辑磁盘,就是我们通常所看到的D,E,F盘,而扩展分区是一种链式结构的,通过扩展分区的就可以找到下一个分区的起始位置,依次类推找到下一个分区。

分区表项各字节含义:



看个实例:


该图中,第一项为主分区,第二项为扩展分区(第4字节为0F)。


计算出来的磁盘容量与右键属性的大小基本相同,可能是计算方法有差别。



MBR执行流程(Win7下)

1.MBR将自身从7C00h处拷贝到600h处,然后执行


2.MBR接下来的代码扫描主分区表,直到找到这样一个分区:它包含一个标记,指示该分区是可引导的(即第0位为80H)。


3.将活动分区的第一个逻辑扇区(即DBR的内容)载入到内存7C00h处


这里比较重要的指令是int 13h,他的功能后面注释有所介绍。

AH=2:指定功能号

AL:要读取的扇区数

DL:磁盘号(0、1-软盘;80、81-硬盘)
DH:磁道号
CL低6位:扇区号 

CL高2位+CH:柱面号

CS:BX   读取数据存放地址

返回值:如果出错 CF=1  AH=错误代码


4.跳转到7C00h处,开始执行DBR



总的来说,MBR的执行流程还是很清晰的,但是要实现像鬼影那样的病毒应该还是有点难度的,有时间写写试试看。

下面给出一个MBR的大致结构,有时间的同学可以写一个MBR查看器,哈哈。




原创粉丝点击