|
|
用FDISK重建DOS硬盘主引导记录 8 Z3 @8 R1 Z q0 E a
, F, Z( e% t Q, Q5 B2 \9 j * o; A( X0 F' \. K1 r) Q
9 `- Z" H5 @' j. r- f, W* `
( b9 u/ O& {5 u' E) A( O
硬盘主引导记录遭到破坏,使硬盘无法正常工作,这是硬盘最常见的故障之一。这种情况的出现,主要是由于病毒感染、人为的错误操作或系统突然掉电等意外情况引起的。
+ _- z7 A. l1 c l) H7 U- D4 l目前,硬盘已经成为微机系统最重要的硬件资源。如果硬盘主引导记录遭到破坏,会给用户带来极其严重的损失。因此,研究一种为用户所接受的,能迅速、安全、有效地重建硬盘主引导记录的方法是十分必要的。
% M Y- H7 x' Y8 }$ \+ {一、主引导记录的结构和功能
) D. o! P& R# o; }1 ^" s' k7 p1.主引导记录的结构
) {. N% q+ n% J! IMS-DOS操作系统,其硬盘主引导记录是由FDISK.COM在给硬盘分区时创建的。一个完整的硬盘主引导记录共有512个字节,在硬盘中占一个扇区,该扇区位于硬盘的0面0道1扇区。该记录分为主引导程序区、硬盘分区表和硬盘赋权标识三个部分。前1BDH字节为主引导程序区。现在的主引导程序一般占用DAH左右字节,后面为零字节。这主要是兼顾到其它操作系统、多个操作系统共存以及为将来扩展留有余地。从1BEH~1FDH为硬盘分区表,可建四个分区表,每个表16个字节,记载每个分区的信息,最后两个字节存放硬盘赋权标志-A
8 Q8 T4 y- |4 k) ]A55H。
3 [# Y: [; C! ?# }' r k' z2.分区表的结构
7 B! S) \7 m3 @- U& ]分区表的组成见分区表的内存布局及填写示例。除相对扇区和实用扇区占4个字节外,其余均为1个字节。自举标志和系统标志是记录分区性质的参数。当某一分区被指定为激活分区时,该处标志为80H,而其它分区的该标志为00H。四个分区表内只能有一个80H标志。系统标志说明该分区操作系统的类型。不同系统有不同的代码,DOS系统标志说明有四个,三个是分区代码(01H,04H,06H代表不同DOS版本),一个是扩展分区代码(05H)。 & _. @, v" J+ N# n. ?* z
@@07A08300.GIF;附表 分区表的内存布局及填写示例@@ , t9 ]" c8 J3 C6 p# k
3.主引导记录的功能 + s% `7 Y' O1 E; R
主引导记录主要提供硬盘赋权标识、硬盘分区信息、系统主引导程序三种功能。
/ ^$ f# k3 Q9 s8 n用硬盘启动系统时,主引导记录的三种功能全部提供,而用软盘启动时,仅提供前两种功能。
" W. L2 P4 s( j1 n% V/ I# X0 j0 }二、重建主引导记录的原理和方法 . u( N" V6 @; A5 ]7 E3 a- t
1.目前重建主引导记录的方法及其缺点 ' g$ F2 D9 L6 l% a0 `
目前使用较广泛的重建主引导记录的方法有以下几种。 3 r1 i5 C- f* B: |# Z; _
(1) 预先备份主引导记录,当主引导记录被破坏后,直接重建。这种方法简单、方便,但对没有预先备份的用户是行不通的。 , H0 J: P% T e. [! n. G& w
(2) 从相同型号及具有相同分区的硬盘上读取主引导记录,写到被破坏的硬盘上,达到重建的目的。这种方法也比较简单、方便,但相同型号的硬盘特别是具有相同分区的主引导记录很不容易找,而且对有多个分区的硬盘来说,如果用户忘记每个分区的大小,就不能重建。 / J1 K. b- ~( g# b) c0 b, g
(3) 用手工计算的方法重建主引导记录。这种方法灵活性大,适应范围广,但非常麻烦,容易出错,而且对于不太熟悉硬盘主引导记录结构、对操作系统本身不是非常熟悉的用户来说,使用起来也非常困难。 % u. p x6 W# A9 e! r
2.用FDISK.COM重建主引导记录的原理和实现 ! g8 M3 d1 F' b$ J& Z
当硬盘的主引导记录被破坏以后,很多用户采用FDISK.COM重建主引导区,但在重建的过程中,会彻底破坏硬盘的原有数据。这是因为在创建过程中,对DOS分区的DOS引导区、FAT表区以及文件目录区进行了格式化和写零操作,以确保FORMAT.COM能顺利进行DOS系统格式化。因此,在FDISK.COM创建主引导区的过程中,如果能阻止其对DOS主引导区和FAT表以及文件目录区进行格式化和写零操作,就可以在不破坏原来硬盘数据的情况下,重建DOS主引导记录。
' Q/ K3 m' s" o根据上面的要求,可以用一段驻留程序实现。它的具体功能是拦截13H号中断,取消所有对硬盘格式化操作和除对硬盘主引导区(0面0道1扇区)以外的所有写操作。 ( i0 e% k3 L# L) G- N1 J5 Q
CH13.ASM程序:
3 k& k5 a+ W: o1 ?4 t, X. NCODE SEGMENT
/ Z! C- r, E3 a; Z* s) Z7 d! L3 YASSUME CS:CODE,DS:CODE,ES:CODE
% U8 ?4 d' o1 i% ]ORG 100H 0 {. y/ t) J7 S8 a
START:JMP BEGIN
q0 P+ A. E6 _% q) Y1 g6 \: A5 l0 C5 NINT-13:DB 04H DUP(0) : U0 A8 C+ A0 c, z0 Z1 p' Q
RECEI:CMP AH,05H
9 Y, d. m1 |& z5 {$ x) ?JNZ CHK1
8 J: @3 P6 }: B% T. @2 h. s- ?CHAN:MOV AH,00H
7 g+ D7 n5 T7 s0 p( N+ o9 {CHK1:CMP AH,03H # z/ ~7 v; |7 C
JNZ PASS 7 B ]/ F" L% n
CMP AX,0301H
& I5 r F& S/ q" _7 o) EJNZ CHAN
* e4 f0 Y% e4 X+ f" S3 @6 ?5 x; mCMP CX,0001H - z; Y% p m" ]1 P( l- M) g y
JNZ CHAN 9 Z+ g" ^9 S7 K6 r
CMP DX,0080H
- d" V4 E0 c5 u# s4 p. e! uJNZ CHAN * o+ [7 b4 S9 `
PASS:PUSHF ; Z9 ]. d8 K& g7 r0 B* d
CALL CS:DWORD PTR[INT-13] ( n0 @% ~) `2 p& a. h
IRET
' |, U3 ?! l# r! j* t2 J7 \BEGIN:JMP BEGIN1
6 z3 W {: s* e$ J+ {1 b& s* XDISP1:DB 0DH,0AH,’程序驻留成功!’, 0DH,0
7 i5 b0 r7 Q) v) o) e2 s) [
7 g6 v* c; x8 Q# @% i更多详情:http://www.shequ.shejis.com/af_bbs/dispbbs.asp?ID=379149 |
|