2024年3月3日发(作者:)

<基本定义>

硬盘分区记录MBR表:位于硬盘分区第0扇区用于引导硬盘分区的含有分区表的扇区。

硬盘引导记录I/O表:位于硬盘分区第63扇区用于引导逻辑磁盘且含有磁盘I/O参数的扇

区。

硬盘主引导分区:用于引导操作系统的分区,一个硬盘只能有一个主引导分区。

硬盘扩展分区:用于管理一个或多个逻辑磁盘分区的分区,系统不能直接使用。

硬盘逻辑分区:可供系统直接使用其扇区的硬盘分区。

硬盘逻辑磁盘:被系统利用的硬盘逻辑分区的系统管理部分。

<基础知识>

1、硬盘0扇区及硬盘总扇区倒数的第100个扇区备份有硬盘的主引导分区表。

2、硬盘63扇区及硬盘总扇区倒数的第99扇区备份有硬盘的主引导扇区,即磁盘的I/0参数

表。

3、一般用FDISK分区的FAT32类型的硬盘在此分区的第69扇区处会有一个备份的引导扇区的

信息。

4、硬盘分区结构顺序:(PART+BOOT(保留扇区)+FAT*2+ROOT+DATA)。

5、文件分配表FAT首部含有十六进制数0000F8FFFF0F(不含前导符0000)。

6、文件目录表FDT中含有分区根目录下的目录名和文件名,如command和recycled。

7、被FDISK处理后的BOOT区,内容全为十六进制"F6",同时FDISK所备份FAT32的BOOT扇区

也被清空为"F6",再翻到"BOOT扇区+32"位置,会有FAT表标志"F8FFFF0F"。

<分区记录>

80 01 01 00 0B FE 7F BE 3F 00 00 00 C0 92 6D 00

00 00 41 BF 0F FE FF FE FF 92 6D 00 FC 0C F5 01

每个表项16字节,低位在前高位在后,各字节的含义如下:

第 00 字节:为引导标志项,值应为00或80

第01-03字节:为分区开始的磁头、扇区、柱面号。

第 04 字节:为分区系统标志,值05为逻辑分区记录中的扩展分区、06 为FAT16分区、

0B 为FAT32分区、0F为主分区记录中的扩展分区。

第05-07字节:分区结束的磁头、扇区、柱面号。

第08-11字节:逻辑分区前隐藏的扇区数或扩展分区前已用的扇区数。

第12-15字节:所指向的分区所含的扇区数(扩展分区项应包含隐藏的63个扇区)。

<引导记录>

1、引导记录各字节的含义:

第00-02字节:一个JMP(jump,跳转)指令,使启动的程序跳过磁盘I/O数据而继续进行,

一般为"EB5890"。

第03-0A字节:OEM名称和版本号,传送系统即可解决;

第0B-0C字节:每个扇区的字节数,一般为"0002"表示每个扇区有512字节,把十进制512

转换成十六进制=0200h,字组内前后位(byte)交换,即"0002",所以此处为"0002";

第 0 D 字节:"20"为每个簇的扇区数(目录扇区数),得出方法,按F4搜索字符串"Comm

and"(此为C盘根目录下的一个文件名),最后在28705扇区找到了这字符串,然后往后翻

1 / 6

页,数一下有几个目录扇区数,结果在28737扇区发现已经不是目录区了,所以,目录扇区

数=28737-28075=32个扇区,十进制32转换成十六进制=20h,所以此处为"20";

第0E-0F字节:"2000"为保留扇区数,保留扇区为引导记录BOOT至FAT1间的扇区,此数算

法:95(FAT1的开始扇区,按F4搜索字符串0000F8FFFF0F,即FAT表前几个字节)-63(隐

含扇区)=32,把十进制32转换成十六进制=0020h,字组内前后位(byte)交换得:200

0,所以此处为"2000";

第 1 0 字节:"02"为FAT表的份数,一般FAT32位的有2份,所以为"02";

第11-12字节:根目录项数

第13-14字节:磁盘分区的总扇区数(小于2G的分区),FAT32位时应为0

第 1 5 字节:"F8"为介质描述;

第16-17字节:每个文件分配表的扇区数,FAT32位的此处应为0

第18-19字节:每个磁道的扇区数。"3F00"为每道的扇区数,开头显示:Sector=63,此6

