KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

分区表又被破坏了,求救。

[ 9276 查看 / 28 回复 ]

回复:分区表又被破坏了,求救。

以下引用withwind在2005-2-16 23:03:11的发言:


石器时代听说高手可以用煮沸的开水消毒...- -

我可不是在kuso- -
MISSING IN ACTION
TOP

回复:分区表又被破坏了,求救。

挂到别的机器上用FinalData或Easy Recovery之类的工具。。。比较容易上手orz
TOP

回复:分区表又被破坏了,求救。

在网上找的
  当通过Fdisk或其他分区工具对硬盘进行分区时,分区软件会在硬盘0柱面0磁头1扇区建立一个64字节的分区表。分区表的作用非常大,它规定了硬盘中有多少个分区,每个分区的起始及终止扇区、大小以及是否为活动分区等重要信息。一旦硬盘的分区表被破坏,则操作系统就会因为无法识别硬盘分区,而把硬盘作为一个尚未分区的“裸盘”来对待。

  当通过Fdisk或其他分区工具对硬盘进行分区时,分区软件会在硬盘0柱面0磁头1扇区建立一个64字节的分区表。分区表的作用非常大,它规定了硬盘中有多少个分区,每个分区的起始及终止扇区、大小以及是否为活动分区等重要信息。一旦硬盘的分区表被破坏,则操作系统就会因为无法识别硬盘分区,而把硬盘作为一个尚未分区的“裸盘”来对待。如此一来,不仅系统无法运行,而且连已经保存在硬盘上的数据也不会被系统所认可。虽然分区表被破坏只是一种硬盘“软故障”,并不是真正物理上的硬盘故障,但是,由于硬盘中往往保存了大量的重要数据,因此这种“软故障”所造成的后果是非常严重的!

  1.通过“江民硬盘修复王”修复

  分区表被破坏后,最常见的出错提示是:“Invalid Partition Table”(无效分区表)。对于分区表故障,可以通过“江民硬盘修复王”来进行修复。

  首先在江民公司的网站上下载“硬盘修复王”的镜像文件及“HD.exe”文件,然后通过“HD.exe”将镜像写入江民杀毒王2003的钥匙盘中。用该软盘启动电脑,在提示符下输入“JMHDFIX”后回车便进入了硬盘修复王的主界面。

  在主界面中按下F2键进入“系统测试与自动修复”界面,此时程序会自动检测硬盘分区表,如果分区表被破坏,则屏幕显示:

  Hard Disk Partition Table - Error!!!

  Fix Hard Disk Partition Table or Sector (Y/N)?

  大意为:硬盘分区表错误,是否修复硬盘分区表或C盘引导区?按下“Y”键修复,按下“N”键退出。

  按下“Y”键之后,屏幕显示:

  Insert a formatted diskette into drive A, Pressed "Y" to save "error" Partition table floppy filename HDPT.VIR, "N" to exit continue (Y/N)。

  大意为:请插入一张软盘,以便将坏的引导区信息做一备份,其文件命名为HDPT.VIR。插入软盘按下“Y”键继续,按下“N”键退出。

  插入一张软盘并按下“Y”键后,屏幕显示:

  Hard disk Partition table or boot sector fixed OK!!!

  Fixing ......

  注意:此时KV3000正在修复C盘的分区表,不要中断其操作。过了一会儿之后,如果屏幕出现以下字样:

  OK!OK!OK!

  Press any key to return ......

  则说明重建分区表的操作成功,按任意键退出。重新启动电脑后,如果能够进入C、D等分区,修复成功。

  2.通过Disk Genius修复

  从网上下载Disk Genius到本地硬盘之后,将下载得到的压缩包解压缩,然后将Disk Genius的主程序“Diskgen.exe”复制到启动软盘上。当然,如果没有软盘,也可以将该软件存放在硬盘或其他介质中。

  用该软盘启动系统后,在提示符下启动Disk Genius,按下Alt键激活功能菜单,选择“工具→重建分区表”菜单命令。此时,程序将出现“建议先备份分区表”提示,单击“继续”按钮后,Disk Genius提供了两种重建分区表的方式,即“自动”和“交互”。自动方式会在搜索分区的时候保留发现的每一个分区,适用于大多数情况;交互方式对发现的每一个分区都给出提示,由用户选择是否保留。当自动方式重建的分区表不正确时,可以采用交互方式重新搜索。

  重建分区过程中,搜索到的分区都将及时显示在屏幕上。但并不会立即存盘,因此,用户可以反复搜索,直到正确的建立分区表之后再存盘。通过Disk Genius可以修复很大一部分分区表故障,但对于破坏较严重的硬盘,那么只能重新对硬盘进行分区了。

  虽然在硬盘出现故障后,用户可以通过各种工具进行修复,但对于用户而言,平时养成良好的使用习惯更加重要,及时备份重要数据才能避免遭受更大的损失.
