搜档网
当前位置:搜档网 › 硬盘主引导扇区(MBR、DPT、DBR、BPB)详解

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

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

硬盘主引导扇区(MBR、DPT、DBR、BPB)详解.txt“恋”是个很强悍的字。它的上半部取自“变态”的“变”,下半部取自“变态”的“态”。硬盘主引导扇区(MBR、DPT、DBR、BPB)详解

引用:

网上收集的资料,放到这里来学习,这方面登山人大哥是高手,有空指点一下喽

硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统(图一)。

MBR由三部分构成:

1.主引导程序代码,占446字节

2.硬盘分区表DPT,占64字节

3.主引导扇区结束标志AA55H

一、硬盘的主引导程序代码是从偏移0000H开始到偏移01BDH结束的446字节;主引导程序代码包括一小段执行代码。启动PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区MBR的内容到内存指定单元0:7C00 首地址开始的区域,并执行MBR程序段。

主引导代码实现下列功能:

1.扫描分区表查找活动分区;

2.寻找活动分区的起始扇区;

3.将活动分区的引导扇区读到内存;

4.执行引导扇区的运行代码。

如果主引导代码未完成这些功能,系统显示下列错误信息:

Invalid partition table

Error loading operating system

Missing operating system

二、硬盘分区表DPT是从偏移01BEH开始到偏移01FDH结束的64字节(图二);

硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数为什么不能大于4。其中可激活分区数不得大于3,扩展分区数不得大于1,当前活动分区数必须小于等于1。

分区表的每一分区的第0个字节是自举标志,其值为80H时,表示该分区是当前活动分区,可引导,其值为00H时,表示该分区不可引导。

第4字节是分区类型(图三)。

每一分区的第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,就获得了柱面号、磁头号和扇区号所能表示的最大值,从而得到最大绝对扇区号为:

1024 × 256 × 63 = 16,515,072

这个扇区之前的所有物理扇区所包含的字节数为:

16,515,072 × 512Bytes ≈ 8.46×109Bytes = 8.46GB。

由此可知硬盘的容量设计为什么会有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位,从而支持更大的硬盘。

分区表每一分区的第8至第11字节表示该分区的起始相对扇区数(即该扇区之前的绝对扇区个数),高位在右,低位在左;第12至第15字节表示该分区实际占用的扇区数,也是高位在右,低位在左;分区表这类数据结构的表达方式与机器中数据的实际存储方式在顺序上是一致的,即低位在前,高位在后。因此,在从16进制向十进制作数值转换时,需将字段中的16进制数以字节为单位翻转调位,用4个字节可以表示最大2^32个扇区,即2TB=2048GB。

系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。在未超过8.4GB的分区上,C/H/S的表示方法和扇区数的表示方法所表示的分区大小是一致的。超过8.4GB的/H/S/C一般填充为FEH/FFH/FFH,即C/H/S所能表示的最大值;有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。

扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录(Extended Boot Record,EBR)(图四)。

扩展引导记录包括一个扩展分区表和扇区结束标志55AA。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区;第二项指向下一个逻辑驱动器的EBR,如果不存在进一步的逻辑驱动器,第二项就不会使用,而被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区,第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR。扩展分区表的第三项和第四项永远都不会被使用。

扩展分区表项中的相对扇区数是从扩展分区开始的扇区到该逻辑驱动器中第一个扇区的扇区数;占用的扇区数是指组成该逻辑驱动器的扇区数目。

有时候在磁盘的末尾会有剩余空间,由于分区是以1柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。

三、主引导扇区的最后两个字节(偏移1FEH和偏移1FFH),其值为AA55H,它表示该扇区是个有效的引导扇区,可用来引导硬磁盘系统。

分区引导扇区DBR(DOS BOOT RECORD)是由FORMAT高级格式化命令写到该扇区的内容;DBR 是由硬盘的MBR装载的程序段。DBR装入内存后,即开始执行该引导程序段,其主要功能是完成操作系统的自举并将控制权交给操作系统。每个分区都有引导扇区,但只有被设为活动分区的DBR才会被MBR装入内存运行。

DBR主要由下列几个部分组成:

1.跳转指令,占用3个字节的跳转指令将跳转至引导代码。

2.厂商标识和DOS版本号,该部分总共占用8个字节。

3.BPB(BIOS Parameter Block, BIOS 参数块)。

4.操作系统引导程序。

5.结束标志字,结束标志占用2个字节,其值为AA55

DBR中的内容除了第5部分结束标志字固定不变之外,其余4个部分都是不确定的,其内容将随格式化所用的操作系统版本及硬盘的逻辑盘参数的变化而变化。

一、FAT32的分区引导扇区

为了使加载文件的操作更加灵活,加上FAT32文件系统采用"活动"的FDT表,,同时考虑到引导程序的代码量和为今后发展保留适当的余量,FAT32文件系统分区引导扇区占据了6个扇区,只有前3个扇区作为系统的分区引导扇区,其余3个扇区保留暂未使用。分区引导扇区对于操作系统的启动和磁盘文件的访问具有至关重要的作用;引导程序代码的损坏将导致操作系统不能正常启动,磁盘读写参数的破坏将造成存储在磁盘上的文件不能正常读写。

由于分区引导扇区的重要性,FAT32文件系统在在第一个分区引导扇区的6个扇区后的6个扇区里保留了分区引导扇区的备份,在启动时操作系统可以对两份引导扇区进行比较,以便选择正确的引导扇区来引导系统。由于在磁盘正常工作过程中系统不再对引导扇区的程序和数据进行修改,因此备份的分区引导扇区损坏的可能性非常小。

分区引导扇区的第一个扇区(图六)

的前三个字节是一条跳转指令,然后是8个字节长的OEM ID(厂家标识)和版本号,其后是简称为BPB的BIOS参数块(BIOS Parameter Block)。对于FAT32其各部分的意义如下表:偏移地址

长度(字节)

意义

0BH

2

每个扇区的字节数,常取512。

0DH

1

每簇扇区数;可以是1, 2, 4, 8, 16, 32, 64, 128,取决于文件系统格式及分区大小。0EH

2

为操作系统保留的扇区数;FAT32时多为十进制的32,FAT16时为1,有的格式化工具可能将它设为36或63。

10H

1

FAT表的个数;常取2。

11H

2

在FAT16中存放系统根目录中允许登记的目录项个数,FAT32中用于标注系统采用的是否为FAT32文件系统。其值为0000H表示磁盘使用FAT32文件系统。

13H

2

值为00H,为保持兼容性而保留,未使用。

15H

1

磁盘介质标志,硬盘为F8。

16H

2

未使用,值为00H。

18H

2

每个磁道的扇区数。

1AH

2

磁盘的磁头数。

1CH

4

分区前隐藏扇区的个数。

20H

4

逻辑磁盘中的扇区总数。

24H

4

每个FAT表所占的扇区数。

28H

2

FAT表镜像标志,值为0表示系统保存2份互为备份的FAT表,值为1表示系统仅保存1份FAT表。

2AH

2

文件系统的主次版本(保留)。

2CH

4

磁盘根目录的起始簇号。

30H

2

文件系统参数的扇区号,通常位于引导扇区的下一个扇区。

32H

2

备份分区引导扇区的逻辑扇区号。

34H

12

保留,未使用。

40H

1

中断13呼叫的预设值,指明访问的设备;软盘为00H,硬盘为80H。

41H

1

用于中断13呼叫。

42H

1

磁盘读写参数扩展标志,其值为29H。

43H

4

格式化时随机产生的磁盘卷的序列号。

47H

11

格式化时人工输入的磁盘卷标号。

52H

8

文件系统的标识号(FAT32)。

从偏移0x5A开始的数据为操作系统引导代码。这是由偏移0x00开始的跳转指令所指向的,此段指令在不同的操作系统上和不同的引导方式上,其内容也是不同的。

扇区的最后两个字节存储值为0x55AA的DBR有效标志,对于其他的取值,系统将不会执行DBR相关指令。

分区引导扇区的第2个扇区作为文件系统相关参数存储标识扇区(图七),