3即每道的扇区数,将十进制63转换成十六进制=003Fh,字组内前后位(byte)交换得3F

00,所以此处为"3F00";

第1A-1B字节:磁头数。"FF00"为磁头数目,开头显示:Head=25,此数即为物理磁头数,

但大于8G硬盘其逻辑磁头数为255,将十进制255转换成十六进制=00FFh,字组内前后位(

byte)交换得FF00,所以此处为"FF00".

第1C-1F字节:隐藏扇区数。"3F000000"为隐藏扇区数,这里记录着分区记录及其后面空

扇区的总数,有63个扇区,把十进制63转换成十六进制=0000003Fh,字组内前后位(byt

e)交换得3F000000,所以此处为"3F000000"。

第20-23字节:为分区的扇区总数(大于2G的分区)。此数值和分区记录中的分区扇区数

是一样的。

第24-27字节:在FAT32中为每个FAT的扇区数,算法:(目录扇的开始扇区号-隐含扇区

63-保留扇区32)÷2=1405,此数就是每个FAT的扇区数,再将此十进制1405转换成十六

进制=37E1h,字组内前后位(byte)交换,得E1370000,所以此处为"E1370000";在FAT

16中其四个字节先后表示为驱动器数、保留区、扩展引导记录标识、系列号。

第28-2B字节:FAT32中此处应为0

第2C-2F字节:FAT32中为根目录所在簇数"02000000",簇计数从2开始,根目录所在的簇

值一般为2簇,为00000002h,字组内前后位(byte)交换得02000000,所以此处为"02000

000";

第30-31字节:FAT32中为文件系统信息扇区数"0100",此文件系统信息扇区为1扇区,为

0001h,字组内前后位(byte)颠倒得0100,所以此处为"0100";

第32-33字节:FAT32中为系统每个引导扇区的扇区数"0600",系统引导扇区位于系统的保

留扇区范围之内且有一个副本,一般FAT32中引导扇区有6*2个扇区,即63至75为0006h,

字组内前后位(byte)颠倒得0600,所以此处为"0600";

第34-3F字节:FAT32中为系统保留

FAT16中第28-35字节为卷标;第36-3D字节为文件系统类型;第3E-FF字节为DOS2 / 6

加载代

码。

第 4 0 字节:FAT32中为磁盘编号"80"(第一个硬盘为80h);

第 4 1 字节:FAT32中为系统保留

第42-46字节:FAT32中为扩展的引导扇区特征码及系统安装序列号等"29",这部份可用标

准的硬盘照搬过来。

第47-51字节:FAT32中为系统的卷标号

第52-59字节:FAT32中为文件分配表FAT的类型提示符。

<文件分配表FAT>

文件分配表FAT扇区数的计算:

假设E盘分区表位置33077835扇区及E盘BOOT区33077898扇,又知道了E盘FAT表1的起始位置

是第33077930扇区,FAT表2的起始位置是第33087718扇区,还有ROOT区的起始位置是3309

7506扇区。

最简单的方法是ROOT区的起始位置减去FAT2的起始位置:

33097506-33087718=9788

道ROOT区所在位置的情况下,用FAT2的起始位置减去FAT1的起始位置:

33087718-33077930=9788

还有一种方法是ROOT区的起始位置减去FAT表1的起始位置,再除以2:

(33097506-33077930)÷2=9788

<文件目录表FDT>

按下回车查看该页是否为目录区。若是则记下该页扇区数,若不是则继续查找。文件目录

表FDT最明显的特征是可以看到分区根目录下的目录名和文件名,如command和recycled,

汉字为乱码。如果目录区在第19625扇区。需做如下计算:(扇区数-63-32)/2=(196

25-63-32)/2=9765 换算为十六进制(用F7)→ 2625 高低换位→ 2526。将所得到的

"2526"与表二中第24-25字节"142D"比较,发现表二中该数错误。此时将"142D"改为"252

6"。(FAT32如上计算,FAT16有所不同。)

<故障分析>

硬盘分有C盘3.676G装操作系统、D盘6.292G装办公软件、E盘6.292G存有大量文档数据、F

盘4.227G备份软件和系统的Ghost镜像文件。系统引导进入windows时,C、D、E、F四个盘均

可见,且操作正常。一次用克隆软件恢复C盘系统时出现错误后,系统不能从硬盘引导启动

