硬盘数据结构.doc_第1页
硬盘数据结构.doc_第2页
硬盘数据结构.doc_第3页
硬盘数据结构.doc_第4页
硬盘数据结构.doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硬盘数据结构一、主引导扇区主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。主引导记录占用446字节,分区表占用64字节,扇区结束标志55AA占用2字节,一共512字节。硬盘的主引导扇区所在的硬盘磁道上的其它扇区一般均空出,主引导扇区所在的硬盘磁道是不属于分区范围内的。表一:主引导扇区数据结构表偏移长度内容0446主引导记录44616第一个分区记录46216第二个分区记录47816第三个分区记录49416第四个分区记录5102扇区结束标志55 AA表一:主引导扇区数据结构表偏移长度内容01分区类型:00表示非活动分区;80表示活动分区;其他为无效分区。11分区的起始地址:面号:即磁头号21分区的起始地址:高2位为磁道号,低6位为扇区号;31分区的起始地址:磁道号的低8位41分区的操作系统的类型51分区的结束地址:面号:即磁头号61分区的结束地址:高2位为磁道号,低6位为扇区号;71分区的结束地址:磁道号的低8位84该分区起始逻辑扇区124该分区占用的总扇区数二、分区引导扇区分区的引导扇区是该分区的第一个扇区,DBR偏移长度内容0H02H3跳转指令03H0AH厂商名和系统版本0BH0CH每扇字节数,一般为512字节0DH每簇扇区数(有关簇的概念我们在后面会详细介绍),对于FAT32的磁盘该字节一般为08H,既每簇为8H*512B=4K。0EH0FH保留扇区数10H磁盘FAT的个数,一般为2个11H12H对于FAT16的磁盘为根目录的最大目录项,对于FAT32的磁盘该值总为“00H 00H13H14H对于软盘或早期小硬盘该处为分区总扇区数,对于硬盘一般此值为“00H 00H15H介质描述,对于1.44软盘此处长为“F0H”,对于硬盘此处长为“F8H16H17H对于软盘或早期小硬盘该处为每个FAT占用的扇区数,对于硬盘一般此值为“00H 00H18H19H每道扇区数,一般为“3FH 00H”,即每道有63个扇区1AH1BH磁头数,一般为“FFH 00H”,即每个柱面有255个磁头1CH1FH隐含扇区数20H23H对于大硬盘来说该处存放的是该分区占用的扇区数24H27H对于大硬盘来说该处存放的是每个FAT占用的扇区数40H该处为磁盘BIOS信息,第一块硬盘为“80H”,一般软盘为“00H47H51H用户设置的卷标,如果没有卷标此处常为字符串“NO NAME52H59H文件系统,对于FAT32文件系统此处常为“FAT321FEH1FFH结束标识,和上文提到的主引导区的结束标识一样为“55H AAH1、隐藏扇区(hidden sector)在分区之前的部分。通常所说的MBR,它是隐藏扇区的第一个扇区,也是整个存储介质的第一个扇区。使用C/H/S寻址方式为0 Cylinder / 0 Head / 1 Sector,换成LBA寻址方式,就是所谓的第0扇区。需要注意的是,隐藏扇区不是必须的,它是系统启动有关,如果你仅仅是作为存储,那么隐藏扇区可以没有,比如128M CF Card。还需要区分物理扇区和逻辑扇区。物理扇区是从整个存储介质的角度出发,而逻辑扇区仅仅是从该分区的角度出发。2、保留扇区(reserved sector)分区之内FAT表之前的所有扇区。通常所说的BPB,就是保留扇区的第一个扇区。如果隐藏扇区为0个,那么BPB所在的扇区就成为了实际的第0扇区。上面是FAT16的组织形式。默认上,LBA=0时,读取第一个扇区,得到的应该是MBR信息。在偏移位置为0x1be处,如果为0x80,则表示该分区是活动的。在偏移位置为0x1c6及其后的三个字节构成一个32位的长字(注意是按照小端存放方式),这是DBR的入口地址,也就是保留扇区的第一个扇区。如果在0x1be处不是0x80,则表明这不是MBR,也就是隐藏扇区为0,从保留扇区开始。那么读取LBA=0的扇区就是DBR了。由此看出相关的公式如下:1、读取LBA=0的扇区,如果判断是MBR,则说明存在隐藏扇区,根据MBR的信息找到分区的DBR扇区地址;2、读取DBR,分析相关的信息,获得文件系统参数BPB。FAT表的入口地址 隐藏扇区数 + 保留扇区数根目录区的入口地址 = FAT表的入口地址 + FAT的扇区数数据区的入口地址 = 根目录区的入口地址 + 根目录区的扇区数详解: 硬盘分区表(DPT) - 偏移地址 字节数 含义分析 01BE 1 分区类型:00表示非活动分区:80表示活动分区;其他为无效分区。 01BF01C1 3 *分区的起始地址(面/扇区/磁道),通常第一分区的起始地址开始 于1面0道1扇区,因此这三个字节应为010100 01C2 1 #分区的操作系统的类型。 01C301C5 3 *该分区的结束地址(面/扇/道) 01C601C9 4 该分区起始逻辑扇区 01CA01CD 4 该分区占用的总扇区数 注释: * 注意分区的起始地址(面/扇区/磁道)和结束地址(面/扇/道)中字节分配: 00000000 01000001 00010101 = = 面(磁头) 8 位 扇区 6 位 = 磁道 10 位 # 分区的操作系统类型(文件格式标志码) 4-DOS FAT1632M 7-NTFS(OS/2) 83-LINUX64M 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是磁道号其值为0HFEH(最多255个磁道),CL中低6位为扇区号,其值为1H3FH(最多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、偏移0H1BDH 主引导程序(占446个字节,但实际可能并没有到这么多的字节) 2、偏移1BEH1FDH 硬盘分区表(占64个字节,每个分区项占16个字节,最多可容纳4个分区项 3、偏移1FEH1FFH 结束标识 (占2个字节,结束标志,总为55H AAH) 主引导程序我在此就不分析了,需要注意的是在主引导程序中有一些出错信息,一些引导型病毒往往会覆盖这些信息来将自己嵌入到主引导程序中去,并将主引导程序开始的几个字节改为一条跳转指令,通过观察主引导程序的变化,往往可以让我们看出自己的电脑是否有引导型病毒,一旦发现异常,我们可以用FDISK/MBR命令来覆盖原有的MBR。结束标识的两个字节总是55H AAH,该标识只是用于判断这个扇区是否是有效的主引导扇区,如果主引导程序发现没有这个结束标识,将会认为操作系统丢失,并显示“Missing Operating System 硬盘分区表 从偏移1BEH1FDH的64个字节存放的是硬盘分区表,其中最多包含4个分区项,每个分区项由16个字节构成,其结构如下 1、1BEH1CDH 分区项1 2、1CEH1DDH 分区项2 3、1DBH1EDH 分区项3 4、1EFH1FDH 分区项4 注意:没有用到的分区项上的记录总是16个十六进制码00H 我们再来看看每个分区项的详细含义,假设我们的一个分区占用的16个字节被标为00H0FH,其结构如下: 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 分区结束柱面号的低位 08H0BH 此4个字节为在线性寻址方式下的分区的扇区地址。当分区大于8G时,扩展INT13H是通过该信息进行寻址的,我们可以发现在这种方式下寻址最多可访问的空间为:FFFFFFFFH扇*512B/扇=2048G,也就是说我们用扩展INT13H最大可以访问的空间为2048G,这个数字现在对我们来说是非常大的,但谁都不能想象计算机的发展之快,到时到底要如何来突破这个限制呢?现在谁也不知道。注意:此4个字节是从高位到低位排列的!例如我的分区表第一个分区项此4字节的内容为“3FH 00H 00H 00H”,它代表该分区是从0000003FH开始的,也就是从线性地址63扇开始的(线性地址把硬盘的第一个扇记为0H扇 0CH0FH 此4个字节为以扇区为单位的该分区大小(总扇区数),此4个字节同样是从高位到低位排列的 - (二)引导扇区(Boot sector)的结构: - 当主引导程序找到了带有引导标识为80H的分区后,就会将该分区的引导扇区读入到内存地址为0000:7C00处,并把控制权交给引导扇区中的引导程序,让我们来看看其中一些需要了解的地方 1、0H02H 一条跳转指令,指针指向后面的引导程序 2、03H0AH 厂商名和系统版本 3、0BH0CH 每扇字节

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论