除了保存扇区的标识信息(RraA(00H)和rrAa(1E4H))外,还可能在偏移地址1E8H处存储了文件系统有关的信息。其中扇区偏移地址1E8H~1EBH的4个字节存储了逻辑磁盘中未使用的簇数,通常用于快速计算逻辑磁盘的剩余空间(典型的操作是在资源管理器状态栏上列出的"可用磁盘空间"参数),而1ECH~1EFH 4个字节给出了逻辑盘中下一个可以分配给文件使用的空闲簇的簇号,这样操作系统可以不访问FAT表就直接获得磁盘剩余空间和可以分配的簇号。

分区引导扇区的第3个扇区则存储了引导扇区的后一部分引导系统的程序代码(图八)。

二、NTFS的分区引导扇区

对于NTFS分区来说,分区引导扇区DBR只占用一个扇区(图五),并且在该分区的最后一个扇区做了备份;NTFS的引导扇区也是完成引导和定义分区参数,NTFS分区的引导扇区不是分区的充分条件,它要求必须MFT中的系统记录如$MFT等正常该分区才能正常访问。其BPB 参数如下表所示:偏移地址

长度(字节)

常用值

0x0B

2

0x0002

每扇区字节数

0x0D

1

0x08

每簇扇区数

0x0E

2

0x0000

保留扇区

0x10

3

0x000000

总为0

0x13

2

0x0000

NTFS未使用,为0 0x15

1

0xF8

介质描述

0x16

2

0x0000

总为0

0x18

2

0x3F00

每磁道扇区数

0x1A

2

0xFF00

磁头数

0x1C

4

0x3F000000

隐藏扇区数

0x20

4

NTFS未使用,为0

0x28

8

0x4AF57F0000000000

扇区总数

0x30

8

0x0400000000000000

$MFT的逻辑簇号

0x38

8

0x54FF070000000000

$MFT Mirr的逻辑簇号

0x40

4

0xF6000000

每MFT记录簇数

0x44

4

0x01000000

每索引簇数

0x48

8

0x14A51B74C91B741C

卷标

0x50

4

0x00000000

检验和

[ 本帖最后由伐木者于 2007-6-19 20:11 编辑 ]

附件: 您所在的用户组无法下载或查看附件本文来自:创幻论坛 https://www.sodocs.net/doc/5c14362784.html,

UID55456 帖子9783 精华45 积分47222 威望0 金币0 阅读权限18 性别男来自有树砍的地方在线时间8494 小时注册时间2004-5-16 最后登录2010-4-5 查看详细资料

TOP

【推荐】权威专家推荐涨停股票请点击获取

伐木者

魏武王常所用论坛

超级版主

电脑家园区总版主

积分47222 威望0 注册时间2004-5-16

发短消息加为好友沙发大中小发表于 2007-6-17 20:55 只看该作者

How It Works --- Master Boot Record (主启动记录)

本文是介绍MBR的反编译程序的。MBR是放在硬盘的0柱面,0磁头(head),1扇区的

那一段区。MBR是由FDISK程序创建的。所有操作系统的FDISK程序都会创建类似的MBR 记录。MBR是多个分区的前提,每个MBR中包括了四个分区表记录。在您的计算机加电

之后,INT19被调用了。一般来说,INT19先从第一个软盘驱动器中读启动扇区记录。

如果在软盘中找到了启动的扇区,那么这个扇区的数据就被读入到内存的0000:7c00

地址上,INT19也跳到了这个地址上。但是,如果没有在软盘中找到这个扇区的话,INT 19就从第一个硬盘中去读。同样,如果成功的话,也会把MBR导入到相同的内存地址0000:7c00,INT19也会跳这个地址。MBR中包括的一段小程序是定出在分区表中的活动分区。这样的活动分区找到之,那个分区的启动扇区也被读入到0000:7c00地址,MBR程序

也转移到了这个地址。每一个操作系统都有固定的启动扇区的格式。在启动扇区里的程

序要能定出操作系统启动程序的位置(或是核心本身,或者是一个启动管理器),然后

将它读入内存。

另:在Ctrl-Alt-Del键被按下时,INT19也会被调用。在大多数系统中,Ctrl-Alt-Del三?nbsp; 键同时按下表示热启动您的计算机,回到INT19调用前的状态。

=====

数据存放的位置:

MBR程序放在偏移为0000的位置。

MBR消息放在偏移为008b的位置。

分区表放在偏移为00be的位置。

签名放在偏移为00fe的位置。

关于谁干什么事的总结:

如果一个活动分区找到了,这个分区的启动数据被读入到0000:7c00的位置,MBR程

序也跳到0000:7c00的位置。这段程序找到指向分区表的入口,入口描述的是这段分区是

怎样被启动的。启动程序用这些数据来决定用来启动的驱动器和这个驱动器分区在硬盘上

的位置。

如果没有找到这样的活动分区入口,ROM BASIC会转入INT 18的调用。所有其他的错

误导致系统的挂起,可以看HANG的标记。

注意(非常之重要):

1)活动分区入口的第一个字节的内容是80h。在INT13被调用之前,这个字节被导

入到DL寄存器中。当INT13被调用时,DL表示的是BIOS的设备号码。因为这个原因,由MBR 程序读的启动扇区只能从BIOS设备号码为80的硬盘中读入。这便是为什么不能从任何硬盘启动的原因。?nbsp;

2)MBR程序是用基于INT 13h (ah=02h)的中断的CHS来读取活动分区的启动扇区位置的。活动分区的启动扇区内的位置是在分区表内用CHS格式表明的。如果这个驱动器小于

528M,这个CHS一定要是(L-CHS,见BIOS TYPES文档)。在LBA中没有任何地址是有用的。(另一个LBA不能解决>528M问题的原因) 这点大家别信,西西。

====

这是一张整个MBR记录的表(hex 和ascii格式)

OFFSET 0 1 2 3 4 5 6 7 8 9 A B C D E F *0123456789ABCDEF*

000000 fa33c08e d0bc007c 8bf45007 501ffbfc *.3.....|..P.P...*

000010 bf0006b9 0001f2a5 ea1d0600 00bebe07 *................*

000020 b304803c 80740e80 3c00751c 83c610fe *...<.t..<.u.....*

000030 cb75efcd 188b148b 4c028bee 83c610fe *.u......L.......*

000040 cb741a80 3c0074f4 be8b06ac 3c00740b *.t..<.t.....<.t.*

000050 56bb0700 b40ecd10 5eebf0eb febf0500 *V.......^.......*

000060 bb007cb8 010257cd 135f730c 33c0cd13 *..|...W.._s.3...*

000070 4f75edbe a306ebd3 bec206bf fe7d813d *Ou...........}.=*

000080 55aa75c7 8bf5ea00 7c000049 6e76616c *U.u.....|..Inval*

000090 69642070 61727469 74696f6e 20746162 *id partition tab*

0000a0 6c650045 72726f72 206c6f61 64696e67 *le.Error loading*

0000b0 206f7065 72617469 6e672073 79737465 * operating syste*

0000c0 6d004d69 7373696e 67206f70 65726174 *m.Missing operat*

0000d0 696e6720 73797374 656d0000 00000000 *ing system......*

0000e0 00000000 00000000 00000000 00000000 *................*

0000f0 TO 0001af SAME AS ABOVE

0001b0 00000000 00000000 00000000 00008001 *................*

0001c0 0100060d fef83e00 00000678 0d000000 *......>....x....*

0001d0 00000000 00000000 00000000 00000000 *................*

0001e0 00000000 00000000 00000000 00000000 *................*

0001f0 00000000 00000000 00000000 000055aa *..............U.*

====

这是MBR的反编译程序:

这个扇区被导入到内存的0000:7c00位置,但是它又马上将自己重定位到0000:0060的位?nbsp;

BEGIN: # NOW AT 0000:7C00, RELOCATE

0000:7C00 FA CLI #禁止中断

0000:7C01 33C0 XOR AX,AX #设置堆栈段地址为0000

0000:7C03 8ED0 MOV SS,AX

0000:7C05 BC007C MOV SP,7C00 #设置堆栈指针为7c00

0000:7C08 8BF4 MOV SI,SP #SI = 7c00

