一.简介
硬盘中的数据与计算机的引导和运行过程密切相关,其中的信息可以很明显地分成两类:第一类是完全不对用户透明的数据,只可以被计算机读取和使用,主要包括:主引导记录(Master Boot Record (MBR))、分区表和引导扇区。这类信息在硬盘中占据的空间不大,数据量也很小,但所起的作用却非常重要,此处数据一旦出现损坏,对整个计算机来说,往往是致命性的故障。第二类信息是一般的文件或数据,对用户是透明的,或者即使隐含的也可以通过修改文件属性看到。
主引导记录位于硬盘的第一个物理扇区,一个物理扇区是512个字节。从第一个字节开始就是真正的引导记录代码,引导记录到结束。接着是分区表,分区表如果以80开头,这个分区就是所谓可激活分区,即可以充当引导分区。这512个字节的最后两个字节是55AA,这是引导成功的标志。在这三部分之间的空闲部分,都以0来填充。
一个物理硬盘可以分成一个或多个区域,称为分区。一个分区之下可以再划分成一个或多个逻辑驱动器。由于第一类硬盘信息极其重要但又不为用户所见,所以要对这里进行修改就必须借助于特定的工具软件,能够完成这样操作的软件工具有微软自己开发的,也有第三方开发的。例如著名的诺顿工具中的磁盘编辑器就是一个典型例子。
本次介绍的Dskprobe.exe是一个微软自己开发的、应用于windows 2000环境下的磁盘扇区编辑工具,主要用于硬盘扇区的编辑。这个工具允许使用者以本地管理员的身份或权限直接对硬盘的物理扇区进行:读取、编辑、修改、保存及备份。这是用别的方法难以实现的操作。是微软支持工具中的一个。
大概你也会听说过,这类工具的威力大破坏性也大,如果你确实熟悉硬盘的信息结构,Dskprobe就是你手中的利器。如果盲目乱动,结果无疑是灾难性的。所以,给你提出以下强烈建议:如果要为练手获得经验的话,最好有行家在场指导,或找一块空闲的、没有什么关紧数据的硬盘试验。就是出问题,也不致给你带来严重后果。
Dskprobe的应用有以下限制和适用范围:1. 这个工具与诺顿工具的最大区别就是引入了对工具使用者权限的要求,当执行Dskprobe的时候,它会先要求你输入管理员的登录密码。2.由于每台计算机配备的硬盘都可能不一样,所安装的操作系统的类型、版本也参差不一;如果利用了多系统引导安装,则还存在怎样组合问题,凡此种种,都会影响主引导记录和分区表乃至引导扇区的内容。所以,进行对比的时候,决不能照搬书本上的例子。3.该工具不能在FAT32上使用,即不支持FAT32系统。4.该工具不能用在动态磁盘上。
该工具在使用时可分成两个阶段:
1.备份阶段,这是指系统尚属正常的时候,事先使用Dskprobe来将重要信息读出、并保存为一个或多个文件。需要保存的有:主引导记录、分区表和引导扇区。
2.排除故障,当发现引导故障后,如果确认是主引导记录、分区表和引导扇区的问题。就可以用Dskprobe先将原来备份的文件读出来,然后进行替换并保存到相应的物理扇区。进一步说:由于Dskprobe工具实际可以对硬盘的任意物理扇区进行编辑修改,所以,它也决不限于只能完成上面三部分替换。
二.如何进行针对主引导记录的操作?
硬盘上电后,系统首先访问硬盘控制电路中保存的诸如厂商、型号等等基本信息备用。随后系统执行BIOS中的一段例行代码,首先读取的硬盘的主引导记录(Master Boot Record (MBR))到内存中,然后执行引导记录中的代码,就可以完成引导过程并最终将整个系统的控制权交给操作系统。这就是计算机引导过程的粗略描述。如果要配置多个操作系统,希望在引导过程中可以被用户选择,就需要修改引导记录中的代码来实现这些功能。当然,这种情况下的主引导记录要比单一引导更为复杂。
要访问主引导记录,可以先启动程序:Dskprobe.exe
然后可以按照下列步骤:
1.先指定要读取(主引导记录所在)的驱动器,可用鼠标点击菜单中的:Drives->Physical Drive,会显示一个用来指定物理驱动器的对话框。
2.这个对话框的编辑栏中默认显示一个"Physical Drive 0",这就是第一个物理驱动器――硬盘。
3.鼠标点击"Physical Drive 0",再点击按钮Set Active,就完成了指定物理驱动器的任务了。4.然后指定要读取的物理扇区位置。可以点击图1菜单中的Sectors->Read Sectors。又出现的对话框可以用来指定扇区的起始位置和要连续读取的扇区数。
如Starting Sector(起始扇区)=0,Number of Sectors(扇区数)=1,点击OK按钮后,立即显示出来的内容如图1窗口中所示。这就是物理硬盘0柱面0磁盘面第一扇区的信息,也就是主引导记录的内容(包含分区表信息)。如果将这些信息单独截取出来,以文本方式显示,基本上与下面的类似:之所以说成基本类似,是因为这些内容中有些部分不是每台计算机都相同的,例如分区表会随分区数多少而不同,引导记录代码也会因是否加入多引导选择而不同。
5.将显示结果保存为一个文件:上面已经说过物理硬盘0柱面0磁盘面第一扇区的信息非常重要,我们何不趁现在计算机正常时将这些信息保存起来呢?你可以点击"File->Save as…",指定一个文件的保存路径和名称,就可以予以保存,默认的后缀是.dsk。
6.用完好的主引导记录替换当前(损坏)的这个:如果你自己的计算机存在引导问题并确认是主引导扇区的问题,况且以前保存有完好的引导记录文件,那么,你就可以进行这个操作了。首先点击"File->Open",找到引导记录文件并打开,如果核对一下没有问题,就可以再点击"Write -> Write Sector",然后会有对话框让你指定(要写入的)起始扇区,选好后点击"OK",就可以完成改写。必须说明的是:这种操作非常关键,一步也不能错。否则后果是非常严重的,为防万一,动手之前重要数据先作好备份。
能导致主引导记录损坏的原因主要有:a.病毒,许多病毒都修改这里,因为主引导记录被执行的时候,操作系统还没有在内存中完全取得系统控制权,这种修改的结果是病毒先取得了系统控制权。如果真是这种情况,病毒代码往往还会接着存放在后续的扇区中,而正常情况下,0柱面0磁面上应当是除了主引导记录外什么也没有的。假设,你的硬盘是每面63个扇区,如果你发现0柱面0磁盘面第一扇区之后的哪些扇区上并不是以0填充的,而是有别的非0值,就可以肯定你的硬盘存在问题。b.分区表损坏。这也是常见的问题,我们留在后面详细讨论。c.分区操作不当,这主要发生在没有安装操作系统之前,所以也用不上本次所介绍的工具。
三.引导记录结构。
下面是一个主引导记录区的内容:最左边的:号前的数字是相对的物理地址;中间的那些16进制数字是记录内容(限于蓝色的部分);粉红色的字体是磁盘签名,在以前的dos中是没有这一项的;以80开头的红色字体部分是分区表;末尾的55AA是引导结束标志。
Physical Sector: Cyl 0, Side 0, Sector 1
00000000: 33 C0 8E D0 BC 00 7C FB - 50 07 50 1F FC BE 1B 7C 3.....|.P.P...|
00000010: BF 1B 06 50 57 B9 E5 01 - F3 A4 CB BD BE 07 B1 04 ...PW...........
00000020: 38 6E 00 7C 09 75 13 83 - C5 10 E2 F4 CD 18 8B F5 8n.|.u..........
00000030: 83 C6 10 49 74 19 38 2C - 74 F6 A0 B5 07 B4 07 8B ...It.8,t.......
00000040: F0 AC 3C 00 74 FC BB 07 - 00 B4 0E CD 10 EB F2 88 ..<.t...........
00000050: 4E 10 E8 46 00 73 2A FE - 46 10 80 7E 04 0B 74 0B N..F.s*.F..~..t.
00000060: 80 7E 04 0C 74 05 A0 B6 - 07 75 D2 80 46 02 06 83 .~..t....u..F...
00000070: 46 08 06 83 56 0A 00 E8 - 21 00 73 05 A0 B6 07 EB F...V...!.s.....
00000080: BC 81 3E FE 7D 55 AA 74 - 0B 80 7E 10 00 74 C8 A0 ..>.}U.t..~..t..
00000090: B7 07 EB A9 8B FC 1E 57 - 8B F5 CB BF 05 00 8A 56 .......W.......V
000000A0: 00 B4 08 CD 13 72 23 8A - C1 24 3F 98 8A DE 8A FC .....r#..$?.....
000000B0: 43 F7 E3 8B D1 86 D6 B1 - 06 D2 EE 42 F7 E2 39 56 C..........B..9V
000000C0: 0A 77 23 72 05 39 46 08 - 73 1C B8 01 02 BB 00 7C .w#r.9F.s......|
000000D0: 8B 4E 02 8B 56 00 CD 13 - 73 51 4F 74 4E 32 E4 8A .N..V...sQOtN2..
000000E0: 56 00 CD 13 EB E4 8A 56 - 00 60 BB AA 55 B4 41 CD V......V.`..U.A.
000000F0: 13 72 36 81 FB 55 AA 75 - 30 F6 C1 01 74 2B 61 60 .r6..U.u0...t+a`
00000100: 6A 00 6A 00 FF 76 0A FF - 76 08 6A 00 68 00 7C 6A j.j..v..v.j.h.|j
00000110: 01 6A 10 B4 42 8B F4 CD - 13 61 61 73 0E 4F 74 0B .j..B....aas.Ot.
00000120: 32 E4 8A 56 00 CD 13 EB - D6 61 F9 C3 49 6E 76 61 2..V.....a..Inva
00000130: 6C 69 64 20 70 61 72 74 - 69 74 69 6F 6E 20 74 61 lid partition ta
00000140: 62 6C 65 00 45 72 72 6F - 72 20 6C 6F 61 64 69 6E ble.Error loadin
00000150: 67 20 6F 70 65 72 61 74 - 69 6E 67 20 73 79 73 74 g operating syst
00000160: 65 6D 00 4D 69 73 73 69 - 6E 67 20 6F 70 65 72 61 em.Missing opera
00000170: 74 69 6E 67 20 73 79 73 - 74 65 6D 00 00 00 00 00 ting system.....
00000180: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
00000190: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000001A0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
000001B0: 00 00 00 00 00 2C 44 63 - 32 31 37 31 35 0C 80 01 .....,Dc21715...
000001C0: 01 00 07 FE 7F 7D 3F 00 - 00 00 BF A3 5D 00 00 00 ....}?.....]...
000001D0: 41 7E 06 FE BF 62 FE A3 - 5D 00 A5 22 38 00 00 00 A~...b..].."8...
000001E0: 81 63 0B FE FF 7A A3 C6 - 95 00 18 A3 44 00 00 00 .c...z......D...
000001F0: C1 7B 05 FE FF FF BB 69 - DA 00 E2 48 D4 00 55 AA .{.....i...H..U.