下面这种方法可以不丢失硬盘数据
、使用debug解硬盘锁
第一步,准备一张Dos的系统盘,里面拷贝debug、fdisk等命令;
第二步,在一台正常的机器上,使用你比较熟悉的二进制编辑工具(比如windows下的UltraEdit)修改软盘上的IO.sys文件(修改前请去掉该文件的只读属性);
第三步,在文件中搜索第一个"55aa"字符串,找到以后修改为任何其他数值即可;
第四步,用这张修改后的系统软盘你就可以顺利的引导带锁的硬盘启动了。但由于其分区表已经被修改,无法使用fdisk来删除和修改分区,而且仍然无法用正常的启动盘启动系统,这个时候就要debug出马了。:)
第五步,根据下面步骤操作
A:\>debug
-a
-xxxx:100 mov ax,0201(读一个扇区的内容)
-xxxx:103 mov bx,500(设置一个缓存地址)
-xxxx:106 mov cx,0001(设置第1个硬盘的指针)
-xxxx:109 mov dx,0080(读零磁头)
-xxxx:10c int 13(硬盘中断)
-xxxx:10e int 20
-xxxx:0110(退出程序返回到指示苻)
-g(运行)
-d500(查看运行后500地址的内容)
这个时候会发现地址6be开始的内容是硬盘分区的信息。此硬盘的扩展分区指向自己,这就导致了在系统启动时查找硬盘逻辑盘的过程中导致死循环。在debug指示苻下用E命令修改内存数据,具体如下:
E6BE
xx.0 xx.0 xx.0.................
......................................
.............................55 AA
55 AA表示硬盘有效,不要修改,xx0表示把以前的数据"xx"改成0。
第六步,再用硬盘中断13把修改好的数据写入硬盘就可以了。
A:\>debug
a 100(表示修改100地址的汇编指令)
-xxxx:100 mov ax,0301(写硬盘一个扇区)
-xxxx:(这里直接回车)
-g(运行)
-q(退出)
第七步,运行fdisk/mbr(重置硬盘引导扇区),再重启系统就可以了。 |