0000:7C0A 50 PUSH AX

0000:7C0B 07 POP ES #ES = 0000:7c00

0000:7C0C 50 PUSH AX

0000:7C0D 1F POP DS #DS = 0000:7c00

0000:7C0E FB STI #开中断

0000:7C0F FC CLD #清除方向

0000:7C10 BF0006 MOV DI,0600 #DI = 0600

0000:7C13 B90001 MOV CX,0100 #移动 256 个word (512 bytes)

0000:7C16 F2 REPNZ #把 MBR 从 0000:7c00

0000:7C17 A5 MOVSW #移动到 0000:0600

0000:7C18 EA1D060000 JMP 0000:061D #跳至NEW_LOCATION

NEW_LOCATION:# NOW AT 0000:0600

0000:061D BEBE07 MOV SI,07BE #指向入口的第一个字节

0000:0620 B304 MOV BL,04 #有4个入口

SEARCH_LOOP1: # 查找活动分区

0000:0622 803C80 CMP BYTE PTR [SI],80 #是不是活动分区?

0000:0625 740E JZ FOUND_ACTIVE #是,栈指针指向7c00

0000:0627 803C00 CMP BYTE PTR [SI],00 #是不是不活动分区?

0000:062A 751C JNZ NOT_ACTIVE #跳转至NOT_ACTIVE

0000:062C 83C610 ADD SI,+10 #增量表指针加16

0000:062F FECB DEC BL #减少计数

0000:0631 75EF JNZ SEARCH_LOOP1 #循环

0000:0633 CD18 INT 18 #跳至 ROM BASIC

FOUND_ACTIVE: # 找到了活动分区

0000:0635 8B14 MOV DX,[SI] #设置DH/DL为INT 13

0000:0637 8B4C02 MOV CX,[SI+02] #设置CH/CL为INT 13

0000:063A 8BEE MOV BP,SI #保存表指针

SEARCH_LOOP2: # 确定是一个活动分区

0000:063C 83C610 ADD SI,+10 #增量表指针加16

0000:063F FECB DEC BL #减少计数

0000:0641 741A JZ READ_BOOT #如果表结束,跳转

0000:0643 803C00 CMP BYTE PTR [SI],00 #是不是非活动分区

0000:0646 74F4 JZ SEARCH_LOOP2 #是,循环

NOT_ACTIVE: # 多于一个活动分区

0000:0648 BE8B06 MOV SI,068B #显示 "Invld prttn tbl" DISPLAY_MSG: # 显示消息循环

0000:064B AC LODSB #取得消息的字符

0000:064C 3C00 CMP AL,00 #判断消息的结尾

0000:064E 740B JZ HANG #是

0000:0650 56 PUSH SI #保存SI

0000:0651 BB0700 MOV BX,0007 #屏幕属性

0000:0654 B40E MOV AH,0E #显示一个字符

0000:0656 CD10 INT 10

0000:0658 5E POP SI #恢复SI

0000:0659 EBF0 JMP DISPLAY_MSG #循环

HANG: #挂起系统

0000:065B EBFE JMP HANG #停在这儿

READ_BOOT: #读活动分区的数据

0000:065D BF0500 MOV DI,0005 #INT 13 的尝试次数

INT13RTRY: #INT 13的重试循环

0000:0660 BB007C MOV BX,7C00

0000:0663 B80102 MOV AX,0201 #读入一个扇区

0000:0666 57 PUSH DI #保存DI

0000:0667 CD13 INT 13 #把扇区读入0000:7c00 0000:0669 5F POP DI #重存DI

0000:066A 730C JNB INT13OK #没有INT 13,跳转

0000:066C 33C0 XOR AX,AX #调用INT 13 ,硬盘重置0000:066E CD13 INT 13

0000:0670 4F DEC DI #DI--

0000:0671 75ED JNZ INT13RTRY #如果非零,重试

0000:0673 BEA306 MOV SI,06A3 #显示"Errr ldng systm" 0000:0676 EBD3 JMP DISPLAY_MSG #跳转至显示循环

INT13OK: #INT 13 出错

0000:0678 BEC206 MOV SI,06C2 #"missing op sys"

0000:067B BFFE7D MOV DI,7DFE #指向签名

0000:067E 813D55AA CMP WORD PTR [DI],AA55 #签名是否正确?

0000:0682 75C7 JNZ DISPLAY_MSG #不正确,跳至显示消息循环0000:0684 8BF5 MOV SI,BP #设置SI

0000:0686 EA007C0000 JMP 0000:7C00 #跳转至启动扇区,SI指向分区表入

?nbsp;

#这儿是消息

0000:0680 ........ ........ ......49 6e76616c * Inval*

0000:0690 69642070 61727469 74696f6e 20746162 *id partition tab*

0000:06a0 6c650045 72726f72 206c6f61 64696e67 *le.Error loading*

0000:06b0 206f7065 72617469 6e672073 79737465 * operating syste*

0000:06c0 6d004d69 7373696e 67206f70 65726174 *m.Missing operat*

0000:06d0 696e6720 73797374 656d00.. ........ *ing system. *

#无用的数据

0000:06d0 ........ ........ ......00 00000000 * .....*

0000:06e0 00000000 00000000 00000000 00000000 *................*

0000:06f0 00000000 00000000 00000000 00000000 *................*

0000:0700 00000000 00000000 00000000 00000000 *................*

0000:0710 ******** 00000000 00000000 00000000 *................*

0000:0720 00000000 00000000 00000000 00000000 *................*

0000:0730 ******** 00000000 00000000 00000000 *................*

0000:0740 00000000 00000000 00000000 00000000 *................*

0000:0750 00000000 00000000 00000000 00000000 *................*

0000:0760 ******** 00000000 00000000 00000000 *................*

0000:0770 ******** 00000000 00000000 00000000 *................*

0000:0780 00000000 00000000 00000000 00000000 *................*

0000:0790 ******** 00000000 00000000 00000000 *................*

0000:07a0 00000000 00000000 00000000 00000000 *................*

0000:07b0 00000000 00000000 00000000 0000.... *............ *

#分区表从0000:07be开始。每一个分区表入口是16个字节这个表定义了一个单个的主分区并

是活动分区。

0000:07b0 ........ ........ ........ ....8001 * ....*

0000:07c0 0100060d fef83e00 00000678 0d000000 *......>....x....*

0000:07d0 00000000 00000000 00000000 00000000 *................*

0000:07e0 00000000 00000000 00000000 00000000 *................*

0000:07f0 00000000 00000000 00000000 0000.... *............ *

#最后两个字节一定包括了55aah的数据。

0000:07f0 ........ ........ ........ ....55aa *..............U.*

本文来自:创幻论坛 https://www.sodocs.net/doc/5c14362784.html,

主引导记录与硬盘分区

MBR结构图

主引导记录与硬盘分区 对于采用MBR型分区结构的硬盘,最多只能识别4个主要分区(Primary partition)。这里就需要引出扩展分区了。扩展分区也是主要分区的一种,但它与主分区的不同在于理论上可以划分为无数个逻辑分区。 Windows系统默认情况下,一般都是只划分一个主分区给系统,剩余的部分全部划入扩展分区。这里有下面几点需要注意: 在MBR分区表中最多4个主分区或者3个主分区+1个扩展分区,也就是说扩展分区只能有一个,然后可以再细分为多个逻辑分区。 在Linux系统中,硬盘分区命名为sda1-sda4或者hda1-hda4(其中a 表示硬盘编号可能是a、b、c等等)。在MBR硬盘中,分区号1-4是主分区(或者扩展分区),逻辑分区号只能从5开始。 在MBR分区表中,一个分区最大的容量为2T,且每个分区的起始柱面必须在这个disk的前2T内。你有一个3T的硬盘,根据要求你至少要把它划分为2个分区,且最后一个分区的起始扇区要位于硬盘的前2T空间内。[3]如果硬盘太大则必须改用GPT。 MBR分区表与GPT分区表的关系 与支持最大卷为2 TB(Terabytes)并且每个磁盘最多有4个主分区(或3个主分区,1个扩展分区和无限制的逻辑驱动器)的MBR磁盘分区的样式相比,GPT磁盘分区样式支持最大卷为128 EB(Exabytes)并且每磁盘的分区数没有上限,只受到操作系统限制(由于分区表本身需要占用一定空间,最初规划硬盘分区时,留给分区表的空间决定了最多可以有多少个分区,IA-64版Windows 限制最多有128个分区,这也是EFI标准规定的分区表的最小尺寸)。与MBR 分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT分区磁盘有备份分区表来提高分区数据结构的完整性。 GPT分区表:GPT,全局唯一标识分区表(GUID Partition Table),与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区,GPT可管理硬盘大小达到了18EB。只有基于UEFI平台的主板才支持GPT分区引导启动。

