2OO6年6期 蒋波,付尚朴,孙琛:用WinHex分析FAT32的磁盘存储结构 77 用WinHex分析FAT32的磁盘存储结构 蒋 波,付尚朴,孙琛 (中国工程物理研究院职工工学院,四川绵阳621900) 摘要:在硬盘修复、数据恢复和教学实验中,需要研究文件系统的磁盘存储结构,WinHex是能满足这一需求的较好软件,作者显示了用WinH 来分 析FAT32文件系统的方法。 关键词:WinHex;FAT32;FDT;簇 中图分类号:TP363.3 文献标识码:A 文章编号:1671—5365(2006)06—0077—02 在微机组装与维护等课程的磁盘存储系统教学中,通常教材要对磁 盘分区、文件分配表FAT与文件目录表FlYr等进行理论描述,但只有通过 对文件在磁盘上的具体存储结构进行实验分析才能加深对这些概念的理 解。WinHex就是能满足这种需求的一种磁盘编辑软件,在我们的教学实践 中取得了很好的教学效果,同时它也是硬盘修复和数据恢复的一个重要 工具,这个软件可以从网上免费下载,下面用它来分析Windows系统常用 的FAT32文件系统的文件存储结构。 我们知道,一个物理硬盘包括主引导记录MBR和多个分区,分区也 被称为逻辑盘,如一个物理硬盘可划分成C,D,E…多个逻辑盘,下面的讨 论限制在一个FAT32逻辑盘上,作为示例,在这个逻辑盘的根目录下创建 一个名为TEST.DOC的文件,大小为61440字节(60k)。 1 D0s引导记录(DBR) FAT32文件系统在逻辑盘上的结构如图1所示。 DBR(保留扇区) l FAT1 l FAT2 I DATA(含 图1 FAT32各区域的关系图 其中,保留扇区的数目、FAT的大小和根目录FDT的位置在FAT32下不 再是固定的,但它们可以从DBR中的BIB参数块获得,图2给出了WinHex 所显示的逻辑盘引导扇区DBR的部分内容。 BIOS参数块 DOS I导程序 图2 FAT32逻辑盘引导扇区部分内容 偏移0处的跳转指令将程序执行流程跳转到偏移5A处的DOS引导 程序人口,这里不详细分析引导代码。BPB参数块从第12(OBH)字节开 始,占用so(oBu 5AH)字节,前面提到的一些重要参数在BPB中的偏移 及值如表1所示。 表1 BPB参数的部分字段及意义 偏移 长度 值 说 明 OD 1 蚴 每簇扇区数 0E 2 O 0 保留扇区数 1C 4 O】dF 隐含扇区:从硬盘LBA=0至DBR的扇区数 24 4 0x36F6 每FAT扇区数 2C 4 O如晓 根目录FDT在DATA区的起始簇位置 由表1,该逻辑盘每簇有32(Ox20)个扇区,簇大小为32×512=16k,保 留扇区数是32,这也是图1中FAT1的起始扇区编号,DATA区的起始扇区 为0x20+2*0x36F6=28172,根目录FlYr在DATA区的起始簇为2。 2根目录FDT 用Format命令进行高级格式化时,为(逻辑)磁盘建立了一个根目录 文件目录表FDT,在根目录下用户可以再创建不同的子目录或文件,根目 录以及各个子目录都有自己的FDT,FDT定义了文件名、文件大小以及文 件存放的起始簇号。我们用Winttex来分析TEST.DOC在根目录FDT中的 目录登记项。 首先要在WinHex中定位出根目录FDT,单击WinHex显示内容中的 “访问”下拉列表的“根目录”项可直接到达根目录FDT的起始偏移,参考 图1也可计算出起始偏移,计算公式为: 根目录FDT起始偏移字节=(保留扇区数十2×每FAT扇区数+(FDT 起始簇号一2)×每簇扇区数]×每扇区512字节 其中“起始簇号一2”是因为FAT中第0簇和第1簇为保留簇,起始簇 号从2开始。根目录下的所有文件及其子目录,在根目录FDT中都有一 个32字节的目录登记项,目录登记项部分字节的内容如表2所示。 根据文件名可在根目录FDT中找到T嘲’.DOC文件的目录登记项。 图3显示出它的全部内容。 D口 690 I BB 34 BB 34 0B 00 E0 qq BB 3 4 A8 00 00 F0 00 00I ::邢77 ;:… f 图3 TEST.doc在FDT中的目录登记项 收稿日期:2OO6—04—19 作者简介:蒋波(1963一),男,四川绵阳人,讲师,学士,主要从事计算机组成原理与接口研究。 维普资讯 http://www.cqvip.com
78 宜宾学院学报 2O06年6期 表2 FDT中文件目录项的部分内容及含义 字节偏移 字节数 内容及含义 O~7 8 用于表示文件名字 8一OAH 3 用于表示文件的扩展名 按二进制位定义的文件属性,如只读位、系 OBH· l 统位、隐藏位、子目录位等,OFH表示该项 为长文件名记录项。 14H~15H 2 文件起始簇号的高l6位 lAH~lBH 2 文件起始簇号的低l6位 lCH~ln{ 4 32位文件字节长度 从相对偏移14H~15H、1AH 1BH可读出TEST.DOC的起始簇号为 0B00A8H,相对偏移1CH一1FH指出文件大小为F000H字节(6144o字节)。 3文件分配簇链 文件分配表FAT是用来记录每个文件的存储位置的表格,操作系统 以簇为单位给文件分配磁盘空间,每个簇在FAT表中占有一个登记项,簇 编号也是登记项编号,对FAT32,每个登记项占用4个字节(32位),0号登 记项和1号登记项是表头,簇的登记项从2开始,表项值00000000H表示 未使用的簇,0o0Oo002H~ Hw聊表示一个已分配的簇号,FFFFFFOFH 表示文件结束簇,FFFFFFFTH表示坏簇等,但注意要高字节在后地读出已 分配的簇号。一个文件至少占用一个簇,当文件占用多个簇时这些簇的 簇号不一定是连续的。 在用WinI-Iex观察簇号链时,同样首先要定位出FAT的起始偏移,单 击WinHex显示内容的“访问”下拉列表中的“FAT1”项可直接进入FATI 表,用保留扇区数X 512也可计算出FAT1的起始偏移字节为4000H,前面 已确定出TEST.DOC的起始蔟号为0B00A8H,每个登记簇项占用4个字 节,由此可确定出TEST.DOC第1个簇登记项的起始字节偏移为4000H+4 X B00A8H=2CA2AOH,图4显示出TESF.DOC的簇链。 0002C42B0 1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 :0 0 2C4FB。l匝亘亘团叵亘亘画['FF FF'FF OrJ 00 00 00 00 0002C 4FC0 1 00 00 00 00 00 00 00 00 00口口口口口口00 00 00 00 图4 TEST.DOC的簇号链 由图可知第1个簇登记项的值为0B03ECH,这也是第2个簇的簇号, 第2个簇登记项的起始字节偏移为4000H+4 X B03ECH=2CAFBOH,它的 登记项值是0B03EDH,依此类推可得出文件TESY.DOC被分配的簇号链是 B00A8H、B03ECH、B03EDH、B03EEH共4个簇,图4也清楚地显示B03EEH 簇的登记项值班 FH,它指出文件结束簇。TEST.DOC的文件大小是 60k,但它占据了四个簇大/b(64k)的磁盘空间。 4文件的删除 许多人可能认为在删除文件时,系统会把被删除文件的内容全部清 出,实际情况并不如此。在删除文件时,系统只是在该文件的文件目录项 上做一个删除标记,把它们在FAT表中所占用的簇标记为空簇,即登记项 值为O,而DATA区域中仍旧保存着原文件的内容,只是在操作系统下不 借助专门程序或软件是看不到它们的。例如,用Shift+Dd键把前面的 TEST.DOC文件不放人回收站而彻底删除,在根目录FDT中仍可找到如图 5所示的目录登记项。 膝 磊 }3 I oo0D∞¨。I。。 日日4 00 00 E0··88 34 A8 ; ;I嚣::邢77 :。皿 Jl 图5文件删除后TEST.DOC的目录登记项 将图5与图3相比较,可见除文件名的第1个字符改为删除标记E5 外,目录登记项的其余字节完全相同,从这个登记项仍可读出起始簇号、 文件大小等信息,如果文件较小只占用1个簇,或文件分配的簇是连续 的,用Win|kx可容易地把彻底删除的文件复原,若文件分配的簇是不连 续的,则复原要困难一些。 5结语 用WinI-lex还可分析子目录管理以及在Windows9x以后引人的长文件 名实现,在WinHex中可以把修改的字节内容写回磁盘扇区,被病毒破坏 引导扇区的硬盘可用WinHex进行修复,因此,WinHex不仅是硬盘修复与 数据恢复的实用软件,也是一种很好的教学实验软件。 参考文献: [1]戴世剑,涂彦晖.数据恢复技术[M].北京:电子工业出版社, 2005 [2]宋群生,宋亚琼.硬盘扇区读写技术——修复硬盘与恢复文件 [M].北京:机械工业出版社,20O4. To Analyze On—disk Structure of FAT32 Using WinHex JIANG Bo,F Shang—pu,SUN Che (CAEP Institute of Technology,Mianyang 621900,China) Abstract:Disk repair,data recovery and teaching experiments all require the research of the on—disk structure of file systerm. Hence,WinHex is the good software to satisfy such requirement.The method using WinHex to analyze FAT32 file system is dis— cussed in the article. Key words:WinHes;FAT32;FDT;Cluster 维普资讯 http://www.cqvip.com