硬盘分区表结构 资料

分区表就是分区表,每个硬盘只有一个,跟操作系统无关,没有你所谓的windows分区表,linux分区表。
=====================================================================
硬盘主引导扇区 = 硬盘主引导记录(mbr)+ 硬盘分区表(dpt)
————————————————————–
物理位置:0面0道1扇区(clindyer 0, side 0, sector 1)
大小: 512字节
其中:mbr 446字节(0000–01bd),dpt 64字节(01be–01fd),结束标志2字节(55 aa)
功能:mbr通过检查dpt分区信息引导系统跳转至dbr;
读取: 使用norton diskedit, 在object菜单中选择drive——>physical disk-—hard disk,
然后, 在object菜单中选择disk partition table即可读取, 并使用tools菜单中的write object to 选项存入指定文件备份;
写入: 使用norton diskedit, 在object菜单中选择drive——>floopy disk, 选择备份的dpt
文件, 然后使用tools菜单中的write object to——>physical sector 选项写入001
(clindyer 0, side 0, sector 1);
详解:
000h–08ah mbr启动程序(寻找开机分区)
08bh–0d9h mbr启动字符串
0dah–1bch 保留(“0″)
1beh–1fdh 硬盘分区表
1feh–1ffh 结束标志(55aa)
活动分区主引导扇区(dbr)
————————–
物理位置:1面0道1扇区(clindyer 0, side 1, sector 1)
大小: fat16 1扇区 512字节
fat32 3扇区 1536字节
功能:包含机器cmos等信息(0000–0059), 核对该信息并引导指定的系统文件, 如ntldr等;
读取: 使用norton diskedit, 在object菜单中选择drive——>logical disk-—disk c,
然后, 在object菜单中选择boot record即可读取, 并使用tools菜单中的
write object to 选项存入指定文件备份;
写入: 使用norton diskedit, 在object菜单中选择drive——>floopy disk, 选择备份的dbr
文件, 然后使用tools菜单中的write object to——>physical sector 选项写入011
(clindyer 0, side 1, sector 1);
详解:
000h–002h 3 byte的跳转指令(去启动程序, 跳到03eh)
003h–03dh bios参数区
03eh–19dh dos启动程序
19eh–1e5h 开机字符串
1e6h–1fdh 文件名(io.sys, msdos.sys)
1feh–1ffh 结束标记(55aa)
硬盘分区表(dpt)
———————
偏移地址 字节数 含义分析
01be 1 分区类型:00表示非活动分区:80表示活动分区;其他为无效分区。
01bf~01c1 3 *分区的起始地址(面/扇区/磁道),通常第一分区的起始地址开始
于1面0道1扇区,因此这三个字节应为010100
01c2 1 #分区的操作系统的类型。
01c3~01c5 3 *该分区的结束地址(面/扇/道)
01c6~01c9 4 该分区起始逻辑扇区
01ca~01cd 4 该分区占用的总扇区数
注释: * 注意分区的起始地址(面/扇区/磁道)和结束地址(面/扇/道)中字节分配:
00000000 01000001 00010101
~~~~~~~~ ==^^^^^^ ========
~ 面(磁头) 8 位
^ 扇区 6 位
= 磁道 10 位
# 分区的操作系统类型(文件格式标志码)
4—dos fat16<32m
5—extend
6—dos fat16>32m
7—ntfs(os/2)
83—linux>64m
dpt 总共64字节(01be–01fd), 如上所示每个分区占16个字节, 所以可以表示四个分区, 这也
就是为什么一个磁盘的主分区和扩展分区之和总共只能有四个的原因.
逻辑驱动器
———–
扩展分区的信息位于以上所示的硬盘分区表(dpt)中, 而逻辑驱动器的信息则位于扩展分区的
起始扇区, 即该分区的起始地址(面/扇区/磁道)所对应的扇区, 该扇区中的信息与硬盘主引导
扇区的区别是不包含mbr, 而16字节的分区信息则表示的是逻辑驱动器的起始和结束地址等.
所以, 在磁盘仅含有一个主分区, 一个扩展分区(包含多个逻辑驱动器)的情况下, 即使由于病毒
或其他原因导致硬盘主引导扇区的数据丢失(包括dpt), 也可以通过逻辑驱动器的数据来恢复整个硬盘.
例如: 以下是一个硬盘的分区情况.
道 面 扇 道 面 扇 起始扇(逻辑) 结束扇 总共扇区
mbr 0 0 1 – – – – – –
c 0 1 1 276 239 63 63 4,188,239 4,188,177
扩 277 0 1 554 239 63 4,188,240 8,391,599 4,203,360
d 277 1 1 554 239 63 4,188,303 8,391,599 4,203,297
如 果主分区表损坏, 则可以通过手工查找扩展分区表中所包含的逻辑驱动器数据, 在本例中就是d盘所对应的数据, 然后将其起始扇(逻辑)减去63就是所对应的扩展分区的起始扇(逻辑), 将其起始地址(面/扇区/磁道)改为0面就是扩展分区的起始地址. 然后通过扩展分区就可以得到主分区c的信息, 然后就可以使用fdisk/mbr命令和手工填写分区表恢复整个硬盘.
实际使用这种方法比较麻烦, 如果知道每个分区的大小, 则可以通过使用pq magic 5 将磁盘重新分区为原来大小(注意: 千万不能应用,  们只是通过它来获得数据), 并查看info来获得以上
数据, 记录以后取消该分区操作, 然后使用norton disk2000手工修改dpt表, 恢复整个硬盘.
该例所对应的分区表数据:
80 01
01 00 06 ef 7f 14 3f 00 00 00 11 e8 3f 00 00 00
41 15 05 ef bf 2a 50 e8 3f 00 60 23 40 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa
扩展分区表数据:
00 01
41 15 07 ef bf 2a 8f e8 3f 00 21 23 40 00
注意: 逻辑起始扇区和总共分区数是左边为低位, 如该例的扩展分区的起始地址为50 e8 3f 00转换十进制时要先变为00 3f e8 50, 总共占用分区数60 23 40 00要先变为00 40 23 60, 同理当手工填写该值时也要进行高低位转换.