江民硬盘修复王使用方法

江民硬盘修复王及使用方法 江民硬盘修复王及使用方法 第一章kvfix.EXE 硬盘修复王使用方法 特别说明:原KV系列软件中的“硬盘修复王”的可执行文件名称是jmhdfix.exe 或者 jm-hdfix.exe ,目前统一修改成kvfix.exe 文件。原文件名jmhdfix.exe (jm-hdfix.exe) 不再使用。 1 硬盘修复王可修复的范围 当硬盘分区表坏,或有关数据丢失,或硬盘进不去时,我们用硬盘修复王可修复如下状态: 1.1 硬盘分区表数据(0扇区)丢失,BOOT系统引导区(63扇区)后的数据区完好,只是硬盘进不去。 能为您重建硬盘分区表,使硬盘一切正常。 1.2 硬盘分区表不正确(0扇区数据被病毒修改),BOOT系统引导区(63扇区)后的数据区完好,只是硬盘进不去。 能为您重建硬盘分区表,使硬盘一切正常。 1.3 分区表55AA标志丢失,硬盘进不去。

能为您修补55AA,使硬盘一切正常。 1.4 0扇区分区表被病毒搬在隐含扇区(硬盘前63个扇区)某一扇区上,原分区表被病毒加密,硬盘进不去。 能为您恢复硬盘分区表,使硬盘一切正常。 1.5 0扇区分区表被病毒加密,BOOT系统引导区(63扇区)后的数据区完好,只是硬盘进不去。 能为您重建硬盘分区表,使硬盘一切正常。 1.6 硬盘分区为C、D、E、...等几个区。硬盘分区表、C盘BOOT引导区、FAT表、目录表丢失,硬盘进不去。 能为您重建C盘分区表,可恢复C、D、E、...等几个区,D、E、...等几个区完好。 1.7 硬盘分区为一个C盘。硬盘分区表、DOS引导区、FAT表、目录表杂乱,硬盘进不去。能为您修复硬盘分区表。 1.8 硬盘分区为一个C盘,硬盘分区表、BOOT引导区丢失,硬盘进不去。 能为您重建硬盘分区表,修复BOOT引导区,完后,会建议您用与硬盘相同版本的系统软盘引导机器,既可自由出入硬盘。建议您: SYS C: 重传一次引导系统到C盘,硬盘即可引导。 1.9 硬盘主引导记录被病毒破坏,硬盘不能引导,软盘引导可出入硬盘。

硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区

硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区,电脑启动过程 2010-04-17 22:12 filex的文件系统看的云里雾里,还是先总结下FAT的一些基本知识吧。 硬盘结构 硬盘有很多盘片组成,每个盘片的每个面都有一个读写磁头。如果有N个盘片。就有2N个面,对应2N个磁头(Heads),从0、1、2开始编号。每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……。每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1、2、3……形成Cylinders×Heads×Sector个扇区。 主引导扇区 主引导扇区位于整个硬盘的0柱面0磁头1扇区{(柱面,磁头,扇区)|(0,0,1)},bios在执行自己固有的程序以后就会jump到MBR中的第一条指令。将系统的控制权交由mbr来执行。主引导扇区主要由三部分组成:主引导记录 MBR (Master Boot Record或者Main Boot Record)、硬盘分区表 DPT(Disk Partition Table)和结束标志字三大部分组成。 对于硬盘而言,一个扇区可能的字节数为128×2n (n=0,1,2,3)。大多情况下,取n=2,即一个扇区(sector)的大小为512字节。在总共512byte的主引导记录

中,MBR的引导程序占了其中的前446个字节(偏移0H~偏移1BDH),随后的64个字节(偏移1BEH~偏移1FDH)为DPT(Disk PartitionTable,硬盘分区表),最后的两个字节“55 AA”(偏移1FEH~偏移1FFH)是分区有效结束标志。 主引导记录MBR(master boot record) 主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标 志的分区上的操作系统,并将控制权交给启动程序。MBR是由分区程序(如Fdisk)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而能够实现多系统引导。 硬盘分区表DPT(Disk Partition Table) 硬盘分区表占据MBR扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。具体每个字节的定义可以参见硬盘分区结构信息。 结束标志字 结束标志字55,AA(偏移1FEH- 偏移1FFH)是MBR扇区的最后两个字节,是检验主引导记录是否有效的标志。 电脑启动过程 ?系统开机或者重启。 ?BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址

用MHDD清除主引导扇区55AA

用MHDD清除主引导扇区“55AA”标志 1.为什么要清除“55AA”标志 我们都知道,主引导扇区的最后两个字节为有效标志“55AA”,如果没有该标志,系统将会认为磁盘没有被初始化。因此,“55AA”标志对于磁盘来讲是非常重要的。但在数据恢复过程中,有时我们不得不在进入系统前将该标志进行清除。通常,在下列情况下可以考虑清除“55AA”标志。 ◆??需要恢复数据的硬盘存在病毒 当需要恢复数据的磁盘中存在病毒时,清除“55AA”标志可以使整个硬盘的分区失效,病毒也就无法继续传染。某些病毒的传染性非常强,当直接将染有这种病毒的硬盘挂接在正常的计算机上,进入操作系统后即开始传染,使数据恢复用机被病毒感染并导致死机,致使数据恢复工作无法进行。这时,我们可以在DOS下使用MHDD清除染毒磁盘的“55AA”标志,然后再进行后续的恢复工作。 ◆??重要位置处于坏扇区 如果磁盘存在坏扇区,而某个分区的引导记录扇区又恰好处在坏扇区位置时,将会使恢复用机很难顺利进入操作系统。即便进入操作系统后,也会因长时间无法读取出坏扇区的数据而不能进入就绪状态,甚至导致死机,使数据恢复工作无法进行。这时,我们也可以在DOS下先行使用MHDD将故障盘的“55AA”标志清除后再进行后续的工作。 ◆??磁盘逻辑参数矛盾 磁盘的逻辑参数存在矛盾时,也有可能导致数据恢复用机无法正常进入操作系统,或进入操作系统后即死机。比如,各个分区间的大小及位置关系矛盾,或某个分区引导扇区中的BPB参数出现错误,都有可能导致系统死机。清除“55AA”标志后,磁盘的主引导扇区失效,分区表也就失去了作用。这时操作系统会将磁盘识别为一个没有被初始化的磁盘进行加载,不会再调用分区表及各个逻辑分区的参数,也就不会发生死机的现象。 2.清除“55AA”标志的方法 使用MHDD清除“55AA”标志非常简单,因为它提供了一个专门用于清除和写入“55AA” 标志的命令“switchm br”。 步骤1 进入MHDD程序并选择要操作的磁盘,然后在程序界面中输入命令swichmbr 后按Enter键,即出现图9.5所示内容。 可以看到,执行这个命令后,程序读取磁盘的0号扇区,并提示找到了AA55。我们说“55 AA”是在十六进制编辑软件中看到的字节放置顺序,这是使用little-endian格式存放的顺序,真正的十六进制则为0xAA55,所以MHDD将其表述为AA55。 然后,程序询问是否要清除这个标志,要清除则按“Y”键,否则按“N”键。 步骤2 按“Y”后程序立即执行清除操作,清除成功后即显示“Done”,表示操作成功完成。 如图9.6所示。

硬盘主引导记录(MBR)及其结构详解