TOP

回复:分区表又被破坏了,求救。

还有这个,希望能帮到楼主,虽然我会汇编,但是这样的做法就没有做过,因为硬盘没有坏过~
    一、分区与分区表的背景知识:

  分区表存放位置在硬盘的0柱面0磁面1扇区的512个字节中的主引导记录之后,分区表信息在主引导扇区中存放的起始位置是固定的,都是从扇区的2BEH处开始连续存放,一个分区的记录信息共占用16个字节,分区表直到到该扇区倒数第三个字节结束(包括倒数第三个字节在内)。一共64个字节,所以一个硬盘最多可以分成4个分区。实际中如果分区数不满4个时,不使用的分区记录位置分区命令程序可以自动以0填充。

  每条分区记录中的这16个字节含义如下:(以分区表地址偏移来表示)

偏移量  含义  记录长度(字节)
00H  引导指示符  1
01H  分区引导记录磁头号  1
02H  分区引导记录扇区号  1
03H  分区引导记录柱面号  1
04H  系统指示符  1
05H  分区结束磁头号  1
06H  分区结束扇区号  1
07H  分区结束柱面号  1
08H  分区前面的总扇区数  4
0CH  分配给分区的扇区数  4


  表中引导指示符是指该分区是否可以引导,如果为80H,就是可引导的,是00H就是不可引导的,在使用FDISK过程中,有一项激活分区的操作,实质就是将该字节写为80H。系统指示符是表明该分区属于哪种分区格式的,01H表示FAT16.

  由于每一个分区都是可再往下划分逻辑驱动器的,所以,激活的本质是激活哪个逻辑驱动器。例如,很多机器都是将一个10G左右的物理硬盘先划分为两个分区,然后将第一分区再划分成C、D两个逻辑驱动器,激活逻辑驱动器C为可引导;到这一步特别注意:不可再激活逻辑驱动器D。如果想安装两个操作系统,必须先在第二分区中划分好逻辑驱动器,再激活该分区中的一个逻辑驱动器。

  针对硬盘分区表可进行的操作主要有:a.如何在硬盘状态完好的时候将分区表信息读出并保存?b.如何在分区表发生故障后,用备份的分区表来代替损坏的分区表?c.如果没有可用的分区表的备份,如何手工重建分区表信息?其中难度最大,当然也是技术要求最高的也就是手工重建分区表了。

  在帮助文档中,明确指出DiskProbe不支持FAT32,所以,DiskProbe对FAT32的分区表不能操作。从这一点说,它的功能受到了相当的限制。但以前曾经发现过,某些工具帮助文档中介绍的功能与实际具备的功能确实有出入,所以你也不能将帮助文档中的说法太当真了,但由于我自己机器上不是采用的FAT32分区方法,也就没有进行针对FAT32的试验。如果哪位有FAT32的硬盘,可以自己试验一下。

    解决分区表故障的步骤中,首先是读取和检查主引导记录中的分区表信息。这部分描述:

    二、取得分区表信息的方法

  不论是备份分区表或是仅仅查看一下,都需要先取得分区表信息,其步骤是:

  1. 执行程序:DiskProbe
  2. 在菜单Drives 中,鼠标点击: Physical Drive.
  3. 在菜单 Open Physical Drive 的对话框中, 以鼠标双击你准备显示分区表的那个驱动器名称。例如:Physical Drive 0
  4. 在 Handle 0范围内的 Open Physical Drive 对话框中,点击 Set Active,之后单击 OK.
  5. 在菜单的 Sectors一项中,点击 Read一项。.
  6. 在接下来出现的 Read Sectors 对话框中输入将要读取的起始扇区和扇区号, 即Starting Sector一项填写0, Number of Sectors 一项中填写1,实际这两个数字也是默认值。然后点击Read,读取扇区信息。