——————————————————————————–

数据恢复一直以来都是 们关注的话题.因为你的电脑数据每天都在遭受诸如病毒,恶意代码,误操作等威胁!哪如何才能恢复数据呢,希望本文章对你有些许帮助!
一,理论篇
要深入学习数据恢复,并非是一件容易的事,要想成为一个数据恢复专家,没有深厚的理论知识是不可能的,你必须了十分了解磁盘的逻辑结构,就让 们来看看需要学习的理论知识吧!
当 们对文件进行访问时,你有没有想过,操作系统是如何对文件进行操作的呢?这些文件又是如何存放在磁盘当中的呢?先来看看硬盘的总体结构,在介绍硬盘总体结 构之前有必要介绍一下硬盘的参数,硬盘是以磁头(heads),柱面(cylinders),扇区(sectors)进行访问的。其中: 磁头数(heads)表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 255 (用 8 个二进制位存储); 柱面数(cylinders) 表示硬盘每一面盘片上有几条磁道,最大为 1023 (用 10 个二进制位存储); 扇区数(sectors) 表示每一条磁道上有几个扇区, 最大为 63(用 6 个二进制位存储). 每个扇区一般是 512个字节,学习过汇编语言的朋友可能想到了,bios中断13h的入口参数中,ch是磁道号其值为0h~feh(最多255个磁道),cl中低6位为 扇区号,其值为1h~3fh(最多63个扇区),dh为磁头号的低位,cl中的高2位为磁头号的高位,也就是说,磁头号最多由10位二进制数表示, (1111111111)2=(1023)10,也就是说最多可以表示的磁头数为1024个。请大家记住这些在 们以后的学习中还会用到的,由此可以看出基于这种访问方式, 们最大能访问的磁盘容量是255*1023*63*512字节=8414461440/1048576=8024.66m
只有大约8g的空间, 这是因为早期磁盘还很小,想想当年你拥有一块200m硬盘时的喜悦心情吧!就好象当年的科学家们以为1k内存已经很大了一样,让电脑用户很长一段时间都为 配置dos下的内存而烦恼。而今,你肯定拥有一块大于8g的硬盘了,你能够用她,应该多亏了一种较新的硬盘访问技术——扩展 int13h 技术。采用线性寻址方式存取硬盘, 所以突破了 8 g的限制, 而且还加入了对可拆卸介质(如活动硬盘)的支持,因为是谈数据恢复不是谈编程,关于扩展int13h技术 在此就不详述了
硬盘数据(基于fat结构)总体结构如下
1、主引导扇区(master boot sector) (占用一个扇区)
2、第一个分区的引导扇区(boot sector)(占用一个扇区
3、第一个分区的fat1 (占用空间由磁盘大小和fat类型来定
4、第一个分区的fat2 (占用空间由磁盘大小和fat类型来定
5、第一个分区的根目录区
6、第一个分区数据区 (用来存放各种文件的数据)
7、扩展分区表 (占用一个扇区 )
8、第二个分区的引导扇区(boot sector)(占用一个扇区
9、第二个分区的fat1 (占用空间由磁盘大小和fat类型来定
10、第二个分区的fat2 (占用空间由磁盘大小和fat类型来定
11、第二个分区的根目录区
12、第二个分区数据区 (用来存放各种文件的数据
13、扩展分区表
注意:当你的硬盘没有扩展分区的时候,你就没有扩展分区表了;当你只有一个硬盘分区的时候你的硬盘结构到6就完了

——————————————————————————–

(一)主引导扇区(master boot sector)的结构
它是硬盘的第一个扇区, 由主引导程序(masterboot record简称mbr),硬盘分区表(disk partition table简称dpt )和结束标识三部分组成。其结构如下
1、偏移0h~1bdh 主引导程序(占446个字节,但实际可能并没有到这么多的字节)
2、偏移1beh~1fdh 硬盘分区表(占64个字节,每个分区项占16个字节,最多可容纳4个分区项
3、偏移1feh~1ffh 结束标识 (占2个字节,结束标志,总为55h aah)
主 引导程序 在此就不分析了,需要注意的是在主引导程序中有一些出错信息,一些引导型病毒往往会覆盖这些信息来将自己嵌入到主引导程序中去,并将主引导程序开始的几个 字节改为一条跳转指令,通过观察主引导程序的变化,往往可以让 们看出自己的电脑是否有引导型病毒,一旦发现异常, 们可以用fdisk/mbr命令来覆盖原有的mbr。结束标识的两个字节总是55h aah,该标识只是用于判断这个扇区是否是有效的主引导扇区,如果主引导程序发现没有这个结束标识,将会认为操作系统丢失,并显示“missing operating system”
硬盘分区表
从偏移1beh~1fdh的64个字节存放的是硬盘分区表,其中最多包含4个分区项,每个分区项由16个字节构成,其结构如下
1、1beh~1cdh 分区项1
2、1ceh~1ddh 分区项2
3、1dbh~1edh 分区项3
4、1efh~1fdh 分区项4
注意:没有用到的分区项上的记录总是16个十六进制码00h
们再来看看每个分区项的详细含义,假设 们的一个分区占用的16个字节被标为00h~0fh,其结构如下:
00h 引导标识字节,其值只能为00h或80h,为00h时表示该分区不可引导,为80h时表示该分区可用于引导 。在许多诸如boot magic之类的软件都是利用了这一原理,实现多操作系统引导的,了解了这一原理,你也可以写出你自己的多操作系统引导程序了
01h 分区起始磁头号
02h 其高2位为分区起始柱面号的高位,底6位为分区起始扇区号
03h 分区起始柱面号的低位
04h 分区系统标志,当该值为00h时,表示此分区为不可识别的系统;为04h时该分区为fat16分区;为05h或0fh该分区为 扩展分区;为0b时该分区为fat32分区 ;为83h时表示该分区为linux分区, 为07时该分区为ntfs分区等等。一些如pqmagic磁盘软件在隐藏分区操作时就是将此字节的内容保存后在把它改为00h
05h 分区结束磁头号
06h 其高2位为分区结束柱面号的高位,底6位为分区结束扇区号
07h 分区结束柱面号的低位
08h~0bh 此4个字节为在线性寻址方式下的分区的扇区地址。当分区大于8g时,扩展int13h是通过该信息进行寻址的, 们可以发现在这种方式下寻址最多可访问的空间为:ffffffffh扇*512b/扇=2048g,也就是说 们用扩展int13h最大可以访问的空间为2048g,这个数字现在对 们来说是非常大的,但谁都不能想象计算机的发展之快,到时到底要如何来突破这个限制呢?现在谁也不知道。注意:此4个字节是从高位到低位排列的!例如 的分区表第一个分区项此4字节的内容为“3fh 00h 00h 00h”,它代表该分区是从0000003fh开始的,也就是从线性地址63扇开始的(线性地址把硬盘的第一个扇记为0h扇
0ch~0fh 此4个字节为以扇区为单位的该分区大小(总扇区数),此4个字节同样是从高位到低位排列的

——————————————————————————–

(二)引导扇区(boot sector)的结构:

—————————–
当主引导程序找到了带有引导标识为80h的分区后,就会将该分区的引导扇区读入到内存地址为0000:7c00处,并把控制权交给引导扇区中的引导程序,让 们来看看其中一些需要了解的地方
1、0h~02h 一条跳转指令,指针指向后面的引导程序
2、03h~0ah 厂商名和系统版本
3、0bh~0ch 每扇字节数,一般为512字节
4、0dh 每簇扇区数(有关簇的概念 们在后面会详细介绍),对于fat32的磁盘该字节一般为08h,既每簇为8h*512b=4k。
5、0eh~0fh 保留扇区数
6、10h 磁盘fat的个数,一般为2个
7、11h~12h 对于fat16的磁盘为根目录的最大目录项,对于fat32的磁盘该值总为“00h 00h
8、13h~14h 对于软盘或早期小硬盘该处为分区总扇区数,对于硬盘一般此值为“00h 00h
9、15h 介质描述,对于1.44软盘此处长为“f0h”,对于硬盘此处长为“f8h
10、16h~17h 对于软盘或早期小硬盘该处为每个fat占用的扇区数,对于硬盘一般此值为“00h 00h”
11、18h~19h 每道扇区数,一般为“3fh 00h”,即每道有63个扇区
12、1ah~1bh 磁头数,一般为“ffh 00h”,即每个柱面有255个磁头
13、1ch~1fh 隐含扇区数
14、20h~23h 对于大硬盘来说该处存放的是该分区占用的扇区数
15、24h~27h 对于大硬盘来说该处存放的是每个fat占用的扇区数
16、40h 该处为磁盘bios信息,第一块硬盘为“80h”,一般软盘为“00h
17、47h~51h 用户设置的卷标,如果没有卷标此处常为字符串“no name
18、52h~59h 文件系统,对于fat32文件系统此处常为“fat32
19、1feh~1ffh 结束标识,和上文提到的主引导区的结束标识一样为“55h aah
以上是引导扇区的一些信息,在上面 们可以获得一些有用的信息, 们也可以想象一下为什么当 们在分区上单击右键在分区属性中可以看到一些分区信息,比如分区大小,文件系统等等,知道原理,你也可以直接调用这些参数了。

from http://wenda.tianya.cn/wenda/thread?tid=52182293f34ef3a7




coded by nessus
发表评论?

0 条评论。

发表评论