硬盘主引导记录(MBR)及其结构详解 硬盘的0柱面、0磁头、1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR)。该记录占用512个字节,它用语硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统区。 1.MBR的读取 硬盘的引导记录(MBR)是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。 用INT13H的读磁盘扇区功能的调用参数如下: 入口参数:AH=2 (指定功能号) AL=要读取的扇区数 DL=磁盘号(0、1-软盘;80、81-硬盘) DH=磁头号 CL高2位+CH=柱面号 CL低6位=扇区号 CS:BX=存放读取数据的内存缓冲地址 出口参数:CS:BX=读取数据存放地址 错误信息:如果出错CF=1 AH=错误代码 用DEBUG读取位于硬盘0柱面、0磁头、1扇区的操作如下: A>DEBUG -A 100 XXXX:XXXX MOV AX,0201 (用功能号2读1个扇区) XXXX:XXXX MOV BX,1000 (把读出的数据放入缓冲区的地址为CS:1000) XXXX:XXXX MOV CX,0001 (读0柱面,1扇区) XXXX:XXXX MOV DX,0080 (指定第一物理盘的0磁头) XXXX:XXXX INT 13 XXXX:XXXX INT 3 XXXX:XXXX (按回车键) -G=100 (执行以上程序段) -D 1000 11FF (显示512字节的MBR内容)

硬盘无法引导系统的原因及解决办法

硬盘无法引导系统的原因及解决 常见的硬盘故障——无法引导系统统 在启动计算机后,看不到Windows启动画面,而是出现了“Non-System disk or disk error,replace disk and press a key to reboot”(非系统盘或磁盘出错)提示信息,这即是常见的硬盘故障——无法引导系统。 (一)硬故障导致硬盘无法引导 所谓硬盘硬故障,是指因为连接、电源或硬盘本身出现硬件故障而导致的硬盘故障。当发现硬盘无法引导时,首先得从硬件下手。 在大多数硬盘引导失败的故障中,硬盘本身的连接或设置错误是最常见的故障原因。因此,在遇上引导故障后,可在启动电脑时,按下Del键进入BIOS设置,在主界面中移动光标到“Standard CMOS Features”(标准CMOS设置)选项,回车进入次级设置界面。在该界面中注意观察IDE端口上是否能看到当前系统中所安装的硬盘,“WDC WD800BB-32CCB0”就是系统中的硬盘。 如果能够看到硬盘型号,并且型号没有出现乱码,那么可以选中该硬盘并回车,进入硬盘属性设置界面,将“IDE Primary Master”(第一IDE接口)和“Access Mode”(存取模式)选项均设置为“Auto”(自动)。移动光标到“IDE HDD Auto-Detection”(自动检测IDE硬盘)选项并按下回车键,以便让主板自动检测硬盘,如果此时能显示出相应硬盘信息,例如,Capacity(容量)、Cylinder(柱头数)等,则说明硬盘的物理连接及BIOS设置正确。 如果在“Standard CMOS Features”中看不到硬盘盘符及相关信息,或者硬盘的型号字符变成了乱码,例如,本来应该是“IC35L060AVVAWA07-O”,可是现在却变成了“IC#5L0&0AVFA 7-0”,再查看硬盘的参数,也什么都没有,那么一般说来有两种原因: 注意:如果系统中安装了多块硬盘,则还需要检查硬盘的跳线设置情况,以免因为跳线设置错误而导致系统无法检测到硬盘的存在。硬盘跳线的设置方法可以通过查看说明书获得。 这种硬盘硬故障导致的硬盘无法引导,其故障大都出现在连接数据线或IDE接口上,硬盘本身故障的可能性并不大,因此一般都可通过重新插接硬盘数据线或者改换IDE口等进行替换试验,就会很快发现故障所在。另外,BIOS中的硬盘类型正确与否直接影响硬盘的正常使用。现在的机器都支持“IDE Auto Detect”(自动检测)功能,可自动检测硬盘的类型,对于普通用户而言,建议通过该功能来自动设置硬盘参数。 (二)软故障导致硬盘无法引导 硬盘软故障也就是硬盘本身并没有问题,只是由于某些设置或参数被破坏而出

主引导扇区中了病毒

硬盘主引导扇区中了病毒,如何进行处理 前不久遇到一例硬盘主引导扇区中了病毒,其问题出现情况如下: 1、开机加电自检,检测到硬盘那一步时,检测时间比平时稍长。 2、主机自检完成后,启动操作系统,出现“starting ……”,一直等都无反应。 3、用软盘或光盘启动也只能启动到“starting ……”,视具体启动盘,出现提示也不一样,但都不能正常启动操作系统。 4、在BIOS设置中,将此盘设为“NONE”,才能用(DOS、9 5、98)启动软盘或启动光盘启动操作系统。但桌面上“我的电脑”中没有此盘;如挂上双硬盘,将故障硬盘设为“NONE”,用NT 启动,启动后亦看不到此盘(因为正常情况下,即使BIOS设置中某硬盘设为“NONE”,NT启动后,“我的电脑”中也能正常显示该硬盘);如用LINUX安装光盘启动安装,则能找到该硬盘,但提示此硬盘出错,不能进行分区。 5、低极格式化此盘,一般时间至少都需要10个小时左右才能格式完,但有的低格显示一切正常,如果重新启动,在BIOS设置中设有此盘,用软盘或光盘启动,也不能正常启动,只能到“starting……”处。(如果你的硬盘故障与前四项相同,请勿执行BIOS设置中的低级格式化,直接用以下的解决方法,这样硬盘上的数据都不会丢失) 从此现象看,应该是硬盘主引导扇区中了病毒,即使用杀病毒软件的功能,如KV300,他的软件中有一功能,能将硬盘的主引导扇区备份写回硬盘。但要想启动机子,BIOS中只能将此盘设为“NONE”,而DOS、95、98启动后,因为没有此硬盘,杀毒软件也找不到此盘,所以想到此款病毒于杀病毒软件来说,也只能说再见了。 解决方法是: 1、用一台能正常启动的机子制作启动软盘一张,并将c:\windows\command\debug.exe文件拷贝到启动软盘。 2、准备一张空白的已格式化的软盘。 3、用能正常启动的机子启动,主板自检完后,启动操作系统之前,按F8键进入DOS模式,将软盘放入软驱。执行以下步骤:(此操作是将好硬盘的主引导区内容备份到软盘,这台机子的硬盘最好与中了病毒的硬盘型号一样,即使不同,也可以。) cd c:\windows\command (红色表示自己输入的内容) debug -A 100 11BA:0103 mov bx,1000 11BA:0106 mov cx,1 11BA:0109 mov dx,80 11BA:010C int 13 11BA:010E int 3 11BA:010F ;直接回车

0磁道损坏修复的两种方法

0磁道损坏修复的两种方法 “0”磁道处于硬盘上一个非常重要的位置,硬盘的主引导记录区(MBR)就在这个位置上。MBR位于硬盘的0磁道0柱面1扇区,其中存放着硬盘主引导程序和硬盘分区表。在总共512字节的硬盘主引导记录扇区中,446字节属于硬盘主引导程序,64字节属于硬盘分区表(DPT),两个字节(55 AA)属于分区结束标志。由此可见,“0”磁道一旦受损,将使硬盘的主引导程序和分区表信息遭到严重破坏,从而导致硬盘无法自举。 “0”磁道处于硬盘上一个非常重要的位置,硬盘的主引导记录区(MBR)就在这个位置上。MBR位于硬盘的0磁道0柱面1扇区,其中存放着硬盘主引导程序和硬盘分区表。在总共512字节的硬盘主引导记录扇区中,446字节属于硬盘主引导程序,64字节属于硬盘分区表(DPT),两个字节(55 AA)属于分区结束标志。由此可见,“0”磁道一旦受损,将使硬盘的主引导程序和分区表信息遭到严重破坏,从而导致硬盘无法自举。“0”磁道损坏也属于硬盘坏道,只不过由于它的位置太重要,因而一旦遭到破坏,就会产生严重的后果。 1.硬盘“0”磁道损坏后的症状 当硬盘“0”磁道损坏后:系统自检能通过,但启动时,分区丢失或者C盘目录丢失,硬盘出现有规律的“咯吱……咯吱”的寻道声,运行SCANDISK扫描C盘,在第一簇出现一个红色的“B”;Fdisk 等分区软件

