FAT表知识

大家知道,一个硬盘要能存放文件,必须经过硬盘分区,格式化等操作步骤,因为经过这些步骤之后,在硬盘中就建立起了主分区,引导分区,确定了FAT16或FAT32文件表。主分区的作用是保存硬盘中各逻辑分区在盘片上起始位置和终止位置及分区的容量大小。引导分区的作用是在固定的位置存放有操作系统文件,在电脑送电或复位时,由BIOS程序将处于固定位置的系统文件装入内存,再将电脑控制权交给系统文件人而完成引导过程。扩展分区作为一个主分区占用了主分区表的一个表项。在扩展分区起始位置所指示的扇区(即该分区的第一个扇区)中,包含有第一个逻辑分区表,同样从1BEH字节开始,每个分区表项占用16个字节。逻辑分区表一般包含两个分区表项,一个指向某逻辑分区,另一个则指向下一个扩展分区。下一个扩展分区的首扇区又包含了一个逻辑分区表,
这样以此类推,扩展分区中就可以包含多个逻辑分区。下面我们就来学习一下硬盘数据的基本结构。
★ 硬盘的数据结构 ★
① MBR(Main Boot Record 主引导记录区)
MBR位于整个硬盘的0磁道0柱面1扇区,包括硬盘引导程序和分区表。在总共512字节的硬盘主引导扇区中,MBR只占用了其中的446个字节,其最后两个字节“55 AA”是分区的结束标志。另外的64个字节交给了DPT(Disk Partition Table硬盘分区表),从1BEH字节开始,共占用64个字节,包含四个分区表项。每个分区表项的长度为16个字节,它包含一个分区的引导标志、系统标志、起始和结尾的柱面号、扇区号、磁头号以及本分区前面的扇区数和本分区所占用的扇区数。其中“引导标志”表明此分区是否可引导,即是否活动分区。当引导标志为“80”时,此分区为活动分区;“系统标志”决定了该分区的类型,如“06”为FAT16分区,“0B”为FAT32分区,“07”为NTFS分区,“63”为UNIX分区,等;起始和结尾的柱面号、扇区号、磁头号指明了该分区的起始和终止位置。
我们假设一个硬盘分区表从1BEH字节开始的16个字节为 80 01 01 00 06 0D 68 6D 28 00 00 00 78 20 03 00
硬盘分区表项的16个字节分配如下:
第1字节:是一个分区的激活标志,表示系统可引导。如是0则表示非活动分区。
  第2字节:该分区起始磁头(HEAD)号
  第3字节:该分区起始扇区(Sector)号
  第4字节:该分区起始的柱面(Cylinder)号
  第5字节:该分区系统类型标志
第6—8字节:该分区终止磁头(HEAD)号、分区结束的扇区号、分区结束的柱面号
  第9-12字节:该分区首扇区的相对扇区号
  第13-16字节:该分区占用的扇区总数
  以上参数我们可以用NU 8.0中DISKEDIT工具软件可轻松获取,其功能非常强大,但应用不当会有很大错误,请各位注意使用方法。操作步骤如下:
