一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 12361|回复: 3

硬盘主引导扇区、分区表和分区引导扇区(MBR、DPT、DBR、BPB)详解

[复制链接]
发表于 2010-3-19 22:11 | 显示全部楼层 |阅读模式
本帖最后由 kenson 于 2010-3-19 22:46 编辑 ) K4 A3 L7 ?9 Y& i
( S( F) R2 Q5 ]$ q! O, q+ b
硬盘主引导扇区、分区表和分区引导扇区(MBR、DPT、DBR、BPB)详解!# R" ~) x  }0 Q2 F4 C
  硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统(图一)。
; u9 V( {( _2 m' y5 E' ~; D+ s4 q1 T, }3 q/ f# q+ g; Y
  MBR由三部分构成:
8 {; t( t) h4 v: x  1.主引导程序代码,占446字节
8 J5 C" @  _2 o  l9 d* D  2.硬盘分区表DPT,占64字节$ O  N0 `& P4 x5 \) K, |3 v+ T
  3.主引导扇区结束标志AA55H
. j2 W  B& a! B/ ~$ a       一、硬盘的主引导程序代码是从偏移0000H开始到偏移01BDH结束的446字节;主引导程序代码包括一小段执行代码。启动PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区MBR的内容到内存指定单元0:7C00 首地址开始的区域,并执行MBR程序段。
; s! q1 V! O& Z8 n# Q; h  主引导代码实现下列功能:7 C0 l1 d  q: B/ x
  1.扫描分区表查找活动分区;6 I2 \$ i) H& A' B; \, Z
  2.寻找活动分区的起始扇区;
! Z! I% q, |7 U* ?  3.将活动分区的引导扇区读到内存;. Z4 ]9 Z0 c' X, e  Y* f
  4.执行引导扇区的运行代码。& F9 E' D& R1 v' W( T% I
  如果主引导代码未完成这些功能,系统显示下列错误信息:6 T! @7 M% m" ]3 e% v8 f( B
  Invalid partition table- W$ a8 \3 L6 t( p
  Error loading operating system5 b8 B- [: ~& s7 P( L
  Missing operating system8 N4 h- q& t( ~( I
二、硬盘分区表DPT是从偏移01BEH开始到偏移01FDH结束的64字节(图二);硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数为什么不能大于4。其中可激活分区数不得大于3,扩展分区数不得大于1,当前活动分区数必须小于等于1。3 E8 c7 I, i3 y  c. _: |

4 }6 |' [, O) G7 V0 L8 j' C  分区表的每一分区的第0个字节是自举标志,其值为80H时,表示该分区是当前活动分区,可引导,其值为00H时,表示该分区不可引导。8 p* I' h$ L3 S6 N2 j
  第4字节是分区类型(图三)。4 V) ~5 A* ^; |6 ^

2 q4 X( o1 y( @& i; g0 `  B  {, W4 B- R5 V/ v
  每一分区的第1至第3字节是该分区起始地址。其中第1字节为起始磁头号(面号);第2字节的低6位为起始扇区号,高2位则为起始柱面号的高2位;第3字节为起始柱面号的低8位。因此,分区的起始柱面号是用10位二进制数表示的,最大值为2^10 = 1024,因逻辑柱面号从0开始计,故柱面号的显示最大值为1023。同理,用6位二进制数表示的扇区号不会超过2^6 - 1 = 63;用8位二进制数表示的磁头号不会超过2^8 - 1 = 255。每一分区的第5至第7字节表示分区的终止地址,各字节的释义与第1至第3字节相同。这里我们假设一种极端的情况:如果让第5至第7字节的所有二进制位都取1,就获得了柱面号、磁头号和扇区号所能表示的最大值,从而得到最大绝对扇区号为:. ?" y: L9 v- v
  1024 × 256 × 63 = 16,515,0721 d5 A- m5 C* p- L! F4 F
  这个扇区之前的所有物理扇区所包含的字节数为:- |) E) k( Y; h/ T& U
  16,515,072 × 512Bytes ≈ 8.46×109Bytes = 8.46GB。
6 W: G8 p- |% G! o. t& B* P/ i  由此可知硬盘的容量设计为什么会有8.4GB这一档,分区表每一分区的第1至第3字节以及第5至第7字节的数据结构已经不能满足大于8.46GB的大容量硬盘的需要。考虑到向下兼容的需要,业界并未对从DOS时代就如此定义的硬盘分区表提出更改意见,否则改动所牵涉的面太广,会造成硬件和软件发展上的一个断层,几乎无法被业界和用户所接受。硬盘厂商解决这一问题的方法是定义了新的INT 13服务扩展标准。新的INT 13服务扩展标准不再使用操作系统的寄存器传递硬盘的寻址参数,而使用存储在操作系统内存里的地址包。地址包里保存的是64位LBA地址,如果硬盘支持LBA寻址,就把低28位直接传递给ATA接口,如果不支持,操作系统就先把LBA地址转换为CHS地址,再传递给ATA接口。通过这种方式,能实现在ATA总线基础上CHS寻址的最大容量是136.9 GB,而LBA寻址的最大容量是137.4GB。新的硬盘传输规范ATA 133规范又把28位可用的寄存器空间提高到48位,从而支持更大的硬盘。+ `$ o) f: m  j
分区表每一分区的第8至第11字节表示该分区的起始相对扇区数(即该扇区之前的绝对扇区个数),高位在右,低位在左;第12至第15字节表示该分区实际占用的扇区数,也是高位在右,低位在左;分区表这类数据结构的表达方式与机器中数据的实际存储方式在顺序上是一致的,即低位在前,高位在后。因此,在从16进制向十进制作数值转换时,需将字段中的16进制数以字节为单位翻转调位,用4个字节可以表示最大2^32个扇区,即2TB=2048GB。
0 o/ G8 t6 c+ x% X) K  系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。在未超过8.4GB的分区上,C/H/S的表示方法和扇区数的表示方法所表示的分区大小是一致的。超过8.4GB的/H/S/C一般填充为FEH/FFH/FFH,即C/H/S所能表示的最大值;有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。
0 R4 k7 \9 P' R  扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录(Extended Boot Record,EBR)(图四)。
& W3 a( {. ?4 J, {0 @, J" Y
# p4 s- I! D7 }6 B$ q- P, G, t/ w/ L, R. m5 S
  扩展引导记录包括一个扩展分区表和扇区结束标志55AA。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区;第二项指向下一个逻辑驱动器的EBR,如果不存在进一步的逻辑驱动器,第二项就不会使用,而被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区,第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR。扩展分区表的第三项和第四项永远都不会被使用。) P2 o, D% D7 \1 `
  扩展分区表项中的相对扇区数是从扩展分区开始的扇区到该逻辑驱动器中第一个扇区的扇区数;占用的扇区数是指组成该逻辑驱动器的扇区数目。0 r4 d1 N; p7 e# J
          有时候在磁盘的末尾会有剩余空间,由于分区是以1柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。
; F( J& r( c. V. i+ n/ f- }三、主引导扇区的最后两个字节(偏移1FEH和偏移1FFH),其值为AA55H,它表示该扇区是个有效的引导扇区,可用来引导硬磁盘系统。4 s6 G$ T' ~  M( Y+ u2 l; q
分区引导扇区DBR(DOS BOOT RECORD)是由FORMAT高级格式化命令写到该扇区的内容;DBR是由硬盘的MBR装载的程序段。DBR装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区的DBR才会被MBR装入内存运行。2 a# n# l0 F) z3 C
DBR主要由下列几个部分组成:9 M  d5 D+ Q5 h8 d$ p$ U
  1.跳转指令,占用3个字节的跳转指令将跳转至引导代码。/ G! N3 p" y& i2 z  ], |
  2.厂商标识和DOS版本号,该部分总共占用8个字节。
, P9 `" K5 I: V* @  3.BPB(BIOS Parameter Block, BIOS 参数块)。  u) M7 Q, v* N, B: j  p! G# R5 {
  4.操作系统引导程序。9 J" b: V# [* D0 B5 B
  5.结束标志字,结束标志占用2个字节,其值为AA55
% {4 ]- a8 n& M8 Z: P" _; S  g  DBR中的内容除了第5部分结束标志字固定不变之外,其余4个部分都是不确定的,其内容将随格式化所用的操作系统版本及硬盘的逻辑盘参数的变化而变化。/ @- e& r& _" @; |4 \4 |' ^
  一、FAT32的分区引导扇区
! _& u/ H6 [# z+ @  为了使加载文件的操作更加灵活,加上FAT32文件系统采用"活动"的FDT表,,同时考虑到引导程序的代码量和为今后发展保留适当的余量,FAT32文件系统分区引导扇区占据了6个扇区,只有前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用;引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。( y  c3 M; C7 C
  由于分区引导扇区的重要性,FAT32文件系统在在第一个分区引导扇区的6个扇区后的6个扇区里保留了分区引导扇区的备份,在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。
, \) P7 b9 `" r+ D1 A, E分区引导扇区的第一个扇区(图六)的前三个字节是一条跳转指令,然后是8个字节长的OEM ID(厂家标识)和版本号,其后是简称为BPB的BIOS参数块(BIOS Parameter Block)。对于FAT32其各部分的意义如下表:
- J1 M* ]$ G( Q* v" Z$ w
偏移地址长度(字节)意    义
0BH2每个扇区的字节数,常取512
0DH1每簇扇区数;可以是1, 2, 4, 8, 16, 32, 64, 128,取决于文件系统格式及分区大小。
0EH2为操作系统保留的扇区数;FAT32时多为十进制的32,FAT16时为1,有的格式化工具可能将它设为36或63。
10H1FAT表的个数;常取2
11H2FAT16中存放系统根目录中允许登记的目录项个数,FAT32中用于标注系统采用的是否为FAT32文件系统。其值为0000H表示磁盘使用FAT32文件系统。
13H2值为00H,为保持兼容性而保留,未使用。
15H1磁盘介质标志,硬盘为F8
16H2未使用,值为00H
18H2每个磁道的扇区数。
1AH2磁盘的磁头数。
1CH4分区前隐藏扇区的个数。
20H4逻辑磁盘中的扇区总数。
24H4每个FAT表所占的扇区数。
28H2FAT表镜像标志,值为0表示系统保存2份互为备份的FAT表,值为1表示系统仅保存1FAT表。
2AH2文件系统的主次版本(保留)。
2CH4磁盘根目录的起始簇号。
30H2文件系统参数的扇区号,通常位于引导扇区的下一个扇区。
32H2备份分区引导扇区的逻辑扇区号。
34H12保留,未使用。
40H1中断13呼叫的预设值,指明访问的设备;软盘为00H,硬盘为80H。
41H1用于中断13呼叫。
42H1磁盘读写参数扩展标志,其值为29H
43H4格式化时随机产生的磁盘卷的序列号。
47H11格式化时人工输入的磁盘卷标号。
52H8文件系统的标识号(FAT32)。
6 A' T$ y0 [% A! }" K; o
  从偏移0x5A开始的数据为操作系统引导代码。这是由偏移0x00开始的跳转指令所指向的,此段指令在不同的操作系统上和不同的引导方式上,其内容也是不同的。7 r+ H3 d8 S9 c5 s! D3 |
  扇区的最后两个字节存储值为0x55AA的DBR有效标志,对于其他的取值,系统将不会执行DBR相关指令。
$ M! }" d0 B0 R: C
4 G" T# ?; n  |) ^- A: m& j1 E5 o& l' f' r
分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区(图七),除了保存扇区的标识信息(RraA(00H)和rrAa(1E4H))外,还可能在偏移地址1E8H处存储了文件系统有关的信息。其中扇区偏移地址1E8H~1EBH的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源管理器状态栏上列出的"可用磁盘空间"参数),而1ECH~1EFH 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问FAT表就直接获得磁盘剩余空间和可以分配的簇号。[; Y  m! c% M- ?/ R2 V% z6 B0 _
5 ]% ~! D% Y$ p* k8 f# R6 u

( w3 X7 Y* k1 K6 ~1 w$ B; ]/ V  M5 M# y. x. f$ G% B7 j
  分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码(图八)。' x, k- j! y. t8 i

4 u9 y  k0 W; |. z0 q& v" q9 g4 _9 n' H% ~- Y# a

; W2 o1 b* s4 {6 V二、NTFS的分区引导扇区9 G5 F1 A  a" j, p6 t7 w  ^- o# I
$ L9 }5 x2 Z* G
  对于NTFS分区来说,分区引导扇区DBR只占用一个扇区(图五),并且在该分区的最后一个扇区做了备份;NTFS的引导扇区也是完成引导和定义分区参数,NTFS分区的引导扇区不是分区的充分条件,它要求必须MFT中的系统记录如$MFT等正常该分区才能正常访问。其BPB参数如下表所示:      
偏移地址长度(字节)常用值意  义
0x0B20x0002每扇区字节数
0x0D10x08每簇扇区数
0x0E20x0000保留扇区
0x1030x000000总为0
0x1320x0000NTFS未使用,为0
0x1510xF8 介质描述
0x1620x0000总为0
0x1820x3F00每磁道扇区数
0x1A20xFF00磁头数
0x1C40x3F000000隐藏扇区数
0x2040x00000000NTFS未使用,为0
0x2880x4AF57F0000000000扇区总数
0x3080x0400000000000000 $MFT的逻辑簇号
0x3880x54FF070000000000$MFT Mirr的逻辑簇号
0x4040xF6000000MFT记录簇数
0x44 40x01000000每索引簇数
0x4880x14A51B74C91B741C卷标
0x5040x00000000检验和
  i1 c  H  n9 i
 楼主| 发表于 2010-3-19 22:52 | 显示全部楼层
现在出现了利用MBR来传播病毒; ?# i, g/ D- E1 B& X3 ~' d
5 _) @& E; ]+ o5 A
以前,常听用户说,中毒了没关系,大不了重装系统。但现在,这句话将成为历史。3月15日,金山安全实验室捕获一种被命名为"鬼影"的电脑病毒,该病毒寄生在磁盘主引导记录(MBR),即使格式化重装系统,也无法将该病毒清除。当系统再次重启时,该病毒会早于操作系统内核先行加载。而当病毒成功运行后,在进程中、系统启动加载项里找不到任何异常,病毒就象"鬼影"一样在中毒电脑上"阴魂不散"。( x) z/ y2 C/ C' {" ~& m
7 L! m, i3 }4 l5 l
颠覆传统  重装系统无法清除
$ \! C1 F; M' {- m4 _
/ _0 n% c* L9 B" S$ E金山安全反病毒专家表示,"一般的电脑病毒是Windows系统下的应用程序,在Windows加载之后才运行。而"鬼影"病毒的主要代码是寄生在硬盘的主引导记录(MBR),在电脑启动过程中先于系统核心程序直接加载到电脑内存中运行。对于已经寄生于MBR中的病毒,安全软件无法进行拦截。因病毒比安全软件的启动还要早。5 h, ~) E% t" p2 m) l  u

2 g# n1 |/ j  D) v& Q李铁军表示,"鬼影"病毒是国内首个引导区下载者病毒,颠覆了传统病毒的感染特点以及用户处理病毒问题的思维定势,不仅做到了"三无"特性--无文件、无系统启动项、无进程模块,而且即使用户重装了系统,该病毒依然会再次进入用户新系统;全新的病毒技术,突破了普通杀毒软件的自保护,"鬼影"病毒可以说是一个具有"划时代"特征的电脑病毒。: n5 p4 z3 S6 O6 ?/ A) _3 c! _+ {% N
- \1 G2 ^* K, R3 O; ?. n
安全软件失效 电脑明显变慢
+ R) Q5 U1 D' a4 x, }2 |
1 }" M9 N, P% ]金山安全实验室的研究人员分析发现,这个"鬼影"病毒是随某些共享软件捆绑安装进入电脑的,目前的日感染电脑约2-3万台。"鬼影"病毒入侵后,会释放驱动程序改写硬盘MBR(主引导记录),驱动程序在开机过程中攻击众多杀毒软件,令杀毒软件失效,再下载传统的AV终结者木马下载器,最终目的依然是通过传播盗号木马,窃取用户虚拟财产牟利。中毒后,最直观的现象是安全软件无法正常运行,电脑明显变慢,IE主页被改。
) k, \2 z1 M$ P  Q2 u- n& I5 S" H6 z- ]1 D" ~
罕见技术型病毒  源于国外$ J  w& R& h) z/ y0 R/ q! n

1 i. g/ i  z) t# Z3 E"鬼影"病毒是近年来较为罕见的技术型病毒,病毒作者具有高超的编程技巧。因WinXP系统的限制,一般手法改写MBR会被系统判定为非法,这也是引导区病毒接近消亡的重要因素。这种绕过Winxp的安全限制,直接改写MBR的技术主要在国外技术论坛传播,在"鬼影"病毒之前,这一技术少有被黑客实际大规模利用的案例。金山安全实验室工程师说,目前"鬼影"病毒只针对Winxp系统,该病毒尚不能破坏Vista和Windows 7系统。9 x  @  t9 P6 a4 r6 N1 W3 e+ g" y
$ Z# X( u* z# d% p
另据金山安全实验室研究人员透露,在目前国内安全厂商和民间反病毒高手中,能够完整分析"鬼影"病毒的人屈指可数。因病毒寄生于硬盘的主引导记录(MBR),病毒释放的驱动程序能够破坏大多数安全工具和系统辅助工具,在已经中毒的情况下,很难使用现有工具完成病毒清除,金山安全实验室正在编写针对"鬼影"病毒的专杀工具。! C0 k* u% A8 @1 L$ X1 R
# V, G  U' A1 ]* _% }$ x
金山毒霸已经升级,可查杀传播"鬼影"病毒的母体文件,避免更多用户受"鬼影"病毒之害,用户只需要在线升级即可获得相应防御能力。金山网盾已将传播该病毒的恶意网页加入阻止访问的列表,防止更多用户下载这个神秘的"鬼影"病毒。
回复

使用道具 举报

发表于 2010-3-26 15:26 | 显示全部楼层
这会不会是噱头?利用MBR和其后的保留扇区存放病毒体,造成无文件的表象,这个可以理解,但如何能先于系统加载,然后在系统加载后再将自身破坏和传染模块插入到系统模块中,并获得执行权,这有点不可思议。因为windows是动态加载的,不同的模块在不同条件下会加载到内存中不同的位置,软件、硬件条件一变,这个加载位置也会变的,不同配置的系统模块的多少也不同,而且系统文件都加有微软的数字签名,要把先于系统调入的破坏模块动态插入到系统中,并能获得调用,其复杂程度相当于一台“虚拟机”了,就是类似于vmware那样的,这个病毒得多大?
回复

使用道具 举报

 楼主| 发表于 2010-3-28 09:49 | 显示全部楼层
本帖最后由 kenson 于 2010-3-28 09:52 编辑
2 c& N! b9 F* K. F: ?/ U4 R) I- Q$ j
如果你对MBR和8086汇编的精通的话其实也不是不可能的! 主要修改MBR的引导程序去引导你自己的写的病毒程序到内存,第一个执行程序就是你的程序你想怎么样就怎么样了.还有你还要对XP的系统了如指掌才行,总之能懂这些的人真的是天才。
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-10-28 12:44 , Processed in 0.038154 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表