找不到硬盘、利用低版本的DM进行分区时,程序“死”在0磁道上;在进行“Format C:”时,屏幕提示0磁道损坏或无休止地执行读命令“Track 0 Bad”。 2.解决硬盘“0”磁道损坏的思路 磁头总是把“0”磁道作为寻道的基准点,如果“0”磁道出现物理损坏,磁头定位机构会因找不到“0”磁道,使硬盘自举失败。因此,在解决硬盘“0”磁道损坏问题时,一般都采取“以1代0”的方法,也就是在划分硬盘分区时,重新定义“0”磁道,将原来的“1”磁道定义为逻辑上的“0”磁道,避开已损坏的“0”磁道。 3.通过工具软件解决硬盘“0”磁道损坏 (1)通过DM万用版解决 首先从网上下载DM万用版并制作好DM启动软盘,然后执行DM 并进入其主界面。在主界面中按下Alt+M组合键进入DM的高级模式,将光标定位到“(E)dit/View partitions”(编辑/查看分区)选项,按回车键之后,程序要求选择需要修复的硬盘,选中硬盘,按回车便进入了该硬盘的分区查看界面。如图1所示。 在分区列表框中选中“1”号分区,此时上面的分区信息栏将显示该分区信息,例如分区格式、容量、开始的柱面、结束的柱面等。此时需要记住开始柱面中的“0”和结束柱面序号“2489”。保持光标定位在1号分区上,然后按下Del键删除该分区,在出现的确认删除分区的界面中选择“Yes”并回车,此时1号分区便删除了。

几个最实用的硬盘修复解决方法

几个最实用的硬盘修复解决方法 硬盘修复(1) 在研究硬盘故障的具体处理方法之前,我们有必要先了解一些硬盘相关的基础知识。 主引导记录区MBR 硬盘是一种磁介质的外部存储设备,在其盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干同心圆就被划分成磁道(Track),每个磁道又被划分为若干个扇区(Sector),数据就按扇区存放在硬盘上。硬盘的第一个扇区(0道0头1扇区)被保留为主引导扇区。主引导扇区内主要有两项内容:主引导记录(对操作系统进行引导)和硬盘分区表。计算机启动时将读取该扇区的数据,并对其合法性进行判断(扇区最后两个字节是否为55AA或AA55),如合法则跳转执行该扇区的第一条指令。所以硬盘的主引导区常常成为病毒攻击的对象,从而被篡改甚至被破坏。硬盘控制器 硬盘控制器是硬盘及其他具有相同接口规范的外部设备(如CD-ROM驱动器)的管理者,由它来完成驱动器与内存之间的命令及数据传输。硬盘控制器发生故障或连接不正确将会导致硬盘无法正常工作。 CMOS中的硬盘信息 在计算机的CMOS中也存储了硬盘的信息,主要有硬盘类型、容量、柱面数、磁头数、每道扇区数、寻址方式等内容,对硬盘参数加以说明,以便计算机正确访问硬盘。 当CMOS因故掉电或发生错误时(启动时一般会提示“CMOS Checksum Error”或类似信息),硬盘设置可能会丢失或错误,硬盘访问也就无法正确进行。这种情况我们就必须重新设置硬盘参数,如果事先已记下硬盘参数或者有某些防病毒软件事先备份的CMOS信息,只需手工恢复即可;否则也可使用BIOS设置(Setup)中的“自动检测硬盘型”(HD Type Auto Detection)的功能,一般也能得到正确的结果。 不是问题的问题 很多时候我们的电脑会出现一些看似不得了的毛病,其实只是自己吓自己,也就是拨拨线头、动动跳线的举手之劳。常见的让你空出一身冷汗的硬盘不自举问题主要有以下两种: 系统不承认硬盘: 此类故障最为常见,开机自检完成时提示以下出错信息: HDD controller failure Press F1 to Resume 上述E文意指“硬盘无法启动”,甚至有时用CMOS中的自动监测功能也无法发现硬盘的存在。当出现上述信息时,应该重点先检查与硬盘有关的电源线、数据线的接口有无损坏、松动、接触不良、反接等现象,此外常见的原因就是硬盘上的主从跳线是否设置错误。 检查、排除方法: 重新插拔硬盘电源线、数据线或者将数据线改插其他IDE口进行替换试验。

重建硬盘主引导区

重建硬盘主引导区,尝试用光盘引导后进入DOS系统,盘符后使用命令:fdisk /mbr 修复引导扇区 1、重建MBR是重建分区表,fdisk/mbr是恢复引导代码,即MBR扇区的前446个字节 2、使用DiskGenius步骤(1)下载个WINPE工具,记录成启动光盘,用它来启动计算机(2)进入dos系统。运行“DiskGenius”软件,据说这是中国人编的一款软件,非常好用。在WINPE环境下运行DiskGenius。(3)选择“硬盘-重建主引导记录MBR”,重启即可。不会重写只是恢复默认对系统和其他没有影响用fdisk /mbr 中间有空格在DOS下 正好本人的pe盘里面有DiskGenius这个软件。于是在pe里面打开DiskGenius 用硬盘-重建主引导记录MBR。最终解决了问题。 试用了两次成功,第一次失败。第一次是这样的。我用DiskGenius先把c盘格式化后,然后选择重建主引导记录MBR,然后重启。电脑启动死机。第二次,用DiskGenius选择重建主引导记录MBR,然后格式化C盘。后用Ghost手动还原系统。后重启电脑出现熟悉的安装界面。实验成功。 新更换硬盘使用ghost进行硬盘对拷,将新硬盘装于电脑上会提示missing mbr helper,带用户使用xp安装版光盘引导,出现选择列表,有安装系统,修复等,选择修复进入控制恢复台,选择操作系统,输入管理员密码后输入fixmbr命令会提示是不是重新写入mbr 确定后提示成功,exit退出,重启电脑发现可以正常启动了 MBR可以重写的,很简单,使用PM分区工具,很小的,里面有重写MBR选项,关键是你能不能进系统了 典型的NTLDR丢失,按照下面步骤进行修复:

硬盘主引导扇区详解

硬盘主引导扇区详解 分类:计算机2010-10-28 11:04 31人阅读评论(1) 收藏举报 主引导扇区位于整个硬盘的0柱面0磁头1扇区,包括硬盘主引导记录MBR(Master Boot Record)和分区表DPT(Disk Partition Table)。主引导扇区有512个字节,MBR占446个字节(偏移0000--偏移1BDH),DPT 占64个字节(偏移1BEH--偏移1FDH),最后两个字节“55,AA”。大致的结构如下图: |------------------------------------------------|0000 | Main Boot Record | | | | 主引导记录(446字节) | | | | |01BD |------------------------------------------------|01BE | | | 分区信息1(16字节) |01CD |------------------------------------------------|01CE | | | 分区信息2(16字节) |01DD |------------------------------------------------|01DE | | | 分区信息3(16字节) |01ED |------------------------------------------------|01EE | | | 分区信息4(16字节) |01FD

|------------------------------------------------|01FE | | | 55 | AA | |------------------------------------------------|01FF 主引导记录中包含了硬盘的一系列参数和一段引导程序。引导程序主要是用来在系统硬件自检完后引导具有激活标志的分区上的操作系统。它执行到最后的是一条JMP指令跳到操作系统的引导程序去。这里往往是引导型病毒的注入点,也是各种多系统引导程序的注入点。但是由于引导程序本身完成的功能比较简单,所以我们可以完全地判断该引导程序的合法性,因而也易于修复。像命令fdisk/mbr可以修复MBR和 KV3000这类软件可以查杀任意类型的引导型病毒,就是这个原因。 分区表由4个16字节的分区信息表组成。每个信息表的结构如下: 偏移长度所表达的意义存贮字节位内容及含义 第1字节引导标志。若值为80H表示活动分区,若值为00H表示非活动分区。 第2、3、4字节本分区的起始磁头号、扇区号、柱面号。其中: 磁头号——第2字节; 扇区号——第3字节的低6位; 柱面号——为第3字节高2位+第4字节8位。 第5字节分区类型符。 00H——表示该分区未用(即没有指定); 06H——FAT16基本分区; 0BH——FAT32基本分区; 05H——扩展分区; 07H——NTFS分区; 0FH——(LBA模式)扩展分区(83H为Linux分区等)。 第6、7、8字节本分区的结束磁头号、扇区号、柱面号。其中: 磁头号——第6字节;

