Windows 版 (精华区)
发信人: stary (到底想要什么,想追求什么。。。), 信区: Windows
标 题: 分区表、文件分配表探秘
发信站: 哈工大紫丁香 (2002年11月12日23:08:44 星期二), 站内信件
1、分区表
硬盘只有经过物理格式化、分区、逻辑格式化后才能使用,在进行分区时,FDISK会在硬盘
的0柱面0磁头1扇区建一个64字节的分区表,在分区表的前面是主引导记录(MBR),后面是
两个字节的有效标志55h、AAh(h表示16进制)。此扇区被称为主引导扇区,也是病毒最爱侵
袭的地方,它由主引导记录+分区表+有效标志组成。
分区表对于系统自举十分重要,它规定着系统有几个分区;每个分区的起始及终止扇区、
大小以及是否为活动分区等重要信息。分区表由4个表项组成,每个表项16个字节,各字节
含义如表1:
表1
字节 含 义
第0字节 是否为活动分区,是则为80h,否则为00h
第1字节 该分区起始磁头号
第2字节 该分区起始扇区号(低6位)和起始柱面
号(高2位)
第3字节 该分区起始柱面号的低8位
第4字节 系统标志,00h表该分区未使用,06h表高
版本DOS系统,05h扩展DOS分区、65h表
Netware分区
第5字节 该分区结束磁头号
第6字节 该分区结束扇区号(低6位)和结束柱面号
(高2位)
第7字节 该分区结束柱面号的低8位
第8~11字节 相对扇区号、该分区起始的相对逻辑扇区
号,高位在后低位在前
第12~15字节 该分区所用扇区数,高位在后、低位在前
注意:
1分区表有四个表项,表示硬盘最多只能容纳四个分区。
2磁盘的各个面称为磁头,软盘只有两个磁头,而硬盘往往有多个。各个磁头相同半径的
磁道合称为柱面。
3高位在后,低位在前是一种存储数字方式,读出时应对其进行调整,如两字节12h、34h
,应调整为3412h。
现在举例说明,有如下一分区表(16进制):
┋
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 80 01
01 00 06 0B 23 9B 23 00 00 00 CD FF 00 00 00 00
01 9C 05 0B E3 DB F0 FF 00 00 00 55 05 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
此分区表两个表项已被使用,说明此硬盘上存在两个分区(DOS主引导分区和扩展DOS分区)
,还有两个表项未用,最后是2个字节的有效标志。现以第一个表项为例说明各字节作用。
第0字节80h表明此分区为活动分区,系统启动时将从此分区读取系统文件,当硬盘上存在
一个以上分区时,只能有一个是活动的。
第1字节01h表明此分区起始于第1磁道。
第2个字节01h用二进制表示为00000001,低6位为000001,合十进制为1,表此分区起始扇
区为1。
第3字节00h,用二进制表示为00000000,加上第2个字节的高2位00作为高位,表示为00000
00000,合十进制0,表此分区起始柱面为0。
第4字节06h表此分区为基本DOS分区。
第5字节0Bh表示该分区结束在第11磁头。
第6字节23h合二进制00100011,低6位100011合十进制35,此分区结束扇区则为35。
第7字节9Bh合二进制10011011,加上第6字节的高2位00作为高位,表示为0010011011,合
十进制155,表此分区结束在第155柱面。
第8~11字节为23h,表此分区从相对逻辑35扇区开始。
第12~15字节为FFCDh,表此分区共有65985个扇区。综上所述,此分区为活动的基本DOS分
区,分区从0柱面1磁头1扇区开始,即相对逻辑35扇区,终之于155柱面11磁头35扇区。
硬盘自举时,先将主引导扇区的主引导记录读入内存,主引导记录将检查结束标志是否为5
5AAh,并在分区表中找到唯一的一个活动分区,并根据该分区表项记载的起始扇区地址读
入引导文件,完成启动过程。
要注意用PCTOOLS等一般软件无法访问主引导记录,因为它的磁盘编辑功能只能访问到逻辑
0扇区,即BOOT扇区。但我们可以通过KV300或Norton的主引记录导出功能,观察自己的磁
盘的分区表。也可对它进行修改,实现在不破坏原有数据的情况下增加分区、对某个分区
加锁等功能,但用户最好谨慎行事,分区表可是“军事禁区”。
二、文件分配表
当一个磁盘format后,在其逻辑0扇区(即BOOT扇区)后面的几个扇区中存在着一个重要的数
据表——文件分配表(FAT),文件分配表一式两份,占据扇区的多少凭磁盘类型大小而定。
顾名思义,文件分配表是用来表示磁盘文件的空间分配信息的。它不对引导区、文件目录
表的信息进行表示,也不真正存储文件内容。
我们知道磁盘是由一个一个扇区组成的,若干个扇区合为一个簇,文件存取是以簇为单位
的,哪怕这个文件只有1个字节。每个簇在文件分配表中都有对应的表项,簇号即为表项号
,每个表项占15个字节(磁盘空间在10MB以下)或2个字节(磁盘空间在10MB以上)。为了方
便起见,以后所说的表项都是指2个字节的。
文件分配表结构如表2(h表示16进制)。
注意:
1不要把表项内的数字误认为表示当前簇号,而应是该文件的下一个簇的簇号。
2高字节在后,低字节在前是存储数字的一种方式,读出时应进行调整,如两字节12h,3
4h,实际应为3412h。
文件分配表与文件目录表(FDT)相配合,可以统一管理整个磁盘的文件。它告诉系统磁盘上
哪些簇是坏的或已被使用,哪些簇可以用,并存储每个文件所使用的簇号。它是文件的“
总调度师”。
当DOS写文件时,首先在文件目录表中检查是否有相同文件名,若无则使用一个文件目录表
项,然后依次检测FAT中的每个表项,找到第一个为0000h的表项后,将文件写入与该表项
相对应的簇中,同时将该簇号写入文件目录表项的第26-27字节,如文件长度不止一簇,
则继续向后寻找可用簇,找到后将其簇号写入上一次找到的表项中,如此直到文件结束,
在最后一簇的表项里填上FFF8h,形成一个单向链表。
DOS删除文件时只是把文件目录表中的该文件的表项第0个字节改为E5h,表此表项已被删除
,并在文件分配表中把该文件占用各簇的表项清0,以释放空间。其实文件的内容仍在盘上
,并没有被真正删除,这就是undelete.exe、unerase.exe等一类恢复删除工具能起作用的
原因。
文件分配表在系统中的地位十分重要,用户最好不要去修改它,以免误操作带来严重的后
果。
表2
字 节 含 义
第0字节 表头,表磁盘类型。
FFh 双面软盘 每磁道8扇区
FEh 单面软盘 每磁道8扇区
FDh 双面软盘 每磁道9扇区
FCCh 单面软盘 每磁道9扇区
FC8h 硬盘
第1~2字节(表项号1) 表示第一簇状态,因第一簇已被系统占据,
故此两字节为FFFFh
第3~4字节(表项号2) 表示第二簇状态,若为FFFTh表此簇为坏
的,DOS已标记为不能用;0000h表示此簇
为空,可以用;FFF8h表示该簇为文件的最
后一簇;其余数字表示文件的下一个簇号,
注意高字节在后,低字节在前
第5~6字节(表项号3) 表示第三簇状态,同上
--
ω ω ω ω ω
◢ ◣ ◢ ◣ ◢ ◣ ◢ ◣ ◢ ◣
● ● ● ● ● ● ● ● ● ●
● ⅴ ● ● ⅴ ● ● ⅴ ● ● ⅴ ● ● ⅴ ●
◢ ◣◢ ◣◢ ◣◢ ◣◢ ◣
◥㎜ ㎜◤ ◥㎜ ㎜◤ ◥㎜ ㎜◤ ◥㎜ ㎜◤ ◥㎜ ㎜◤
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 218.7.25.44]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.007毫秒