当前位置: 技术问答>linux和unix
硬盘逻辑锁问题----之二
来源: 互联网 发布时间:2014-12-16
本文导语: to All: 关于硬盘逻辑锁的问题已经提过一次,得到不少回复,其中 baiyu(baiyu) 朋友提供了hdunlock.com原件,可惜试过之后无法解决问题。而上次回复之中,有些泛泛而谈,故而此次将hdlock.exe得源码附上,请...
to All:
关于硬盘逻辑锁的问题已经提过一次,得到不少回复,其中 baiyu(baiyu) 朋友提供了hdunlock.com原件,可惜试过之后无法解决问题。而上次回复之中,有些泛泛而谈,故而此次将hdlock.exe得源码附上,请精通汇编和DOS系统的朋友试试身手,分析一下这个程序,以就这个程序个例探讨逻辑锁问题。回复数超过5次即结帖整理。
附:hdlock.com
>debug hdlock.cmm
-u 100 12a
126D:0100 B80102 MOV AX,0201
126D:0103 BB0002 MOV BX,0200
126D:0106 B90100 MOV CX,0001
126D:0109 BA8000 MOV DX,0080
126D:010C CD13 INT 13
126D:010E C706FE030000 MOV WORD PTR [03FE],0000
126D:0114 B80103 MOV AX,0301
126D:0117 BB0002 MOV BX,0200
126D:011A BA8000 MOV DX,0080
126D:011D B90100 MOV CX,0001
126D:0120 CD13 INT 13
126D:0122 BA4001 MOV DX,0140
126D:0125 B409 MOV AH,09
126D:0127 CD21 INT 21
126D:0129 CD19 INT 19
-d 12b 156
126D:0120 00 00 00 00 00 .....
126D:0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
126D:0140 48 61 72 64 20 64 69 73-6B 20 69 73 20 6C 6F 63 Hard disk is loc
126D:0150 6B 65 64 2E 0D 0A 24 ked...$
关于硬盘逻辑锁的问题已经提过一次,得到不少回复,其中 baiyu(baiyu) 朋友提供了hdunlock.com原件,可惜试过之后无法解决问题。而上次回复之中,有些泛泛而谈,故而此次将hdlock.exe得源码附上,请精通汇编和DOS系统的朋友试试身手,分析一下这个程序,以就这个程序个例探讨逻辑锁问题。回复数超过5次即结帖整理。
附:hdlock.com
>debug hdlock.cmm
-u 100 12a
126D:0100 B80102 MOV AX,0201
126D:0103 BB0002 MOV BX,0200
126D:0106 B90100 MOV CX,0001
126D:0109 BA8000 MOV DX,0080
126D:010C CD13 INT 13
126D:010E C706FE030000 MOV WORD PTR [03FE],0000
126D:0114 B80103 MOV AX,0301
126D:0117 BB0002 MOV BX,0200
126D:011A BA8000 MOV DX,0080
126D:011D B90100 MOV CX,0001
126D:0120 CD13 INT 13
126D:0122 BA4001 MOV DX,0140
126D:0125 B409 MOV AH,09
126D:0127 CD21 INT 21
126D:0129 CD19 INT 19
-d 12b 156
126D:0120 00 00 00 00 00 .....
126D:0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
126D:0140 48 61 72 64 20 64 69 73-6B 20 69 73 20 6C 6F 63 Hard disk is loc
126D:0150 6B 65 64 2E 0D 0A 24 ked...$
|
修复方法:
方法一:手动修复硬盘,就是上面介绍的
方法二:在本站下载“DOS3.31完全版”和“KV3000破解版”,按照README把DOS3.31制作成引导软盘,再把KV3000的两个文件复制到软盘中(如果空间不够,可以删除一些外部命令文件),用这个二合一的软盘启动电脑,就可以直接用KV3000的F10"系统测试与灾难修复"功能进行恢复了。
方法三:将该硬盘设为None,然后使用DM分区程序可以对其进行重新分区格式化,但数据全部丢失。
方法四:修改DOS启动文件(不破坏数据)
首先准备一张DOS6.22的系统盘,带上debug、pctools5.0、fdisk等工具。然后在一台正常的机器上,使用你熟悉的二进制编辑工具(debug、pctools5.0,或者windows下的ultraedit都行)修改软盘上的IO.SYS文件(修改前记住改该文件的属性为正常),具体是在这个文件里面搜索第一个“55aa”字符串,找到以后修改为任何其他数值即可。用这张修改过的系统软盘你就可以顺利地带着被锁的硬盘启动了。不过这时由于该硬盘正常的分区表已经被黑客程序给恶意修改了,你无法用FDISK来删除和修改分区,而且仍无法用正常的启动盘启动系统,这时你可以用DEBUG来手工恢复。使用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 运行
-d500 查看运行后500地址的内容
这时候会发现地址6be开始的内容是硬盘分区的信息,发现此硬盘的扩展分区指向自1己,这就使DOS或WINDOWS启动时查找硬盘逻辑盘进去死循环,在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(重置硬盘引导扇区的引导程序),再重新启动电脑就行了。
方法五:感谢网友xhgc提供
需要在正常机器上作一个启动盘,做法如下:
xx:>Debug
-A 0100
xxxx:0100 xor ax,ax
push ax
pop ds
push ax
pop es
mov cx,100
mov bx,7c00
xxxx:010c mov word ptr [bx],0
inc bx
inc bx
loop 10c
mov ax,0301
mov cx,0001
mov dx,80
mov bx,7c00
int 13
jmp ffff;0000
xxxx:0127
-w 100 0 0 1
-q
用它启动问题机,结果是问题机的硬盘主引导扇区全清零,然后自动重启,就可以用别的启动设备重装系统了.
方法一:手动修复硬盘,就是上面介绍的
方法二:在本站下载“DOS3.31完全版”和“KV3000破解版”,按照README把DOS3.31制作成引导软盘,再把KV3000的两个文件复制到软盘中(如果空间不够,可以删除一些外部命令文件),用这个二合一的软盘启动电脑,就可以直接用KV3000的F10"系统测试与灾难修复"功能进行恢复了。
方法三:将该硬盘设为None,然后使用DM分区程序可以对其进行重新分区格式化,但数据全部丢失。
方法四:修改DOS启动文件(不破坏数据)
首先准备一张DOS6.22的系统盘,带上debug、pctools5.0、fdisk等工具。然后在一台正常的机器上,使用你熟悉的二进制编辑工具(debug、pctools5.0,或者windows下的ultraedit都行)修改软盘上的IO.SYS文件(修改前记住改该文件的属性为正常),具体是在这个文件里面搜索第一个“55aa”字符串,找到以后修改为任何其他数值即可。用这张修改过的系统软盘你就可以顺利地带着被锁的硬盘启动了。不过这时由于该硬盘正常的分区表已经被黑客程序给恶意修改了,你无法用FDISK来删除和修改分区,而且仍无法用正常的启动盘启动系统,这时你可以用DEBUG来手工恢复。使用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 运行
-d500 查看运行后500地址的内容
这时候会发现地址6be开始的内容是硬盘分区的信息,发现此硬盘的扩展分区指向自1己,这就使DOS或WINDOWS启动时查找硬盘逻辑盘进去死循环,在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(重置硬盘引导扇区的引导程序),再重新启动电脑就行了。
方法五:感谢网友xhgc提供
需要在正常机器上作一个启动盘,做法如下:
xx:>Debug
-A 0100
xxxx:0100 xor ax,ax
push ax
pop ds
push ax
pop es
mov cx,100
mov bx,7c00
xxxx:010c mov word ptr [bx],0
inc bx
inc bx
loop 10c
mov ax,0301
mov cx,0001
mov dx,80
mov bx,7c00
int 13
jmp ffff;0000
xxxx:0127
-w 100 0 0 1
-q
用它启动问题机,结果是问题机的硬盘主引导扇区全清零,然后自动重启,就可以用别的启动设备重装系统了.