怎样修复引导扇区

怎样修复引导扇区 由于处理物理坏道的方法比较复杂,这里我们分两种情况进行不同方法的处理: 1、坏道不在“0”扇区 所谓“0”扇区指的是硬盘的物理第一扇区,这个扇区又被称为主引导扇区,因为硬盘的主引导文件就写在此扇区,若坏道出现在此扇区不仅系统无法引导,而且用通常方法也无法安装系统。当硬盘上出现了一个坏道后,如果继续对有坏道的分区进行读写,很容易使与坏道相邻的磁盘介质遭到物理损坏,结果会出现更多的坏道。因此总的处理原则就是:将物理坏道与正常磁道隔离。原理是用工具软件把坏道所在区域空出,对此区域不进行磁盘使用空间的分配。由于磁盘空间不被分配,用户也无法再次访问该区域,从而防止坏道的蔓延。我们可以通过以下几种方法实现对硬盘坏道的隔离: A、借助工具软件。修复这类硬盘故障的软件多如牛毛,PartitionMagic工具虽然非常强劲,便需要一些对很强的计算机功底的人才能够完成,因此不适合初学者使用,这里我们重点来介绍一下FBDISK,这是一个DOS下专门发现坏道并隔离后重新分区的软件,只有一个文件,仅仅几十K。操作很简单,先制作一张能启动到DOS的软盘,把FBDISK放在软盘上,用它引导系统,注意系统上只能挂一个要修理的硬盘,并且将其接在主硬盘的线上。进入DOS后,只要能发现硬盘,就运行FBDISK好了,这个小程序先会对硬盘按磁道进行扫描,发现坏道就显示出来,同时还会估计总体扫描完要用多长时间,全部扫描完后,程序会根据扫描结果和坏道情况给你提出一个全新的分区方案来,如果你接受就按Y,否则不会对你的硬盘进行处理。这个软件不错,但是可能比较大手,笔者曾有一次用它把一个10G硬盘扫完后,报告说只有300M可以使用,但是我用方法二后,却找出了近2G的完好空间。所以大家还是按需使用。 B、用FDISK和格式化命令FORMAT。具体的方法是这样的,第一要搞清硬盘的容量,对于有问题的磁盘先用FDISK分成一个C盘,再用FORMAT进行格式化,当碰到无法修复的坏块时面对FORMAT 总是试图修复,这时记录下进行的百分比。然后按CTRL+BREAK强行终止任务,用磁盘总容量×百分比,得出这部分正常的磁盘容量,用FIDSK划出一个逻辑磁盘,再将后面的磁盘估计出坏道的大概大小,大概比例为10%左右,再划分一个逻辑盘。这个小盘不用格式化,在总工作完成后将其删除,这样就将坏块给全部跳过去了。这样可能会损失一些好道,但对大容量硬盘来说无足轻重,而硬盘使用起来更加稳定。

主引导记录(MBR)的反汇编分析

主引导记录(MBR)的反汇编分析 1.)首先启动机器到实模DOS下,加载NTFS4DOS程序使程序可以读NTFS分 区。 2.)转到引导系统启动的主分区。输入C:回车转到主分区,输入DEBUG启动到DEBUG界面 3.)开始备份MBR主引导记录, -a 100 ;指定开始汇编的位置 mov ax,0201 ;AH=功能号0=复位磁盘2=读磁盘3=写磁盘AL=读取的扇区 mov bx,7c00 ;bx=读入的内存地址 mov cx,0001 ;ch=磁道号cl=扇区号 mov dx,0080 ;dh=磁头号dl=驱动器号80h:硬盘C int 13 调用BIOS中断 int 3 异常中断 -g =100 ;运行地址100处的程序

-d 7c00 l100 ;L加载文件到内存,D转储100个字节长度n MBR.DA T ;指定写入文件的名称 -rbx ;显示BX寄存器的内容 :0 改变BX寄存器的值为零 -rcx ;显示CX寄存器的内容 :200 改变CX寄存器的值为200 -W 7c00 ;将BX和CX指定的字节数的内容写入文件 保存MBR备份到C盘根目录 4.)先用Q退出DEBUG再重新进入下 5.)加载备份文件到内存

6.)开始用自己写的编码代替从7C00开始27个字节的编码Mov ax,cs ;代码段地址送AX Mov sp,7c00 ;7C00送堆栈寄存器 Sti ;开中断 Jmp 7c0c ;跳转到7C0C -T =100 ;从地址100处单步跟踪 单步跟踪输入T回车 一直跟到跳转到7C0C处

CLD ;DF方向标志置零DF=0串操作指令中操作数地址自动递增MOV SI,7C1B ;7C1B地址送SI源变址寄存器 MOV DI,061B ;061B地址送DI目的变址寄存器 PUSH AX ;AX里保存着CS代码段的地址 PUSH DI ;将DI=061B压栈位将来弹出到IP做准备MOV CX,01E5 ;循环传送的字节数 REPZ MOVSB ;循环把7C1B地址01E5字节的数据复制到 061B地址 单步跟踪到REPZ MOVSB 后面是一个循环指令用T 1E5执行过去 继续T一下 看下现在各个寄存器里的值RETF会从堆栈里弹出SP到IP 弹出

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

硬盘主引导扇区(MBR、DPT、DBR、BPB)详解.txt“恋”是个很强悍的字。它的上半部取自“变态”的“变”,下半部取自“变态”的“态”。硬盘主引导扇区(MBR、DPT、DBR、BPB)详解 引用: 网上收集的资料,放到这里来学习,这方面登山人大哥是高手,有空指点一下喽 硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR),该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。MBR的内容是在硬盘分区时由分区软件(如FDISK)写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它;它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统(图一)。 MBR由三部分构成: 1.主引导程序代码,占446字节 2.硬盘分区表DPT,占64字节 3.主引导扇区结束标志AA55H 一、硬盘的主引导程序代码是从偏移0000H开始到偏移01BDH结束的446字节;主引导程序代码包括一小段执行代码。启动PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区MBR的内容到内存指定单元0:7C00 首地址开始的区域,并执行MBR程序段。 主引导代码实现下列功能: 1.扫描分区表查找活动分区; 2.寻找活动分区的起始扇区; 3.将活动分区的引导扇区读到内存; 4.执行引导扇区的运行代码。 如果主引导代码未完成这些功能,系统显示下列错误信息: Invalid partition table Error loading operating system Missing operating system 二、硬盘分区表DPT是从偏移01BEH开始到偏移01FDH结束的64字节(图二); 硬盘分区表分为四小部分,每一小部分表示一个分区的信息,占16字节。在这里我们可以看出,硬盘的总分区数为什么不能大于4。其中可激活分区数不得大于3,扩展分区数不得大于1,当前活动分区数必须小于等于1。 分区表的每一分区的第0个字节是自举标志,其值为80H时,表示该分区是当前活动分区,可引导,其值为00H时,表示该分区不可引导。 第4字节是分区类型(图三)。 每一分区的第1至第3字节是该分区起始地址。其中第1字节为起始磁头号(面号);第2字节的低6位为起始扇区号,高2位则为起始柱面号的高2位;第3字节为起始柱面号的

手工修复硬盘分区表