以一台硬盘为270 MB,分为C盘(100 MB)和D盘(170 MB)的机子(老掉牙了 ^_^)为例,在纯DOS下启动DISKEDIT →在对象菜单(Object)上选中驱动器(Drive)和物理磁盘选项后确定 → 在对象菜单(Object)上选中分区表(PartitionTable) → 在显示菜单(View)中选择十六进制(Hex)
以下数据为主分区信息:
000001B0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 80 01
000001C0: 01 00 06 0D 68 6D 28 00 - 00 00 78 20 03 00 00 00
000001D0: 41 6E 05 0D E8 AE A0 20 - 03 00 30 EE 04 00 00 00
000001E0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
000001F0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 55 AA
② DBR(Dos Boot Record 操作系统引导记录区)
它通常位于硬盘的0磁道1柱面1扇区,是操作系统可直接访问的第一个扇区,它包括一个引导程序和一个被称为BPB(BIOS ParameterBlock)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为例,即是Io.sys和Msodos.sys)。如果确定存在,就把它们读入内存,并把控制权交给该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元的大小等重要参数。DBR是由高级格式化程序(即Format等程序)所产生的。
③ FAT(File Allocation Table 文件分配表)
FAT是DOS、Windows 9X系统的文件寻址格式,位于DBR之后。
在解释文件分配表的概念的时候,我们有必要谈谈簇(Cluster)的概念。文件占用磁盘空间,基本单位不是字节而是簇。一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64……
同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于硬盘上保存着段与段之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。
为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。由于FAT对于文件管理的重要性,所以为了安全起见,FAT有一个备份,即在原FAT的后面再建一个同样的FAT。初形成的FAT中所有项都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。FAT的格式有多种,最为常见的是FAT16和FAT32。
④ DIR (Directory 根目录区)
DIR位于第二个FAT表之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。
⑤ DATA(数据区)
数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘的大部分空间。当将数据复制到硬盘时,数据就存放在DATA区。
分区表损坏的修复

  硬盘主引导记录所在的扇区也是病毒重点攻击的地方,通过破坏主引导扇区中的DPT(分区表),即可轻易地损毁硬盘分区信息。分区表的损坏通常来说不是物理损坏,而是分区数据被破坏。因此,通常情况下,可以用软件来修复。

  通常情况下,硬盘分区之后,备份一份分区表至软盘、光盘或者USB盘上是极为明智的。这个方面,国内著名的杀毒软件KV3000系列和瑞星都提供了完整的解决方案。另外,对于没有备份分区表的硬盘,也提供了相应的修复方法,不过成功率相对较低。

  另外,中文磁盘工具DiskMan在这方面也是行家里手。重建分区表作为它的一个“杀手锏”功能,非常适合用来修复分区表损坏。

  对于硬盘分区表被分区调整软件(或病毒)严重破坏,引起硬盘和系统瘫痪,DiskMan可通过未被破坏的分区引导记录信息重新建立分区表。在菜单的工具栏中选择“重建分区表”,DiskMan即开始搜索并重建分区。DiskMan将首先搜索0柱面0磁头从2扇区开始的隐含扇区,寻找被病毒挪动过的分区表。接下来搜索每个磁头的第一个扇区。搜索过程可以采用“自动”或“交互”两种方式进行。自动方式保留发现的每一个分区,适用于大多数情况。交互方式对发现的每一个分区都给出提示,由用户选择是否保留。当自动方式重建的分区表不正确时,可以采用交互方式重新搜索。

  但是,需要注意的是,重建分区表功能不能做到百分之百的修复分区表,除非你以前曾经备份过分区表,然后通过还原以前备份的分区表来修复分区表损坏。因此可见,平时备份一份分区表是多么的必要!
十年积累,硬盘分区,文件全手工恢复新鲜出炉了

最近经常见有很多硬盘分区表及硬盘数据被破坏而导致机器不能引导或使用的帖子,本着扶危济困的人道主义精神,和近十年的电脑龄以及之前成功修复N(N约等于10)块硬盘的经验特发一帖,系统讲述硬盘软故障恢复的方法,望大家不吝伺教!
   