,系统启动时出现em disk;disk i/o error等提示信息。用干净的A盘引导可以看到C、D

两盘,但C盘上的文件全无且容量变大了许多, E、F盘不可见,且查看E、F分区时,系统

提示:"Invalid drive specfication "(无法判断硬盘规格)。用Fdisk查看分区表,显

示主分区与扩展分区项的值正常,而查看逻辑盘时则显示"No logical drivers defined"

3 / 6

。根据这些提示,判断可能是硬盘分区表有问题,或C盘引导记录的I/O参数出错。由于C盘

的容量变大,若直接对C盘格式化可能会影响到D盘上的数据,故不能直接采用格式化C盘重

装系统。

根据经验分析,要修复该硬盘可以考虑如下方案:

1、重新对硬盘分区、格式化并重装操作系统和应用软件。

2、重新修正C盘引导记录上的磁盘I/O参数,重新格式化C盘后重装系统。即手工清除C盘上

引导记录扇区数据,将它的值用F6填充,重新启动后再格式化C盘并重装系统。或找回C盘

正确的引导记录扇区在硬盘上的备份,并用它修复而后重新启动格式化C盘再重装系统。

3、检查修复各分区的分区记录扇区数据,使E、F盘在DOS下可见,再用克隆软件调出在F盘

上的镜像文件来修复C盘系统,从而使得C盘系统正常运行。

前面两种方法的工作量大,且可能造成丢失数据。第3种方法可以确保原D、E、F盘数据完

整及C盘系统正常运行,且技术难度和时间要求不大,只是要求掌握分区记录的相关知识。

因此在这里将采用第3种方法修复硬盘。

<故障修复>

以下将使用KV3000杀毒工具软件来检查修复各分区的分区记录内容:

1、用KV3000启动系统并进入F6的"磁盘救护箱"功能。再按F6和F1进入Test Logical Hard

Disk Partition,将显示如下:

分区容量 分区扇区数 分区字节数 分区记录位置

Disk C:3.676G 07180992 3676667904 in 0

Disk D:6.292G 12289662 6399235584 in 07181055

Disk E:6.292G 12289662 6399235584 in 19470780

Disk F:4.227G 08257347 4013904384 in 31760505

2、根据以上提供的分区记录的位置,再用F3功能查看各分区记录的内容,查看过程发现各

分区位置正确。各分区记录内容如下:

Part C: (主引导分区记录)

80010100 0BFE7FBE 3F000000 C0926D00(主分区项)

000041BF 0FFEFFFF FF926D00 FC0CF501(主扩展分区项)

Part D: (1) (逻辑分区记录)

000141BF 0BFE3FBB 3F000000 7E86BB00(逻辑盘分区项)

000001BC 0FFEFFB8 BD86BB00 BD86BB00(逻辑扩展区项)

Part E: (2) (逻辑分区记录)

000101BC 0BFEFFB8 3F000000 7E86BB00(逻辑盘分区项)

0000C1B9 0FFE7FBA 7A0D7701 82FF7D00(逻辑扩展区项)

Part F: (3) (逻辑分区记录)

0001C1B9 0BFE7FBA 3F000000 43FF7D00(逻辑盘分区项)

3、检查各分区记录内容的准确性,看看是否是因为分区记录表中指定的分区信息正确与否

4 / 6

对于扩展分区记录中的扩展分区项各选项的特点说明如下:

(1)、开始和结束的磁头、扇区、柱面与下一扩展分区记录中的逻辑分区项的值基本一致

(2)、分区前扇区数(第08-11字节)为该扩展分区项所确定的逻辑分区之前的各分区扇

区数之和(含各分区前部的63个隐含扇区)。

(3)、容量大小等于其所确定的逻辑分区的容量与对应逻辑分区前的63个隐含扇区数之和

对于主分区记录上的扩展分区项说明如下:

(1)、结束扇区、磁头、柱面对于大于8G的分区一般为FEFFFF。

(2)、扩展分区的容量为所有逻辑分区即D、E、F分区的磁盘容量之和。

经检查各分区项的开始和结束的磁头、扇区、柱面及分区前扇区数、容量大小等项的数值

正确。分区记录各数据项的关系如下:

07181055=6D92FFH 6D92FFH=3FH+6D92C0H

19470780=6D92FFH+BB86BDH BB86BDH=3FH+BB867EH

