以文本方式查看主题

-  一个人客栈  (http://www.ygrclub.com)
--  『计算机天地』  (http://www.ygrclub.com/bbs/list.asp?boardid=25)
----  怎样手动重建分区表  (http://www.ygrclub.com/dispbbs.asp?boardid=25&rootid=6106&id=6106)


--  作者:小妖
--  发布时间:2002-3-29 17:54:04

--  怎样手动重建分区表

一硬盘为30G,分了一个区,分区类型为FAT32的,装的是WIN98系统,故障现象为硬盘找不到了。
  用KV3000的A盘启动,运行KV3000.EXE,发现0扇区被破坏了,表的开始几个字节显示为"FC608B44 242020",而往后翻页,发现全是乱码。以上信息表明,此硬盘遭CIH破坏。
  开始用KV3000的F10功能进行自动修复,但是搜索了二行多了都没有搜索到(可能是由于大容量硬盘的缘故,搜索时间比较长),所以决定改用KV3000的F6编辑功能进行手动修复。
  修复步骤:
  1、用KV3000的F4搜索功能搜索字符串"0000F8FF",这是搜索FAT表2开始几个字节,经过搜索,在14399停留显示,此时向后再翻一页,结果在"14400"扇区找到了此硬盘的FAT表2;
  2、进入14400扇区,按Ctrl+F10组合键,准备将FAT表2复制到FAT表1处,此时屏幕上出现:
  To Write Sector 0-[ ](写到第几扇区)
  Write Sector Count [ ](写几个扇区)
  将FAT表2写到FAT表1开始95扇区,共写1500个扇区(一般的FAT32位的FAT表1开始处都在95扇区),CIH病毒会破坏硬盘前1117个扇区左右,所以要写入1500个扇区,即大于1117个扇区,这是把好的FAT表2恢复到被CIH破坏的FAT表1处。
  3、现在修复硬盘主引导扇区(0扇区)
  在表的开头显示: hard Disk Head=255 cyls=3649 Sector=63
  Total Sector(总扇区数)=58621184
  根据以上的信息,推算出C盘的主引导分区表的第二关键代码:
              8001 01000CFE FFFF3F00
0000C27C 7E03
  "80"为引导状态,80h表示此分区可作启动盘,00h表示不引导;
  "01"为起始磁头;
  "0100"为C盘的起始扇区和柱面;
  "0C"为分区类型,大于8G以上的FAT32位的应用0Ch表示,小于8G,用0B表示;
  "FE"为结束磁头,此数值的算法:255-1=254,再把此数值十进制254转换成十六进制=FE,所以此处为"FE";
  "FFFF"为C盘结束扇区和柱面;
  "3F000000"为绝对引导扇区,计算实际值时,字组内前后位(byte)交换,即实际十六进制为0000003Fh,转换成十进制为63,数值可以从Sector=63处得到;
  "C27C7E03"为C区的扇区数,算法:总结扇区数:58621184+1-63=58621122,把十进制58621122转换成十六进制:037E7CC2h,然后字组内前后位(byte)交换,即C27C7E03,所以此处为"C27C7E03";
  把以上推算出来的C盘第二关键代码写回到主引导区的原位置,然后退到A提示符下,用KV3000/K命令硬性的将硬盘主引导程序写入0扇区,这时主引导分区表已修复完毕。
  4、现在修复C盘BOOT区(63)扇区。进入63扇区,用F5写功能,从表的开始写入:
  EB589000 00000000 00000000 02202000 02000000 00F80000
         (1)              (2)    (2)
  3F00FF00 3F000000 C27C7E03 E1370000 00000000 02000000
                        (2)
  01000600 00000000 00000000 00000000 800029
             (3)         (3)
  "EB5890"为主引导扇区的最开头,一个JMP(jump,跳转)指令,使启动的程序跳过磁盘I/O数据而继续进行;
  "0002"为每个扇区的字节数,每个扇区有512字节,把十进制512转换成十六进制=0200h,字组内前后位(byte)交换,即"0002",所以此处为"0002";
  "20"为每个簇的扇区数(目录扇区数),得出方法,按F4搜索字符串"Command"(此为C盘根目录下的一个文件名),最后在28705扇区找到了这字符串,然后往后翻页,数一下有几个目录扇区数,结果在28737扇区发现已经不是目录区了,所以,目录扇区数=28737-28075=32个扇区,十进制32转换成十六进制=20h,所以此处为"20";
  "2000"为保留扇区数,保留扇区记录着保留给FAT和根目录区的扇区的数量,此数算法:95(FAT表1的开始扇区)-63=32,把十进制32转换成十六进制=0020h,字组内前后位(byte)交换得:2000,所以此处为"2000";
  "02"为FAT表的份数,一般FAT32位的有2份,所以为"02";
  "F8"为介质描述;
  "3F00"为每道的扇区数,开头显示:Sector=63,此63即每道的扇区数,将十进制63转换成十六进制=003Fh,字组内前后位(byte)交换得3F00,所以此处为"3F00";
  "FF00"为磁头数目,开头显示:Head=25,此数即为物理磁头数,但大于8G硬盘其逻辑磁头数为255,将十进制255转换成十六进制=00FFh,字组内前后位(byte)交换得FF00,所以此处为"FF00";
  "3F000000"为隐藏扇区数,这里记录着分区扇区及其后面空下来的扇区总数,有63个扇区,把十进制63转换成十六进制=0000003Fh,字组内前后位(byte)交换得3F000000,所以此处为"3F000000";
  "C27C7E03"为C区扇区总数,此数值和引导扇区中的C区扇区数是一样的,可以从C区主引导扇区中得到;
  "E1370000"为FAT的扇区数,算法:(28705(目录扇的开始扇区数)-95)÷2=1405,此数就是FAT的扇区数,再将此十进制1405转换成十六进制=37E1h,字组内前后位(byte)交换,得E1370000,所以此处为"E1370000";
  上述目录扇区的开始扇区数28705在前面有述。
  "02000000"为根目录所在簇数,一般为第2簇,为00000002h,字组内前后位(byte)交换得02000000,所以此处为"02000000";
  "0100"为文件系统信息扇区,此文件系统信息扇区为1扇区,为0001h,字组内前后位(byte)颠倒得0100,所以此处为"0100";
  "0600"为系统引导扇区数目,FAT32位的系统引导扇区有7个扇区,即0至6为0006h,字组内前后位(byte)颠倒得0600,所以此处为"0600";
  "80"为磁盘编号(第一个硬盘为80h);
  "29"以后为扩展的引导扇区特征码及系统安装序列号等,这部份可用标准的硬盘照搬过来。
  注:
  (1)OEM名称和版本号,传系统即可解决;
  (2)FAT32位的此处应为0;
  (3)保留。
  5、写入完毕后,拿一张相同版本的WIN98启动盘启动,往C盘传一下系统,具体*作:用WIN98启动盘启动完之后,在A提示符下键入:SYS C:,做完这一切后,把软盘取出,按Ctrl+Alt+Del组合键重新启动计算机,终于可以进入WIN98系统了,而且数据全部无损。

(不能光索取,我也奉献一点,呵呵)


--  作者:王新
--  发布时间:2002-3-30 0:00:07

--  
不错,就是希望你们有这样发贴的!!!!!!!!!!!!!!!
--  作者:小妖
--  发布时间:2002-3-30 0:45:48

--  
申明:这不是我写的,也是上次我单位的一台机子分区表损坏别人发给我的,本来我想按这个做,可是我没修好,别人修好了,呵呵。

BBS就是交流的嘛,我充分发挥“不耻下问”,不,应该是“厚着脸皮到处问”的精神,哈哈。


[此贴子已经被作者于2002-3-30 0:45:48编辑过]


版权所有: Inncn.Com 一个人客栈 旧事回顾 联系:小刀
页面执行时间:140.625毫秒