以上这六步骤实际就是读取主引导记录扇区;


  7. 在View菜单中,点击 Partition table。立即显示分区表信息的对话框

    8. 要在 Partition table index 的列表框中,用鼠标双击分区表的号码,图中相应的分区表信息会自动变化。 从图中可以也看出来:分区表信息和上面表中是相对应的,有:分区起始磁头号和分区结束磁头号;分区起始扇区号和分区结束扇区号;分区起始柱面号和分区结束柱面号;


  9. 按说应当将分区表保存为一个文件,但由于只有区区64个字节,并且和主引导记录共存在同一个扇区中,一般也就将它与主引导记录一并进行保存到同一个文件中。
  10. 如果使用你会使用dos的debug工具,可以编写一段汇编程序,将这个扇区的内容读取出来,用拷贝屏幕的方式进行打印,可以将主引导扇区的内容保存在纸上,作分析参考之用。由于采用了汇编语言,所以这种方法局限性小,所有windows9.x系列或dos均可用。在dos下键入:Debug 回车
(以下代码手工输入,注意空格不可省略)
  -a0
  mov ax 201
  mov bx 100
  mov cx 1
  mov dx 80
  int 13
  int 3
  -g=0

  然后用命令:-d100显示内容,在打印机联机状态下,按下键盘的PrintScreen键,就可以将屏幕上当时显示的内容完全打印到纸上。但我没有试验这个办法的在NTFS分区下是否可用。

  可能有的朋友会有这样的疑问:windows2000是对安全性要求非常高的系统,不使用口令而在汇编中调用INT13中断,来直接读取主引导扇区。会不会成功或者影响安全性呢?这种担心是多余的,因为安全性是针对操作系统和运行在操作系统之上的文件而言的,而主引导扇区并不属于任何操作系统,即机器在执行主引导记录代码的时候,操作系统还没有在内存中建立起来,一切都还没有显现,当然是安全的。所以,这和保证数据文件安全并不矛盾。

    三、如何用备份的分区表(或主引导扇区信息)来恢复损坏的分区表:

  1. 首先执行程序:DiskProbe.
  2. 在菜单Drives 中,鼠标点击: Physical Drive.
  3.  在菜单 Open Physical Drive 的对话框中, 以鼠标双击你准备修理分区表的那个驱动器名称。例如:Physical Drive 0
  4. 在 Handle 0范围内的 Open Physical Drive 对话框中,点击 Set Active,之后单击 OK.
  5.  在菜单的 Sectors一项中,点击 Read一项。
  6. 在接下来出现的 Read Sectors 对话框中输入将要读取的起始扇区和扇区号, 即Starting Sector一项填写0, Number of Sectors 一项中填写1,实际这两个数字也是默认值。然后点击Read,读取扇区信息。
  7. 在View菜单中,点击 Partition table。显示当前的分区表信息
  8. 要在 Partition table index 的列表框中,用鼠标双击准备维修的分区表的号码,选定后,对话框下半部分立即显示相应的分区表信息。(这些信息肯定是没有修理之前的数值了)。上面这些操作与读取分区表甚至与读取主引导记录的操作都是大同小异,但以下的就比较关键了:
  9. 在对话框中各个参数中填写入新的数值。这些新的数值应当是查对备份分区表信息文件后取得的。当然也可以是从备份的分区表文件直接转换为分区信息。如果编辑时不想使用对话框形式,可用上面介绍的方法将显示转换为字节形式,在字节形式下,仅显示选定的分区信息,其它部分(包括主引导记录)都是0。
  10. 在Sectors(扇区)菜单中 ,鼠标点击:Write.
  11. 这时将出现 Write Sector 对话框, 在起始扇区的 Starting sector一项中选0,然后点击 Write it 保存。

  12. 点击 Yes,这时就完成了覆盖原来数据的操作。

    四、手工重建分区表

  这种方法需要使用者非常熟悉分区结构,最好硬盘分区较少,分区情况也比较简单。如果分区多而复杂,难度太大。即使简单的情形,不到万不得已也不要用这种方法。

  手工建立分区表主要难在分区数据的计算上。计算之前需要已知的数据有:硬盘的柱面数,磁头数,每磁道的扇区数。这些数据在硬盘标签上可以很容易地查找出来。

  首先,因为0柱面0磁头(面)1扇区不属于任何分区而且是隐藏的,所以第一个分区应当从0柱面1磁头1扇区开始。现在的硬盘都比较大,常见的是每磁道63扇区,每个扇区是512字节,柱面数和磁头数则随着硬盘容量的增大而不同。计算时先选定容量,根据需要的容量,推算出第一分区结束的扇区号、磁头号和柱面号。最后填写的值要转换为16进制。紧邻上一个结束位置,就是第二分区的起始位置,依此类推,直至结束。磁头数可以理解为与磁面数相等,柱面数可以理解为一个磁面上可划分的磁道数。这样,一个磁面的容量就是512*63(扇区)*柱面数。例如第一分区要用到最前面的125个磁面(或磁头),下一分区必须从第126磁面(或磁头)开始。则容量是=512*63*125*柱面数。扇 区数柱面数推算也和这相仿。 更详细的计算请参考有关资料。算出的数据填写在分区表中,其操作同上。

    五、注意问题

  1. 上面介绍的,与其说是手工重建分区,不如说是手工新建分区。危险性很大。且没有针对NTFS试验过。
  2. 如果是恢复原有分区,不推荐手工重建,因为一旦输入错误的分区表,将丢失原有数据。
  3. 计算必须将结果转换为16进制,可以使用附件中的计算器。(设置为函数型)。
