找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 30|回复: 0

一哥MBR(硬盘主引导记录分析)

[复制链接]

32万

主题

0

回帖

96万

积分

超级版主

积分
964681
发表于 2024-12-6 03:47:15 | 显示全部楼层 |阅读模式
软件标签:  mbr分区   分区软件   硬盘工具
mbr分区软件是一款专门用来解决硬盘分区问题的软件哦,小巧方便,使用起来功能也很强大,感兴趣的朋友赶紧来绿色资源网下载吧!
mbr分区软件介绍
mbr,全称为master boot record,即硬盘的主引导记录。

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

硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录mbr)。它由三个部分组成,主引导程序、硬盘分区表dpt(disk partition table)和硬盘有效标志(55aa)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是partition table区(分区表),即dpt,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55aa。

mbr是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它,但可以通过命令来修改和重写,如在minix3里面,可以用命令:installboot -m /dev/c0d0 /usr/mdec/masterboot来把masterboot这个小程序写到mbr里面,masterboot通常用汇编语言来编写。我们也可以用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操作系统下,例如xp,2003,vista,windows7,有微软提供的接口直接读写mbr;

file * fd=fopen("\\.\physicaldrive0","rb+");

char buffer[512];

fread(buffer,512,1,fd);

//then you can edit buffer[512] as your wish......

fseek(fd,0,seek_set); //很重要

fwrite(buffer,512,1,fd); //把修改后的mbr写入到你的机器

fclose(fd); //大功告成

具体含义如下:

(1)0x00~0x1bd:446个字节,包含一段指令,用以通知计算机如何访问分区表并定位操作系统的位置

这部分的代码会因为操作系统不同而不同,利用引导代码可以实现多重系统引导。多系统引导有两种方法可以实现:一种方法是用windows操作系统在引导分区中设置一段代码,先加载进入用户选择系统的界面,允许用户选择要进入的系统,再进入指定的系统;第二种方法是改变mbr中的引导代码,该代码直接呈现给用户一个选择系统的界面。

(2)0x1be~0x1fd:64个字节,4个分区表项,每个表项占用16个字节,描述一个分区,最多可以描述4个分区(这就是为什么mbr分区体系只能分成4个区【我们平时看到的分区一般可以从26个字母中选取任意多个当做分区标识(多于4个),这是因为那些分区是逻辑分区,这里的4个分区指的是主分区和扩展分区的数目,而逻辑分区是在扩展分区中划分出来的,也叫做二级、三级扩展分区。】)。

分区表项并没有顺序要求,即不要求第一个分区表项在第二个分区表项前。

分区表也不要求从第一个分区表项开始

(3)0x1fe~0x1ff:2个字节,有效结束标志“55aa”。如果没有这个标志,操作系统会认为磁盘没有初始化,无法正确加载磁盘的分区。

分区表参数含义(字节)

1 活动(80)或非活动分区(00)

2 3 4 起始的磁头 01 柱面 01 扇区00值

5 分区类型符 ntfs(07)fat32(0b)扩展(0f)

6 7 8 结束的磁头 fe 柱面 ff 扇区ff值

9 10 11 12 本分区之前已用扇区数

13 14 15 16 本分区大小

虚拟mbr

即 ebr (extent boot record)扩展引导记录

其记录表项 与mbr相同 ,用于管理扩展还能分区上的逻辑驱动器。


viewimg_14245_0.html" target="_blank" class="bigpic">安装详细截图
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|ziyuan80.com

GMT+8, 2025-8-10 21:22 , Processed in 0.075961 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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