- 8
- 0
- 约4.78千字
- 约 14页
- 2016-12-18 发布于北京
- 举报
剖析FAT文件系统结构
2009-10-27 21:25:49
标签:剖析FAT文件系统结构
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。/775253/217665
?本人写文章,难免有错误的地方请大家谅解,如果有错误请大家指教,现在开始正题,大家都知道FAT文件系统不是什么新鲜的文件系统了,目前用此文件系统的设备很多,比如现在的数码相机、数码摄像机、手机等等设备都以FAT作为它管理文件的一个系统,因为FAT文件系统的结构相对简单,容易理解,FAT文件系统进行了数次的升级,从FAT12进化到FAT16直到FAT的最后版本FAT32(还有一个是exFAT因为和FAT还是略有不同,在此就不多做介绍),今天就以FAT最新的FAT32文件系统作为本将的开始,网上类似讲解FAT文件系统的文章也很多,我就讲解最重要的一些知识,也是我的一些经验,希望能对各位爱好数据恢复的朋友们有所帮助。
?
了解一个文件系统就要从最基础的开始,我们先从FAT32的DBR(DOS BOOT RECORD,DOS引导记录)讲起,DBR分为两部分:DOS引导程序和BPB(BIOS参数块)。其中DOS引导程序完成DOS系统文件(IO.SYS,MSDOS.SYS)的定位与装载,而BPB用来描述本DOS分区的磁盘信息,如比较重要的参数有“每个扇区的字节数”、“每个簇有多少个扇区”、“保留扇区”、“FAT表数量”、“扇区总数”、“每FAT扇区数”,现在就从上述列出的几个关键的参数做详细的讲述:
?
1、每个扇区的字节数:
?
就是一个扇区共有多少个字节来组成,一般情况都是512个字节为一个扇区,16进制表示为200H。
?
2、每个簇有多少个扇区:
?
就是一个簇包含了多少个扇区,他的表示都是2的次方(512字节1、2、4、8、16、32、64扇区),比如8个扇区构成一个簇,它的簇大小就是8,16进制表示为8H。
?
3、保留扇区:
?
就是DBR到FAT表之间共有多少个扇区。
?
4、FAT表数量:
?
表示该分区上的FAT表共有几个副本,一般情况都为2(注:在重建DBR的情况下可以灵活调配)。
?
5、扇区总数:
表示该分区的扇区数量。
?
6、每FAT扇区数:
就是单个FAT表的扇区总数,通过次参数配合上面的参数就能够定位到根目录也就是Root,公式为:保留扇区+FAT表数量*每FAT扇区数=根目录的地址。
?
上述就是最为重要的几个BPB参数的解释,下面是DBR的截图,让大家看一下:
?
?
?
WinHEX 扇区截图
?
WinHex模板解释出来的BPB参数
?
??? 在此提供一个WinHex调用的模板,大家可以把----------------------之间的代码复制到一个记事本中,保存为以TPL为扩展名的文件,然后存放到WinHex的目录中即可。
?
?
--------------------------------------------------------------------------
template FAT32 引导扇区
// Template by Stefan Fleischmann
// X-Ways Software Technology AG
// 适用于 FAT32 格式逻辑驱动器的 0 扇区。
description BIOS 参数块 (BPB) 和其它
applies_to disk
sector-aligned
requires 0x02 90
requires 0x52 46 41 54 33 32 // =FAT32 在偏移地址 52
requires 0x1FE 55 AA
begin
read-only hex 3 JMP 指令
char[8] OEM
section BIOS 参数块
uint16 字节 / 扇区
uint8 扇区 / 簇
uint16 保留扇区
uint8 FAT 计数
uint16 根项目 (未使用)
uint16 扇区 (小容量)
hex 1 媒介描述 (16 进制)
uint16 扇区 / FAT (小容量)
uint16 扇区 / 磁轨
uint16 头
uint32 隐藏扇区
uint32 扇区 (大容量)
section FAT32 扇区
uint32 扇区 / FAT
uint16 延迟
uint16 版本
uint32 根目录第 1 簇
uint16 FSInfo 扇区
uint16 备份引导扇区
read-only hex 12 (保留)
endsection
hex 1 BIOS 驱动 (16 进
原创力文档

文档评论(0)