- 电脑使用一直正常,某天上网突然死机,重启系统后,自检正常,过后一直无响应。使用软盘、光盘、挂双硬盘都无法正常启动。
-
发布时间:2010-10-22 17:31:04
发布时间:2010-10-22 17:31:04
根据现象分析是被黑客或者恶意程序设置了硬盘逻辑锁(也称逻辑炸弹)。正常情况下,系统启动时先查找引导分区,然后依次查找扩展分区的各个逻辑分区。硬盘逻辑锁修改了第一个逻辑分区的地址,将其改为主引导分区的地址。这样,在启动时,系统在查找逻辑分区时总是找到引导分区,就形成了死循环,导致任何方式都无法正常启动系统。
下面简单介绍三个比较有效的逻辑锁解锁方法。
最简单的方法是使用DM之类的软件对硬盘进行低级格式化,这种方法不能保留硬盘上的所有数据。开机进入BIOS设置程序,将带有逻辑锁的硬盘设置为None。重启,使用软盘启动到DOS环境,运行事先复制到另一张软盘上的DM程序,它可以正确识别被设置为None的硬盘,此时进行低级格式化即可(只需低级格式化开始的几个磁道,即格式化开始一会就停止)。这样低级格式化后的硬盘就可以正常启动、重新分区和格式化了。
另一种方法是通过汇编语句修改分区信息,这种方法稍微复杂,但可以保留部分或者全部硬盘数据。首先准备一张DOS启动盘,将Debug和Fdisk程序复制到上面。在其他电脑上,将软盘上的IO.SYS文件的只读等属性取消,并使用二进制编辑工具(DOS环境的Debug和PCtools,Windows环境的Ultraedit)进行修改,搜索第一个55AA字符串,改为任意字符(例如66BB)。接下来就可以使用修改后的软盘启动电脑了。
启动系统后,需要通过Debug程序手工修改被修改的分区表,步骤如下:
A:\>debug
-a
-xxxx: 100 mov ax, 0201 (读一个扇区的内容)
-xxxx: 103 mov bx, 500 (设置一个缓存地址)
-xxxx: 106 mov cx, 0001 (设置第一个硬盘的硬盘指针)
-xxxx: 109 mov dx, 0080 (读零磁头)
-xxxx: 10c int 13 (硬盘中断)
-xxxx: 10e int 20
-xxxx: 0110 (退出程序)
-g (运行)
-d 500 (查看地址为500的寄存器)
从地址6BE开始的内容是硬盘分区的信息,使用E命令修改内存数据:
E6BE
××.0 ××.0 ××.0 ... 55 AA
把数据××改成0,再用硬盘中断13把修改好的数据写入硬盘:
A>\debug
-a 100 (要修改的寄存器地址为100)
-xxxx: 100 mov ax, 0301 (写硬盘一个扇区)
-xxxx: (直接按回车)
-g (运行)
-q (退出)
最后,执行Fdisk/MBR命令,重写硬盘引导区的引导程序,重启电脑。
第三个方法是制作一张“解锁”软盘。首先将故障硬盘卸下,使用带有Debug程序的DOS启动盘启动系统,执行Debug命令,然后将启动盘取出,插入一张已格式化的空白软盘,在Debug环境中进行如下操作:
-A 0100
XXXX:0100 XOR AX, AX
XXXX:0102 PUSH AX
XXXX:0103 POP DS
XXXX:0104 PUSH AX
XXXX:0105 POP ES
XXXX:0106 MOV CX, 100
XXXX:0109 MOV BX, 7C00
XXXX:010C MOV WORD PTR [BX], 00
XXXX:0110 INC BX
XXXX:0111 INC BX
XXXX:0112 LOOP 10C
XXXX:0114 MOV AX, 0301
XXXX:0117 MOV CX, 0001
XXXX:011A MOV DX, 80
XXXX:011D MOV BX, 7C00
XXXX:0120 INT 13
XXXX:0122 JMP FFFF:0000
XXXX:0127
-W 100 0 0 1
-Q
接下来,关闭系统。将故障硬盘单独作为主盘安装好,使用刚制作的软盘启动系统,系统会自动进行修复,然后重启。将软盘取出,换上DOS启动盘,启动到DOS环境。此时,硬盘逻辑锁已经解除,但还无法使用,需要重新进行分区和格式化。如果想保留硬盘上的数据,可以使用KV300(Z+版以上)进行分区扫描恢复操作。
说明:除了这三个方法,还可以通过热插拔硬盘的方法跳过逻辑锁的控制,在用软盘启动系统后再接上硬盘电源线,然后手工修改引导程序。但此方法过于危险,很容易毁坏硬件,不建议使用。