1、磁盘的组织方式主引导记录(分区标) (仅硬盘)DOS 引导记录(保留区域)文件分配表(FAT) ,可能有 N 个备份根目录文件区域(文件和子目录)一个磁盘在使用前,都要进行逻辑格式化(硬盘在此前还要经过低级格式化、分区两步),在格式化完毕之后,磁盘分为以下几部分:引导扇区(Boot)、文件分配表(FAT)、文件目录表(FDT)和数据区。如果是硬盘,在 0 柱面 0 磁头 1 扇区还存在一个由 FDISK 分区命令形成的主引导扇区。 一、主引导扇区 硬盘主引导扇区是一个敏感的区域, 它的安全与否直接决定硬盘是否能够正常使用。深入认识和灵活使用硬盘主引导扇区将有助于你的系统维护和许多特殊工作完成。
2、(一) 、与 DOS 引导扇区的区别对于 DOS 系统来说, 有两种不同的引导扇区 ,即 DOS 引导扇区和硬盘主引导扇区。 DOS 引导扇区存在于软盘的第一逻辑扇区或硬盘 DOS 分区的第一逻辑扇区,是用 FORMAT 命令对磁盘格式化时产生的, 是引导 DOS 系统或正确使用磁盘的必要条件,在 DOS 下可用 DEBUG 方便地读出:CDEBUGL 100 2 0 1 ;读 C 盘 0 扇区到内存当前段的 100H 处D ;显示 DOS 引导扇区内容硬盘主引导扇区则指的是硬盘的物理地址 0 面 0 道 1 扇区,是用 FDISK 进行硬盘分区时产生的,它属于整个硬盘而不属于某个独立的 DO
3、S 分区, 是硬盘正确引导和使用的必要条件。由于它不在 DOS 分区范围之内,所以无法用上述方法读出,只有用相关的汇编程序代码读出:CDEBUGAXXXX:0100 MOV AX,0201H ;指定扇区数XXXX:0103 MOV BX,0800H ;指定内存地址XXXX:0106 MOV CX,0001H ;指定磁道和扇区号XXXX:0109 MOV DX,0080H ;指定磁头和驱动器号XXXX:010C INT 13H ;读磁盘操作XXXX:010E INT 3d800 ;显示读出内容(二) 、扇区结构硬盘主引导扇区占据一个扇区,共 512(200H)个字节,具体结构如下:1.硬盘主引导
4、程序,位于该扇区的 01BDH 处;2.硬盘分区表,位于 1BEH1FDH 处,分区表对于系统自举十分重要,它规定着系统有几个分区;每个分区的起始及终止扇区、大小以及是否为活动分区等重要信息。每个分区表占用16 个字节,共 4 个分区表,16 个字节各字节意义如下:偏移量 长度(Byte)说明00H 1 自举标志,80H 为可引导分区,00 为不可引导分区;0103H 3 本分区在硬盘上的开始物理地址;第 1 字节该分区起始磁头号,第 2 字节该分区起始扇区号(低 6 位)和起始柱面号(高 2 位),第 3 字节该分区起始柱面号的低 8 位。04H 1 分区类型:其中00h 表该分区未使用,0
5、1H 表示为 12 位 FAT 表的基本 DOS 分区;04H 为 16 位 FAT 表的基本 DOS 分区;05H 为扩展 DOS 分区;06H 为大于 32M 的 DOS 分区;65H 表 Netware 分区,其它为非 DOS 分区。0507H 3 本分区的结束地址;第 5 字节该分区结束磁头号,第 6 字节该分区结束扇区号(低 6 位)和结束柱面号(高 2 位),第 7 字节 该分区结束柱面号的低 8 位。080BH 4 该分区之前的扇区数,即此分区第一扇区的绝对扇区号;高位在后低位在前。0CFFH 4 该分区占用的总扇区数。注意: 1 分区表有四个表项,表示硬盘最多只能容纳四个分区。
6、 2磁盘的各个面称为磁头,软盘只有两个磁头,而硬盘往往有多个。各个磁头相同半径的磁道合称为柱面。 3高位在后,低位在前是一种存储数字方式,读出时应对其进行调整,如两字节12h、34h,应调整为 3412h。 现在举例说明,有如下一分区表(16 进制):00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 80 0101 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
7、 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
8、用二进制表示为 00000001,低 6 位为 000001,合十进制为 1,表此分区起始扇区为 1。第 3 字节 00h,用二进制表示为 00000000,加上第 2 个字节的高 2 位 00 作为高位,表示为0000000000,合十进制 0,表此分区起始柱面为 0。第 4 字节 06h 表此分区为基本 DOS 分区。第 5 字节 0Bh 表示该分区结束在第 11 磁头。第 6 字节 23h 合二进制 00100011,低 6 位 100011 合十进制 35,此分区结束扇区则为 35。第 7 字节 9Bh 合二进制 10011011,加上第 6 字节的高 2 位 00 作为高位,表示为0
9、010011011,合十进制 155,表此分区结束在第 155 柱面。第 811 字节为 23h,表此分区从相对逻辑 35 扇区开始。第 1215 字节为 FFCDh,表此分区共有 65985 个扇区。综上所述,此分区为活动的基本 DOS分区,分区从 0 柱面 1 磁头 1 扇区开始,即相对逻辑 35 扇区,终之于 155 柱面 11 磁头 35扇区。硬盘自举时,先将主引导扇区的主引导记录读入内存,主引导记录将检查结束标志是否为55AAh,并在分区表中找到唯一的一个活动分区,并根据该分区表项记载的起始扇区地址读入引导文件,完成启动过程。3引导扇区的有效标志,位于 1FEH1FFH 处,固定值为
10、 AA55H。(三)、硬盘主引导扇区的作用硬盘主引导扇区在各个 DOS 版本下其内容基本一致,主要完成的任务是:1存放硬盘分区表,这是硬盘正确读写的关键数据。2检查硬盘分区的正确性,要求只能且必须存在一个活动分区。3确定活动分区号,并读出相应操作系统的引导记录。4检查操作系统引导记录的正确性, DOS 引导扇区末尾也存在着一个 AA55H 标志,供引导程序识别。5释放引导权给相应的操作系统。例如,当确认 DOS 操作系统引导记录存在时, 则调出DOS 引导程序并执行。另外,当它发现引导故障时将给出部分提示信息,如:?Invalid partition table?表示硬盘分区表错误, 没有或存
11、在两个以上活动分区;?Error loading operating system?表示读 DOS 引导记录时出错;?Missing operating system?表示 DOS 引导记录无有效标志 AA55H。(四)、硬盘主引导扇区的应用正是硬盘主引导扇区直接决定硬盘的安全性, 所以利用它可以完成很多特殊的功能操作, 简单列举如下:1清除硬盘引导功能。由于硬盘引导必须使用引导程序, 并检测活动分区的正确性, 所以人为的修改或破坏引导程序部分, 或者清除活动分区引导标志,都将使硬盘无法启动。2.加密整个硬盘。硬盘主引导扇区末尾的扇区有效标志 AA55H 是系统承认硬盘的前提,所以可以采取清除
12、名修改此标志位达到加密硬盘的目的, 即使从 A 驱引导系统也无法对硬盘进行操作 , 恢复AA55H 即可解密硬盘。3.加密单个硬盘分区。硬盘单个分区的加密可采取修改分区类型的方法,比如把扩展 DOS 分区的类型标志 05H 改为 FFH,则 DOS 认为此分区为非 DOS 分区,无法对其进行访问, 包括此分区中的所有逻辑盘。当然修改或清除某一分区表的所有数据同样具有加密单个分区的作用,但操作繁琐并且具有危险性。4.加入硬盘启动口令识别。通过修改硬盘的主引导程序, 在引导 DOS 操作系统之前,加入一段口令识别程序段,如口令正确则正常引导系统,否则拒绝引导,达到口令识别的目的。5.先于 DOS
13、驻留内存程序。在主引导程序中安装某些中断服务程序,如时钟中断等,通过对 INT21H 或其它 DOS 关键数据的监视,完成病毒的实时检测功能,因为此方法在引导 DOS 系统之前完成,所以其监视效果非常可靠。6.实现同一硬盘多个操作系统的选择启动。硬盘可以分成 4 个独立的分区,装入 4 个不同的操作系统,通过特殊的方法可以共享多个 DOS 版本,但各操作系统或各 DOS 版本间的切换是一件非常麻烦的事,通过修改硬盘主引导程序加入按键识别过程,可实现四个分区的自由选择引导。7.实现硬盘主引导扇区或 DOS 引导扇区的自我修复。如果在硬盘其它空闲扇区保留一份完好的主引导扇区内容,而在主引导程序中每
14、次启动前进行主引导扇区的正确性检查工作,当发现异常时,即调入原来完好的主引导扇区内容,就可以及时发现和清除病毒,对于系统有很好的保护作用。二、DOS 引导扇区(DOS BOOT RECORDER)引导扇区又称保留扇区,存在于 0 柱面 1 磁头 1 扇区(硬盘),或 0 柱面 0 磁头 1 扇区(软盘),即逻辑 0 扇区,它是 DOS 能访问的起始扇区,由以下几部分组成:跳转指令,用于此盘启动时转移到引导代码;操作系统版本号(OEM ID);磁盘基本 I/O 参数表(BPB表)(0BH 开始);引导代码,用来启动机器,将 DOS 装入。其中 BPB 表的地位十分重要,它负责向系统说明此磁盘的规
15、格布局,如磁头数、扇区数、磁盘类型等,是 DOS 对磁盘操作的依据,BPB 表由 19 个字节(低版本 DOS)或 25 个字节(高版本DOS,包括 Win95 下 DOS7.0)组成,现以 25 个字节的 BPB 表来说明它的结构,各字节含义如附表(h 表示 16 进制)。附表偏移量 长度(Byte)含义001H 2 每扇区字节数,高字节在后,低字节在前02H 1 每簇扇区数0304H 2 保留扇区数,高字节在后,低字节在前05H 1 文件分配表(FAT)个数0607H 2 根目录,即文件目录表(FDT)登记项最大数目0809H 2 盘上总扇区数,包括保留扇区、文件分配表、文件目录表和数据区
16、在内的所有扇区0AH 1 磁盘类型: FDh 360KB 软盘 F9h 1.2MB 软盘 F0h 1.44MB 软盘 F8h 硬盘0B0CH 2 每个 FAT 表占用的扇区数,高字节在后,低字节在前0D0EH 2 每磁道扇区数,高字节在后,低字节在前0F10H 2 磁头数,高字节在后,低字节在前1114H 4 隐含扇区数,高字节在后,低字节在前1518H 4 大容量盘总扇区数,计算方法与“盘上总扇区数” 相同,高字节在后,低字节在前注意: 1.磁盘的各个面称为磁头数,软盘只有两个磁头,而硬盘往往有多个,各个磁头相同半径的磁道合称为柱面。 2.保留扇区指的是 Boot 扇区,隐含扇区指的是从主引
17、导扇区到 Boot 扇区之间的扇区数。即 0 柱面 0 磁头 1 扇区至 0 柱面 1 磁头 1 扇区之间的扇区数(以上指对硬盘而言),这些扇区不能为 DOS 所访问,故为隐含扇区。此参数硬盘为每磁道扇区数,软盘为 0。3.当硬盘分区小于 32MB 时,此盘总扇区数由“盘上总扇区数”表示, “大容量盘总扇区数”为 0。当硬盘分区大于 32MB 时,磁盘总扇区数由“大容量盘总扇区数”表示,而“盘上总扇区数”为 0。4.高字节在后,低字节在前是存储数字的一种方式,读出时应对其进行调整,如两字节12h、34h,应调整为 3412h。现在,举例说明,有如下一 BPB 表(16 进制):第 01 字节为
18、 0200h,合十进制 512,则表示每扇区容纳 512 字节。第 2 字节为 08h,合十进制 8,表示每一簇包含 8 个扇区。第 34 字节为 0001h,合十进制 1,即保留扇区为 1 个,即 Boot 扇区。第 5 字节为 02h,合十进制 2,表示此盘上有 2 个文件分配表,即 FAT1 与 FAT2,两表格式完全相同,其中 FAT2 为备份。第 67 字节为 0200h,合十进制 512,表示在根目录(FDT)下最多只能登记 512 个子目录或文件。第 89 字节为 0000h,合十进制为 0,因为此磁盘分区大于 32MB,故此两字节不使用,磁盘总扇区数存放在第 2124 字节中。
19、第 10 字节为 F8h,表示此磁盘为硬盘。第 1112 字节为 00B6h,合十进制 182,表示此盘上每个 FAT 表占用 182 个扇区。第 1314 字节为 0022h,合十进制 34,表示此盘每磁道被格式化成 34 扇区。第 1516 字节为 000Fh,合十进制 15,表示此磁盘共有 15 个磁头。第 1720 字节为 00000022h,合十进制 34,表示此盘上隐含扇区为 34 个。第 2124 字节为 0005AE2Ah,合十进制 372266 个,表示此盘上共有 372266 个扇区。因分区大于 32MB,故总扇区数在此表示。BPB 表对系统十分重要,系统凡是涉及到对磁盘的
20、存取操作,都要用到它。用户在磁盘格式化完成后,不要轻易对 BPB 表进行修改,但也有些病毒对其破坏,敬请用户密切注意。三、文件分配表当一个磁盘 Format 后,在其逻辑 0 扇区(即 BOOT 扇区)后面的几个扇区中存在着一个重要的数据表文件分配表(FAT),文件分配表一式两份,占据扇区的多少凭磁盘类型大小而定。顾名思义,文件分配表是用来表示磁盘文件的空间分配信息的。它不对引导区、文件目录表的信息进行表示,也不真正存储文件内容。我们知道磁盘是由一个一个扇区组成的,若干个扇区合为一个簇,文件存取是以簇为单位的,哪怕这个文件只有 1 个字节。每个簇在文件分配表中都有对应的表项,簇号即为表项号,每
21、个表项占 1。5 个字节(磁盘空间在 10MB 以下)或 2 个字节(磁盘空间在 10MB 以上)。为了方便起见,以后所说的表项都是指 2 个字节的。文件分配表结构如表 2(H 表示 16 进制)。注意:1 不要把表项内的数字误认为表示当前簇号,而应是该文件的下一个簇的簇号。2 高字节在后,低字节在前是存储数字的一种方式,读出时应进行调整,如两字节12h,34h,实际应为 3412h。文件分配表与文件目录表(FDT)相配合,可以统一管理整个磁盘的文件。它告诉系统磁盘上哪些簇是坏的或已被使用,哪些簇可以用,并存储每个文件所使用的簇号。它是文件的“总调度师” 。当 DOS 写文件时,首先在文件目录
22、表中检查是否有相同文件名,若无则使用一个文件目录表项,然后依次检测 FAT 中的每个表项,找到第一个为 0000h 的表项后,将文件写入与该表项相对应的簇中,同时将该簇号写入文件目录表项的第 2627 字节,如文件长度不止一簇,则继续向后寻找可用簇,找到后将其簇号写入上一次找到的表项中,如此直到文件结束,在最后一簇的表项里填上 FFF8h,形成一个单向链表。DOS 删除文件时只是把文件目录表中的该文件的表项第 0 个字节改为 E5h,表此表项已被删除,并在文件分配表中把该文件占用各簇的表项清 0,以释放空间。其实文件的内容仍在盘上,并没有被真正删除,这就是 undelete.exe、unera
23、se.exe 等一类恢复删除工具能起作用的原因。文件分配表在系统中的地位十分重要,用户最好不要去修改它,以免误操作带来严重的后果。表 2字 节 含 义第 0 字节 表头,表磁盘类型。 FFh 双面软盘 每磁道 8 扇区FEh 单面软盘 每磁道 8 扇区FDh 双面软盘 每磁道 9 扇区FCh 单面软盘 每磁道 9 扇区F8h 硬盘第 12 字节 (表项号 1) 表示第一簇状态,因第一簇已被系统占据,故此两字节为 FFFFh第 34 字节 (表项号 2) 表示第二簇状态,若为FFFTh 表此簇为坏的,DOS 已标记为不能用;0000h 表示此簇为空,可以用;FFF8h 表示该簇为文件的最后一簇;
24、其余数字表示文件的下一个簇号, 注意高字节在后,低字节在前第 56 字节 (表项号 3) 表示第三簇状态,同上FAT 表的前 4 个字节保留给 DOS 使用,一般为 F8 FF FF FF,例如下图为某个文件的簇分配情况,这个文件占用了从 2 到 8 共 7 个簇:保留 簇 簇 簇 簇 簇 簇 簇 簇2 3 4 5 6 7 8 9F8 FF FF FF 03 00 04 00 05 00 06 00 07 00 08 00 FF FF 23 01这个文件的起始簇号 2 是由根目录中指出的,第 8 簇中放的 FFFF 表示第 8 簇是这个文件的最后一簇,第 9 簇中的簇号又是另外一个文件的簇号了。四、文件目录表文件名放在根目录下,每个文件占 32 字节,含义如下:偏移量 说明 大小(Byte) 格式00H 文件名 8 ASCII 字符08H 文件扩展名 3 ASCII 字符0BH 属性 1 位编码0CH 保留 1016H 时间 2 字编码18H 日期 2 字编码1AH 开始簇号 2 字1CH 文件大小 4 整数
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。