收藏 分销(赏)

DEBUG修复硬盘主引导区全透析.doc

上传人:仙人****88 文档编号:8921988 上传时间:2025-03-08 格式:DOC 页数:7 大小:41.50KB
下载 相关 举报
DEBUG修复硬盘主引导区全透析.doc_第1页
第1页 / 共7页
DEBUG修复硬盘主引导区全透析.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述
DEBUG修复硬盘主引导区全透析 在硬盘的数据结构中,主引导记录MBR和DOS引导记录DBR占有非常重要的地位。一旦它们出现问题,轻则无法从硬盘启动,重则造成整个硬盘或分区数据无法读取,同时它们又是硬盘数据结构中最为脆弱、故障率最高的部位之一。有关MBR和DBR的修复方法很多,但是要彻底修复这个故障,还是用DEBUG来得彻底。 DEBUG是一个Windows系统自带的DOS调试程序。一些第三方的自动修复工具软件,虽然容易操作,但适用范围小。以常用的NORTON DISK DOCTOR为例,用它修复一些标志性字节(如活动分区标志80、结束标志55 AA)错误是有效的,但对于大多数非标志性错误(如引导程序错误),它则无能为力。特别是DBR中的许多错误,它不仅无法修复,而且很容易造成其他数据结构的损坏,致使修复更加困难。DEBUG虽然操作复杂,但却灵活有效。它可针对不同的故障采用不同的方法,所有的操作均在修复者的指令下进行。只要操作者头脑清醒,这种方法是相当安全的。用DEBUG修复硬盘软故障,除了应当掌握DEBUG的一些常用命令之外,更要弄清MBR和DBR的数据结构。希望那些汇编爱好者们能通过DEBUG进行理论和实践结合来修复故障,解决实际问题。 为了正确判断MBR是否出现故障,故障在哪些字节上,必须首先调出MBR字节内容。为此我们先来看一下硬盘MBR数据结构。 MBR和分区表结构 MBR位于硬盘0柱面、0磁头、1扇区上,它由以下三个部分组成: (1)主引导程序(含出错提示信息),偏移地址为0H~1BDH; (2)分区表,偏移地址为1BEH~1FDH; (3)结束标志55 AA,偏移地址为1FEH~1FFH。 在这三部分中,最重要的是分区表,最难修复的也是分区表。不同容量的硬盘或者硬盘容量相同但分区不同,分区表也各不相同。寻找分区表相同的硬盘,对家庭用户来说是不现实的。而用相同DOS版本分区命令建立的引导程序,是基本一致的,修复时可以互相替代。可以这样认为:分区表修复了,MBR也就修复了。 分区表中有四个分区表项,每个表项长度为16字节。通常只使用前两个表项,后两个表项全部为零字节。分区表项中各个项目的偏移地址、字节数及含义见^07030701a^所示。 说明:整个硬盘划分为主分区和扩展分区,其中C盘属于主分区(活动分区),其他各盘均属于扩展分区(非活动分区)。以C盘为例:在第一分区表项中,第1字节必须为80,否则无法从硬盘启动。第2、3、4字节分别为C盘逻辑0扇区所在的磁头号、扇区号和柱面号,通常为1头1扇0柱。第6、7、8字节为C盘尾扇的位置信息──硬盘的末磁头(磁头号为硬盘磁头数减去1)、末扇区(63扇)、C盘的终止柱面。第9~12字节为C盘逻辑0扇区之前的隐含扇区数,常为63(3F 00 00 00)。第13~16字节为C盘上自逻辑0扇区开始的扇区总数,为方便,本文简称为C盘或主分区的逻辑扇区总数。 在第二分区表项中,首字节00表示本表项为扩展分区。第2、3、4字节为扩展分区中首扇的位置信息──0磁头、1扇区,柱面号则为主分区(C盘)的终止柱面号加1。第6、7、8字节为扩展分区尾扇(也是整个硬盘的尾扇)的位置信息──硬盘的末磁头(磁头号为硬盘磁头数减去1)、末扇区(63扇)、末柱面(柱面号为硬盘柱面数减去1)。第9~12字节为C盘逻辑扇区总数加隐含扇区数(63),本文简称为主分区扇区总数。第13~16字节为扩展分区扇区总数。上述二者之和应为硬盘扇区总数。 重建分区表时必须掌握以下数据: (1)硬盘的磁头数、柱面数和扇区数。这三个数可由FDISK/MBR创建的分区表项中获取,也可由CMOS设置中获取。二者应当一致。此三个数之乘积即为硬盘的扇区总数。 (2)文件系统类型是FAT16或是FAT32。此信息应由硬盘的使用者提供,或者从该盘DBR中获取,还可由FDISK/MBR创建的分区表项中看出。另外,根据C盘的大小也可作出判断。 (3)C盘的逻辑扇区总数,可由DBR中获取。它与隐含扇区数之和即为主分区扇区总数。当然,在知道本盘起止柱面号时,也可计算出这两个扇区总数。 (4)主分区的末扇区所在的柱面号及扩展分区首扇区所在的柱面号,后者比前者多一个柱面。扩展分区首扇区所在的柱面号按下式计算: 扩展分区起始柱面号=主分区扇区总数/(63×硬盘磁头数) (5)扩展分区扇区总数=硬盘扇区总数-主分区扇区总数。 除了上述MBR之外,如果一个硬盘有多个分区,在其他各盘的起始柱面、0磁头、1扇区上,均有该盘的分区表。但没有引导程序。第一表项为本盘的起始磁头/扇区/柱面、分区类型、终止磁头/扇区/柱面、隐含扇区数、逻辑扇区总数;第二表项为下盘(后续盘)的起始磁头/扇区/柱面、分区类型和终止磁头/扇区/柱面,本盘之前的扩展分区扇区总数、下盘(后续盘)的扇区总数。以此来构成各盘间的链接。 查看MBR的HEX显示 了解了以上情况后让我们来实际解决一下如何查看MBR的HEX显示。 A:>DEBUG -A 100 1D2F:0100 MOV AX,0201 1D2F:0103 MOV BX,1000 1D2F:0106 MOV CX,1 1D2F:0109 MOV DX,80 1D2F:010C INT 13 1D2F:010E INT 20 1D2F:0110 -G=100 -D1000 显示读入内存的内容 出现MBR的HEX显示后,对照前文MBR结构进行检查,特别注意关键字节(如55 AA、活动标志80和非活动标志00等)的内容和偏移地址是否正确。 例1 重建MBR 一个3.5GB硬盘,系统启动时在更新ESCD之后无法继续,提示信息为:“Disk boot failure,insert system disk and press enter.”只知道该硬盘有多个分区,但不清楚各盘容量大小。 用软盘启动后,发现各盘全部丢失。可以判断为MBR故障,因为DBR故障一般不会造成各盘同时丢失。在MBR故障中,这有多种可能:一是活动分区标志损坏,二是结束标志55 AA出错,还有可能是整个MBR被破坏。用前面查看MBR的方法,发现MBR全为乱码,需要重建。 用备份的MBR恢复 这是最简单的解决方案,假定备份MBR在软盘的第2870逻辑扇区中(见例1),恢复方法为: -L1000 0 B36 1 -D1000 确认备份MBR正常后,继续: -A100 1D2F:0100 MOV AX,0301 1D2F:0103 MOV BX,1000 1D2F:0106 MOV CX,1 1D2F:0109 MOV DX,80 1D2F:010C INT13 1D2F:010E INT20 1D2F:0110 -G=100 退出DEBUG,取出软盘,重新启动即可。 在上篇文章中,谈到了用备份的MBR来恢复损坏的MBR,而备份的MBR保存在启动盘的末尾扇区中(第2870扇即B36H扇区。因1.44MB软盘共2880个扇区,末尾扇区通常空闲未用)。这样既不影响启动盘的正常使用,同时又给备份文件恢复带来了方便。为将正常MBR备份到启动盘,可将启动盘置入软驱,在上篇查看MBR 显示的程序后面接着执行: -W1000 0 B36 1 -Q 退出DEBUG后,就把MBR备份到启动盘的第2870逻辑扇区中了。最好将备份内容和存放位置做记录,以免遗忘。此方法不仅可用作常规下的备份,还可用于修复前的备份,以使修复更加安全。 本篇着重介绍重建MBR的方法。MBR的故障是十分复杂的。有时只是其中某一字节出现错误,有时也可能是整个MBR全被损坏。为使故障能够得到最有效最迅速的修复,应当针对不同的故障部位采取不同的修复方法,这正符合DEBUG使用灵活的特点。显然,在这样一篇短文中,不可能对所有常见故障一一给出具体的修复方法。现只讨论MBR全损坏的情况。为了保留原有数据,必须重建和原来相同的MBR。这无疑难度最大。但如果将这种修复方法套用到个别字节出错的情况,虽然完全可以排除故障,却未必合理。合理的修复方法应当是小错小改,大错大改,全错重建。 在掌握了MBR的结构之后,用DEBUG修复就不太困难了(以下修复的方法和思路也可通过其他程序如diskedit来实现)。其中有一些计算,虽然也可徒手进行,但如有HEX(十六进制)、DEC(十进制)和BIN(二进制)运算功能的小型计算器,将大大减轻工作量。 仍以上篇3.5GB硬盘的故障为例。现介绍两种重建方法。 方法一:用FDISK/MBR重建 用上篇方法查看MBR的HEX全为乱码之后,接着查看DBR是否完好。因此时各盘已经全部丢失,必须通过BIOS中断调用读出C盘的DBR: -A100 1D2F:0100 MOV AX,0201 1D2F:0103 MOV BX,1000 1D2F:0106 MOV CX,1 1D2F:0109 MOV DX,180 1D2F:010C INT13 1D2F:010E INT20 1D2F:0110 -G=100 -D1000 这时出现C盘DBR的HEX显示(见^08030701a^)。 经检查DBR完好。在以上DBR表偏移地址1020H∽1023H处,知原C盘的逻辑扇区总数为2EE141H。而隐含扇区数为3FH,因此原主分区扇区总数=2EE141+3F=2EE180H。并由以上DBR表的ASCII码显示,知原C盘采用FAT32文件系统。 退出DEBUG,运行FDISK/MBR,重建MBR中的引导程序和结束标志55 AA,并且把整个硬盘创建为一个活动分区(顺便提请注意:对于多分区硬盘,在结束标志55 AA已损坏的情况下,如果分区表完好,不宜运行FDISK/MBR,否则将破坏原有的分区表)。仍进入DEBUG,查看MBR,被损坏的主引导程序和结束标志已重写,分区表项只有一个表项,其内容为: 11B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01 11C0 01 00 0B 7F FF 4F 3F 00 00 00 C1 57 68 00 00 00 由此又获得以下信息: (1)该硬盘起始头/扇/柱为01/01/00,终止头/扇/柱为7F/FF/4F,即该硬盘有128头,63扇,848柱。此组数据也可由CMOS设置中查知。 (2)该硬盘的逻辑扇区总数为6857C1H。硬盘扇区总数=6857C1+3F=685800H。由此知原扩展分区扇区总数=685800-2EE180=397680H。 (3)原扩展分区的起始柱面号=原主分区扇区总数/(硬盘磁头数×扇区数)=17DH。即原主分区的终止柱面号为380(17D-1=17CH)。第一分区表项的第7、8字节共同为主分区的终止扇区号和柱面号,其中前字节(第7字节)中的低6位为扇区号,前字节中的高2位与后字节(第8字节)合为柱面号。17CH的二进制为0101111100,它的高两位01与111111(因末扇区号为63=3F,二进制为111111)合为7F,7F即为第一表项的第7字节。17CH的二进制低8位01111100为7CH,7C即第一表项的第8字节;第一表项的第6字节(主分区终止磁头号)为7F。同样的道理,因扩展分区的起始扇区为1,起始柱面号为17DH(二进制为0101111101),知第二表项的第3、4字节分别为41H和7DH,而第2字节(扩展分区起始磁头号)为00H。另外按规定FAT32主分区类型为0B,扩展分区类型为05(分别为第一表项的第5字节和第二表项的第5字节)。 有了以上数据,按照上篇MBR分区表项说明,并注意到扇区数目HEX值(主分区逻辑扇区总数为2EE141H,扩展分区扇区总数为397680H)在存储单元的存放顺序,对上述分区表进行修改以恢复原分区表(程序续前): -E11C0 01 00 0B 7F 7F 7C 3F 00 00 00 41 E1 2E 00 00 00 -E11D0 41 7D 05 7F FF 4F 80 E1 2E 00 80 76 39 00 00 00 -E102 3 -G=100 退出DEBUG,取出软盘,重新启动,系统恢复正常。 方法二:用复制法重建MBR 在同一版本DOS分区命令所建立的MBR中,尽管分区表随硬盘或分区不同而有所不同,但它们的主引导程序却具有通用性。为此可用好硬盘同版本MBR中的主引导程序来覆盖已被损坏的MBR引导程序。具体作法是:先将好硬盘MBR写入软盘某一扇区(例如启动盘的第2872即B38H逻辑扇)中,而后进行以下操作: -L200 0 B38 1 -D200 确认拷贝的MBR无问题后,进入已全部损坏的主引导纪录区: -A100 1D2F:0100 MOV AX,0201 1D2F:0103 MOV BX,1000 1D2F:0106 MOV CX,1 1D2F:0109 MOV DX,80 1D2F:010C INT13 1D2F:010E INT20 1D2F:0110 -G=100 -E11FE 55 AA 修复已被损坏的结束标志 -M200 3BF 1000 用好MBR引导程序覆盖坏引导程序(为方便计,延伸至3BF) -E102 3 -G=100 -D1000 查看MBR引导程序复制成功后,再按照方法一重建分区表即可,只不过硬盘的磁头数、柱面数只能由CMOS设置中获取罢了。与方法一相比,它的好处在于不必担心因FDISK使用不当所造成的问题。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服