注:所有前提是硬盘没有物理损坏,以DISKEDIT(诺顿2.0 forwindows中获取),DISKMAN(华军软件园),NORTON(D版),UNFOMAT(其它兼容的反格式化软件也可)等软件为基础,如果多少精通一下下汇编就再理想不过啦!呵呵~~~~

   好,万事就绪!先说一下当系统分区表被误操作或病毒破坏时会出现的现象。1:启动显示NO ROM BASIC。2:启动显示INVALIDPARTITIONTABLE。3:无显示(如遭CIH毒手)。4:提示硬盘逻辑分区错误无法正常识别(如提示逻辑盘符超过Z,并切FDISK等程序无法识别)5:对于AWARD BIOS可能还会提示硬盘无法初始化(没用过AMI的,不知道会有什么显象……)
    知道了表象现在来研究一下本质,我尽可能简单的解释一下硬盘的物理结构和各种参数。众所周知,硬盘的主引导区位于硬盘的0柱0面1区包含有若干分区表项,共有64字节。其中每个分区项有16字节包括以下一些信息:
    第一字节,是引导标志,其中80为活动分区00为非活动分区。
    第二字节,起始磁头,表明分区的起始位置。
    第二字节,表示起始扇区,其中低六位(简单说就是*右面的六位)为起始扇区,高二位为起始柱面(有时也会加上第四字节)。
    第三字节,表示硬盘柱面信息。
    第四字节,确定起始柱面的的低八位。
    第五字节,决定分区的类型,06代表FAT16,0b代表FAT32,63代表UNIX分区。
    第6字节: 终止磁头
    第7字节: 低6位为终止扇区, 高2位与第8字节为终止柱面
    第8字节: 终止柱面的低8位
    第9-12字节: 该分区前的扇区数目
    第13-16字节: 该分区占用的扇区数目
扩展分区的信息位于上面所示的硬盘分区表中,逻辑分区的信息则位于扩展分区的起始扇区,可通过查找上面的表得到起始地址“X面/X扇区/X柱”所对应的扇区。分区信息的16个字节表示的是逻辑驱动器(D:E:……)的起始和结束地址。了解这些后当分区表破坏后我们就能利用各种软件来进行手工恢复,如果没有就手的软件的话那么FDISK/MBR手工填写参数也马马虎虎啦!呵呵~~~
   手工恢复分区时推荐使用全中文界面且支持虚拟操作的DISKMAN!至于大名鼎鼎的DISKEDIT因为操作过于复杂非老鸟甚用!不然一时失手可能连哭都来不及……。具体步骤是1:检查C盘活动分区有效标志80是否存在。2:编辑0柱1磁头1扇区,查看末尾是否有55AA的有效标志。3:根据自己分区的情况依次检查分区的类型标志,引导标志和系统标志是否与自己的硬盘相同如不同就改为正确的。致此分区引导记录应该被恢复的七七八八了。4:选择DISKMAN菜单中重建分区表一项,从0柱0磁头2扇区以自动或者交互两种方式开始扫描硬盘,建议对硬盘参数有较深了解的人选择交互方式,由于自己对自己的硬盘比较了解所以成功的可*性大些。不了解的人还是选择自动好些……至此,运气好的话应该可以恢复硬盘的使用了,如果只是分区有问题加之上天保佑的话至此能进入98也是有可能的!备份好必要的数据后最好重新分区并且FOIMAT/U。如果不能使用但可以用启动盘引导后可以得到硬盘的控制权就是说可以进入分区,这时可以使用一些杀毒软件(KV3000)的重建分区功能。毕竟人家正规军的办法比起咱这土办法应该还是牢*些的。如果还不成的话那我也只好拿出最后的法宝了!用DEBUG搞定它!
事先声明,下面这段DEBUG我只用过一次,虽然幸运的成功了但不保证适用于所有硬盘,而且说实话我的DEBUG水平也就是马马虎虎应付场面的,实在不够牢*,只提供一下思路,大家用的时候最好搞清楚再来。如果实在没着了照搬也成,反正已经不能用了也不会有更烂的后果……不过至于到底会出现什么后果没我责任哦!呵呵~~~~~
debug
a 100
mov ax,201    */以下三行是对寄存器的操作
mov bx,200
moc cx,1
int 13        */调用中断13对硬盘写操作
int 3
g=200
d 3b0 3ff
e 3be 80      */针对引导区添入引导区有效标志80
e 102 3
g-100


  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值