31760505=6D92FFH+01770D7AH 01770D7A=2*(3FH+BB867EH)

4、检查各分区引导记录中各分区项的系统标志。发现分区表中的(1)、(2)处的内容为

0F,与主分区记录中扩展分区项的系统标志一致,将它们改为05存盘重新启动后,在DOS下

可见E、F盘的内容。

5、用ghost的恢复镜像文件的功能恢复系统,重新启动后可以正常使用。(注:如果分区

表无误,则引导记录中的磁盘I/O参数出错也可能导致E、F盘不可见)

<补充材料>

凡是用过一次杀毒软件的用户,会发现在C盘根目录下产生了两个隐含文件,即

在DOS下用命令: DIR C:/A 回车

这时,你就会发现C盘根目录下多出了两个文件:,.

用工具软件查看其内容,原来文件内保存了硬盘最为关健的"硬盘分区表"、"硬

盘进出(I/O)表"等关键数据,而文件内保存了"C盘根目录表(ROOT表)"。

原来,这两个文件是用户用KV3000查完硬盘后自动产生的,在用户不知不觉的情况下就完

成了对硬盘重要数据的建档备份。而这些重要数据原存放的区域都是病毒经常破坏的区域

。如果用户每天用KV3000查一次硬盘,那么,这两个文件就每天被更新一次。

这些重要的数据用文件的形式被保存在硬盘内的某一区域,一旦灾难突降,即可大有用来

死而复生之用途。

可是,当"硬盘分区表"日后突然被病毒破坏或是系统崩溃,或是破坏了"硬盘进出(I/O)

表",造成硬盘进不去了,自然,这两个文件也根本看不到它在哪里?那怎么能用来起死复

生呢?

既然备份文件的数据影象在硬盘内,当今的硬盘容量可称之为海量,要一个一个扇区的去

找,这好比象大海捞针一样,谈何容易!

但,这早已考虑好了,有两种方法可轻松的找到其位置。

方法一:利用KV3000硬盘救护箱F6功能内的F4"磁盘扇区字符串搜索"功能,搜索"DISKC:[

BACKUP]"字符串,注意:该字符串中间没有空格,约需搜索几分钟到几十分钟就可找到。

5 / 6

找到后记下所在位置的扇区值,再向后翻一页,就是硬盘分区表(主引导扇区),再向后

翻一页,就是"硬盘进出(I/O)表"。将这两个表用KV3000移写扇区功能,分别写到硬盘0

扇区(硬盘主引导扇区)与63扇区(硬盘系统引导扇区,即进出(I/O)表),这样,再重

新引导机器,硬盘上您宝贵的重要数据就奇迹般的展现在眼前了。

方法二:进入KV3000硬盘救护箱F6功能内,按下"END"键,进入硬盘最后一扇区,再向前倒

回4个扇区,就会发现这是一个表,在表的第一行上有"FILEC:[BACKUP]"字样,在表的第二

行的前4字节记录了文件备份的日期,在表的第17-20字节(在表的左边第5列的地

方)记录了备份文件数据存放的首扇区数值。记下这个数值,注意:表上的数值

是高位在后,低位在前,做记录时颠倒过来,高位在前,低位在后。

再按下F7键,这是KV3000为方便用户进行十进制数与十六进值数相互换算的一个功能,其

十分方便,换算功能可达12位数,能换算达到这样高位的软件几乎很少见。我们将记录下

的十六进制数换算成十进制数,再记录下这个十进制数,按下F3功能键,输入换算出的十

进数,再回车,即显示出原备份文件的首扇区,此对应扇区就是备份主引导扇区的前一页

。在往后翻一页,就是备份的主引导扇区(位置为0),再往后翻一页,就是引导扇区(位

置为63)。调用Ctrl+F10组合键扇区内容将写入对应扇区位置。

如果C盘的根目录也全丢了,按照第一种方法,搜索"COMMANDaaa"字符串,注意:也可搜

索您自己所熟悉的是英文字母的子目录名字,找到后,按回车键查看,如不对,可再按回

车键,继续搜索,直至找到,约需几分钟至几十分钟。找到后,记下所在位置的扇区数值

,再将这个保存的目录表用KV3000移写扇区功能,写到硬盘原目录区内。这样,再重新引

导机器,硬盘上您在备份那天前的目录就展现在您眼前了。

[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]

6 / 6