手工修复硬盘分区表 1.准备好工具diskedit和引导盘。 2.检查CMOS配置是否正确。 检查硬盘设置,在CMOS中记下 CYLINDER,SECTOR和 HEAD参数. 此处只考虑有多个逻辑硬盘硬盘的分区情况: 如果不知道各个逻辑硬盘的具体情况,用DISKEDIT 中的Find菜单寻找字符串 00 00 00 55 AA,并判断是否为EXTEND分区的分区信息,如果找到,即可知 道Extend分区的起始位置,并可推算DOS主分区的起始和结束位置,并推算 相关的参数,由于备逻辑盘是连续的,由 EXTEND分区信息,可找到各逻辑硬 盘的分区信息,并推算出EXTEND分区的结束位置及相关参数,将推算出的相 关信息写入主分区表中,即可恢复分区表。 注意:EXTEND分区为05,DOS分区为04或06。对FAT32则为0B和0C. 用DISKEDIT中的OBJECT菜单选择PHYSICAL SECTOR,键入0,0,1,即可进入主 引导区。用VIEW菜单中的AS PARTITION TABLE项可看分区结构。一般情况下 主引导区的起始位置SIDE=1 SECTOR=1 ,EXTEND分区的起始位置SIDE =0 SECTOR=1,而ENDING LOCATION处SIDE和 SECTOR必然是最大值。可直接在该分区表中修改数据。光标移至任意处回车,可显示该数据处的分区结构, 并可通过F2和F6切换。后一个分区的STARTING LOCATION必然是前一个分区ENDING LOCATION的下一个扇区。NUMBER OF SECTORS可通过分区的ENDING LOCATION和STARTING LOCATION计算出,例如,STARTING LOCATION的SIDE=1,CYLINDER=0,SECTOR=1,ENDING LOCATION 的SIDE=7,CYLINDER=262,SECTOR=39则通过以下式子计算: 主引导区的RELATIVE SECTORS 是SECTOR的最大值。 EXTEND分区的RELATIVE SECTORS=主引导区的 RELATIVE SECTORS+主引导区 的NUMBER OF SECTORS。 EXTEND分区的NUMBER OF SECTORS=本分区的 ENDING LOCATION (换算为SECTORS)-本分区的RELATIVE SECTORS。 下面是某116M硬盘(参数为CYLINDER=760 HEAD=8 SECTOR=39)共分有: C盘(DOS引导盘)大小为40M DOS扩充盘大小为76M DOS扩充盘上的逻辑驱动器为: D: 32M E: 3M F: 4M G:6M H:7M I:7M J:17M Starting Location Ending Location Relative Number of System Boot Side Cylinder Sector Side Cylinder Sertor Sertors Sertors BIGDOS Yes 1 0 1 7 262 39 39 82017 h1 c1 s1 h2 c2 s2 r1 n1 EXTEND No 0 263 1 7 760 39 82056 155376 h3 c3 s3 h4 c4 s4 r2 n2 unused No 0 0 0 0 0 0 0 0 unused No 0 0 0 0 0 0 0 0 即:r1=s2

MBR、主引导扇区,主分区、扩展分区、逻辑分区,活动分区、引导分区、系统分区、启动分区的区别详解

MBR、主引导扇区,主分区、扩展分区、逻辑分区,活动分区、引导分区、系统分区、启动分区的区别详解 什么是MBR和主引导引导扇区?什么是主分区、扩展分区、逻辑分区?什么是活动分区、引导分区、系统分区、启动分区?一下子罗列这么多概念,恐怕很多人都搞不清它们的区别和联系吧。网上虽然不少解释,但很多是模棱两可甚至是错误的,反而越弄越糊涂。煞费苦心的把这一大串概念研究了很长时间,试图搞明白,为了以后查阅方便,于是把对这些概念的理解总结了一下。而要想分清这些概念,真要费一点脑筋啊! 一、MBR和主引导扇区 首先简要介绍MBR和主引导扇区的关系。 主引导扇区是硬盘0号柱面,0号磁头的第一个扇区,大小为512字节。(注:硬盘可以用柱面、磁头和扇区定位) MBR,占用主引导扇区的前446字节,紧随其后的64字节是分区表DPT(Disk Partition Table),最后还剩两个字节则恒为55AA,表示结束符号。(下图,演示了它们的位置关系)

然后,具体说说MBR和分区表。 MBR,全称为Master Boot Record,即硬盘的主引导记录。MBR,共446字节,一般在操作系统安装时写入,但它并不属于操作系统。MBR就是一段引导程序,用于检测磁盘的分区合法性和加载操作系统,它的重要作用就是识别活动分区,并引导操作系统。 分区表DPT,全称为Disk Partition Table,共64字节,记录了硬盘有多少分区以及分区的各种属性。由于一个分区的信息要占用16字节,所以分区表只能定义4个分区,这就是为什么我们说硬盘一般最多只能分为4个主分区(这里说“一般”是对基本磁盘而言,而对于动态磁盘则无此限制,但大部分都在使用基本磁盘,可以暂不考虑)。 分区表的16个字节意义如下: 计算机开机后BIOS加电自检,一切正常后,找到第一个启动设备(一般就是硬盘),然后从这个启动设备的主引导扇区读取MBR。MBR这段引导程序识别活动分区,引导操作系统。 二、主分区、扩展分区、逻辑分区 正如前面所讲,主分区是由主引导扇区中64字节的分区表所定义的,最多只能有4个。但为了满足更多分区的需求,便产生了扩展分区。形式上,如果拥有扩展分区,就必须牺牲一个主分区,而且最多有一个扩展分区,也就是说:主分区+扩展分区<=4 并且扩展分区<=1。因此扩展分区也可以看成一种特殊的主分区。

修复硬盘主引导记录

★修复硬盘主引导记录★ 由于病毒的破坏或操作上的失误,使硬盘主引导记录和分区表损坏,硬盘将无法启动。 ①KV3000 作为一款著名的杀毒软件,KV3000同样具有非常强大的主引导记录和分区修复的功能。我们可以先用软盘启动后,执行KV3000,按下F6键,就可查看已经不能引导的硬盘隐含扇区,即查看硬盘0面0柱1扇区主引导信息是否正常,如果在硬盘的0面0柱1扇区,没有找到关键代码,即硬盘分区表关键代码“80”“55 AA ”,那么硬盘本身将不能引导,即使软盘引导后也不能进入硬盘。这时,可按动翻页键PgDn或PgUp键,在硬盘的隐含扇区内查找,如有,会在表中出现闪动的红色“80”和“55AA”,并响一声来提示你,下行会出现一行提示,“F9 = Save To Side 0 Cylinder 0 Sector 1 !!!”。这时,按一下“F9”键,就可将刚找到的、即在表中显示出的原硬盘主引信息, 覆盖到硬盘0面0柱1扇区中,然后,机器会重新引导硬盘,恢复硬盘的起动性能。 ②FDISK 用FDISK/MBR覆盖主引导记录的代码区,但不重建主分区表。适用于主引导记录被引导区型病毒破坏或主引导记录代码丢失,但主分区表并未损坏的情况下。注意:FDISK/MBR并不适用于清除所有引导型病毒,因此要慎用。 ③FIXMBR FIXMBR是专门用于重新构造主引导扇区的小工具,使用方法也简单。直接运行FIXMBR的情况下它将检查MBR结构,如果发现系统不正常则会出现是否进行修复的提示。如果回答“YES”,它将搜索分区。当搜索到相应的分区以后,系统会提示是否修改MBR,回答“YES”则开始自动修复,如果搜索的结果不对,可使用/Z开关符,重新启动系统将恢复到原来的状态。如果想详细了解FIXMBR的使用方法,可以用/H开关来查看。 ★修复硬盘分区表★ ①KV3000 在KV3000的主菜单上,按下F10键,就可对系统的有关参数和硬盘分区表快速测试,如果硬盘分区表不正常,KV3000会先将坏分区表保存到软盘上以防不测,再自动重建硬盘分区表,使硬盘起死回生。 但如果硬盘只有一个分区,而且文件分配表(FAT表)、文件目录表(ROOT表) 严重损坏,数据已经都没有了。那么,用这个功能即使恢复了C盘分区表,也不能使C盘引导,数据也不能恢复。这时需要配合其它的硬盘修复工具来恢复数据。如果硬盘还有D、E、...等几个分区,一般情况下,KV3000能找回后面没有被破坏掉的分区,重建一个新的硬盘分区表,然后,再用DOS系统软盘引导机器后,就可进入硬盘后面几个分区,将数据备出后,再将硬盘重新分区、格式化。

相关主题