TOP

回复:分区表又被破坏了,求救。

以下引用valleyforge在2005-2-16 22:25:52的发言:
DOS时代听说高手可以DEBUG/PCTOOLS杀毒...- -

debug是个很强大的命令
可以做很多意想不到的事情
TOP

回复:分区表又被破坏了,求救。

以下引用fish在2005-2-17 0:18:32的发言:

debug是个很强大的命令
可以做很多意想不到的事情

至少对我来说...那不是意想不到的...只是我没那本事...-v-
MISSING IN ACTION
TOP

回复:分区表又被破坏了,求救。

目前只会用DEBUG来测试汇编命令影响标志的位……=v=
2007/2/20凌晨01:14:45,获得称号「大骗子」
orz

QQ群 宅在日本 74481628
宅女腐女招募中
http://www.otkjp.cn/
TOP

回复:分区表又被破坏了,求救。

不太会DEBUG,主要是很少用
对softICE就比较熟了
TOP

回复:分区表又被破坏了,求救。

以下引用fish在2005-2-17 1:17:40的发言:
不太会DEBUG,主要是很少用
对softICE就比较熟了


softICE...

目前只用过OllyDbg和W32dsm....
2007/2/20凌晨01:14:45,获得称号「大骗子」
orz

QQ群 宅在日本 74481628
宅女腐女招募中
http://www.otkjp.cn/
TOP

回复:分区表又被破坏了,求救。

嗯,olly也是经常用的,主要是它不是工作在ring0上的,这样可以一边debug一边听歌 :D
不过有相当多的软件能测出olly的,有时不得不去si+iceext的平台去debug
W32dasm不太用了,觉得C32ASM比它更方便
TOP