
标题: [原创]硬盘“逻辑锁”解决办法 [打印本页]
作者: Dark-Destroy 时间: 2003-4-29 00:00 标题: [原创]硬盘“逻辑锁”解决办法
许多电脑用户都见过或听说过,当硬盘中了所谓的“逻辑锁”后,无论是用软盘、硬盘,还是光盘都不能启动一些电脑。那么,“逻辑锁”到底是什么呢?
所谓“硬盘逻辑锁”是使用了某些DOS的一个错误制成的。它采用了“循环分区表”的技术,使某些有这个错误的DOS无法用任何设备启动,包括软盘等移动设备。当DOS启动时,系统会自动搜索硬盘中的各个分区的信息,如类型、大小等,以使系统能够识别硬盘,分别分配为C、D、E、F等驱动器,并使用户能对其进行各种操作。而“逻辑锁”正是利用了这一点,通过修改硬盘的分区表使分区表发生循环,即把扩展分区的第一个逻辑盘指向自身,使某些DOS系统启动时查找分区时发生死循环而无法启动。
可见,这其实是DOS启动时的一个错误造成的。据说早在1992年,就有一个叫Mike的反病毒专家发现了此问题,并报告给了有此问题的DOS的生产厂家,如生产PC-DOS的IBM公司、生产DR-DOS/NovellDOS的Novell公司、生产MS-DOS的微软公司等等。不久后,IBM、Novell等公司纷纷宣布其DOS的新版本已彻底解决了此问题,唯有拥有MS-DOS的微软公司没有理会,导致MS-DOS的新版本,如6.x、7.x等仍继续存在此问题。
然而,由于微软的MS-DOS使用得最为广泛,所以其影响和危害也最大。一旦用户的硬盘被“逻辑锁”锁住,各种微软的操作系统,如MS-DOS 5.x/6.x/7.x/8.0等的启动盘均无法启动,造成了硬件故障的假像,而且连许多高手对此都束手无策。由于这种现像非常可怕,将导致电脑无法使用,所以许多人纷纷去寻找预防及解决的办法。其实,其解决起来并不困难,下面就介绍几种解决办法。
* 使用非MS-DOS的操作系统启动
由上文可知,“硬盘逻辑锁”主要对微软的MS-DOS系统发生影响,因此,使用其它的DOS启动就可以了。为此,我特意对几种较实用的高版本的DOS,如MS-DOS 7.10、PC-DOS 7.10、DR-DOS 7.05、ROM-DOS 7.10、FreeDOS beta9、PTS-DOS Pro 2000的启动盘在硬盘中了“逻辑锁”的情况下进行了启动测试,结果如下:
PC-DOS 7.10启动盘:启动一切正常;
DR-DOS 7.05(版本号:7.10)启动盘:启动一切正常;
ROM-DOS 7.10启动盘:启动一切正常;
FreeDOS beta9(版本号:7.10):启动时显示硬盘有错误,并完全正常启动;
PTS-DOS Pro 2000(版本号:6.90):启动一切正常。
注:以上各种DOS都十分稳定,且均支持FAT32分区和大硬盘,其中ROM-DOS 7.10还完全本地支持长文件名,且兼容性非常好。
因此,可以用任何一种以上的DOS启动盘启动带有“逻辑锁”的硬盘,启动后已被锁住的硬盘驱动器的盘符(如C:)虽然看不到,但各种磁盘分区软件,如Norton Disk Editor 2002、Norton Disk Doctor 2002,以及DOS自带的FDISK程序等,均可以显示出被锁住的硬盘,此时既可用上面提到的DISKEDIT等工具对此硬盘进行查看/手工修复等操作,也可以用一些软件进行自动修复,如NetResq、SRCTools等,以彻底去掉硬盘上的“逻辑锁”,且硬盘上的数据不会受到任何损坏。
* 使用修复的MS-DOS启动盘启动
虽然MS-DOS启动盘在正常状态下不能在硬盘被锁住的情况下启动电脑,但是由于这仅仅是MS-DOS的启动文件IO.SYS中的一个BUG,所以只要修复此BUG,MS-DOS启动盘就不会受到“逻辑锁”的影响而能正常启动了。不过,即使是修复BUG,也应该使用正确的方法。有人提到过通过修改IO.SYS中的硬盘分区标记“55AA”的方法来解决问题,其实此法非常不好。因为,这种方法其实是让IO.SYS彻底忽略硬盘的存在,即通过跳过硬盘的方法来启动软盘,这样一来,无论硬盘是否被锁住,用此启动软盘启动后硬盘都不能被识别,因此此启动盘就不能作为正常的MS-DOS启动盘了。相反,如果采用正确的方法修复IO.SYS中的BUG的话,用此软盘启动后,若硬盘是好的,则能够正常识别,而即使是硬盘被“逻辑锁”锁住了,也可以像上面的方法(即“使用非MS-DOS的操作系统启动”)中提到的用PC-DOS、DR-DOS、ROM-DOS、FreeDOS、PTS-DOS Pro等启动软盘启动后进行进一步的修复等操作。还有人提到过MS-DOS的某些低版本,如3.2版的启动盘以启动电脑。但这显然有很多缺点,一是旧版本的DOS很难找到,二是由于其版本太低,功能很少,兼容性也很差;三是这些低版本的DOS自身不支持大硬盘(连32M都不支持)、逻辑分区等,甚至会对硬盘造成真正的破坏,而且,MS-DOS 3.2等版本甚至连1.44M软盘都不认识。可见,用低版本的MS-DOS启动的方法并不是很可行。因此,使用好的方法修正高版本的MS-DOS的IO.SYS中的BUG是很重要的。以MS-DOS 6.x的启动盘为例,只需用任何16进制编辑器(如PCTOOLS等)查找IO.SYS文件中的16进制字符串“07 72 03”,并将最后的“03”替换为“06”即可。其它一些版本的MS-DOS也可以使用类似的方法,比如MS-DOS 7.10的IO.SYS的具体修改方法请见本论坛。这样一来,微软的MS-DOS启动盘也可以像其它各种DOS那样在硬盘被“逻辑锁”锁住的情况下正常启动了。
以上提到的方法都是解决“硬盘逻辑锁”的最直接的方法(即“使用不受‘逻辑锁’影响的DOS启动盘来启动电脑”),也是最好的办法。因此,只要制作一张上面提到的任何一种启动盘(如PC-DOS 7.10启动盘、ROM-DOS 7.10启动盘、FreeDOS启动盘,或修复的MS-DOS启动盘等)就可以了。既可平时将此启动盘当作正常启动盘使用,而且当硬盘被锁住时则可用此启动盘启动并解决问题。
有人还提到了其它的“方法”,如硬盘热插拔、DM低格等等,不仅麻烦、危险,而且会可能对硬盘中的所有数据造成破坏。比如硬盘热插拔后(需拆机箱且拿下硬盘,并在启动后再重新装上硬盘,非常麻烦且危险),即使是用软盘启动成功了,此时硬盘将彻底不能被识别,包括各种硬盘工具也不能识别。如果用DM跳过BIOS对硬盘进行低格,这样一来,硬盘上的所有数据将全部丢失,不可恢复,损失非常大。由此可见,硬盘热插拔等“方法”都是不实用也不可行的。
因此,只要找到了好的解决办法,并进行相应的操作,所谓的“硬盘逻辑锁”是可以轻易解决的,大家不妨一试。
文章取自"新DOS時代" http://newdos.yginfo.net/
[此贴子已经被Wengier于2004-3-5 6:06:09编辑过]
作者: GameXG 时间: 2003-5-20 00:00
98启动盘是什么版本的?
A:\>ver
Windows 98 [Version 4.10.2222]
98启动盘怎么修改??
作者: Dark-Destroy 时间: 2003-5-20 00:00
MS-DOS 7.1
你是要改什麼??
作者: GameXG 时间: 2003-5-20 00:00
以MS-DOS 6.22的启动盘为例,只需用任何16进制编辑器(如PCTOOLS等)查找IO.SYS文件中的16进制字符串“07 72 03”,并将最后的“03”替换为“06”即可。其它版本的MS-DOS也可以使用类似的方法。这样一来,微软的MS-DOS启动盘也可以像其它各种DOS那样在硬盘被“逻辑锁”锁住的情况下正常启动了。
7.1的怎么改??
作者: Wengier 时间: 2003-5-21 00:00
我试过,7.1的IO.SYS中虽然也有这个字符串,但是即使修改了也没有用。看来得另想办法了。
作者: Wengier 时间: 2003-5-21 00:00
这是MS-DOS 6.22的IO.SYS中的相关代码:
156A:2A00 8A7701 MOV DH,[BX+01]
156A:2A03 8A165C17 MOV DL,[175C]
156A:2A07 BB0002 MOV BX,0200
156A:2A0A B80102 MOV AX,0201
156A:2A0D CD13 INT 13 --- 读取硬盘扇区
156A:2A0F 7210 JB 2A21
156A:2A11 BBC203 MOV BX,03C2
156A:2A14 06 PUSH ES
156A:2A15 E80A00 CALL 2A22
156A:2A18 07 POP ES
156A:2A19 7203 JB 2A1E --- 要修改的就是这里,改成“JB 2A21”就可以了。即一发现小于上一个值的话,就跳出循环,而不是被“逻辑锁”锁死在这儿
156A:2A1B E84100 CALL 2A5F
156A:2A1E E973FF JMP 2994
156A:2A21 C3 RET
156A:2A22 57 PUSH DI
156A:2A23 53 PUSH BX
156A:2A24 1E PUSH DS
156A:2A25 06 PUSH ES
156A:2A26 26 ES:
156A:2A27 803F01 CMP BYTE PTR [BX],01
156A:2A2A 741B JZ 2A47
156A:2A2C 26 ES:
156A:2A2D 803F04 CMP BYTE PTR [BX],04
156A:2A30 7415 JZ 2A47
但MS-DOS 7.10的IO.SYS是完全修改过的。
[此贴子已经被作者于2003-5-21 19:26:39编辑过]
作者: maple 时间: 2003-5-30 00:00
THANK YOU!
作者: xxtt99 时间: 2003-6-8 00:00
如何判断硬盘是中了“逻辑锁”呢?我有一个硬盘BIOS能够识别,但是98的fdisk不能识别。谢谢!!
作者: xxxx 时间: 2003-6-8 00:00
谢谢!!
作者: 111888 时间: 2003-6-8 00:00
是一个好办法啊,
作者: 111888 时间: 2003-6-8 00:00
是否可以明白地说用WIN98启动盘来启动,就不存在逻辑锁这个问题了。因为它就是MS-7.10版本啊。
作者: 111888 时间: 2003-6-8 00:00
如果不行,我还是去改MS-6.22版本吧。
作者: 九口 时间: 2003-6-15 00:00
| Quote: |
以下是引用Dark-Destroy在2003-4-29 2:58:07的发言:
许多电脑用户都见过或听说过,当硬盘中了所谓的“逻辑锁”后,无论是用软盘、硬盘,还是光盘都不能启动一些电脑。那么,“逻辑锁”到底是什么呢?…………如NetResq等,具有自动去掉“逻辑锁”的功能,且硬盘上的数据不会受到任何损坏。
|
|
版主在这里提到的工具:NetResq在哪里有下载啊?
作者: Dark-Destroy 时间: 2003-6-15 00:00
論壇中有下載地址的~~
作者: xxtt99 时间: 2003-6-16 00:00
在哪里呀!我找不到。请说明好吗?
作者: Wengier 时间: 2003-6-21 00:00
我现在已对MS-DOS 7.10的IO.SYS修改成功,让它支持“逻辑锁”了。请看:
http://www2.zzu.edu.cn/ie/newdos/dispbbs.asp?boardID=11&ID=4082
作者: liucity 时间: 2004-7-29 00:00
http://www2.zzu.edu.cn/ie/newdos/dispbbs.asp?boardID=11&ID=4082打不开啊。
作者: ccs 时间: 2004-10-10 00:00
打不开打不开打不开打不开打不开打不开
作者: ttimber 时间: 2005-1-5 00:00
谢谢你的辛苦!
作者: 本是 时间: 2005-3-17 00:00
文章很精彩!版主还可以参考一篇文章“再论制硬盘逻辑锁”(http://blog.csdn.net/ghj1976/archive/2001/02/28/3389.aspx)。
| 欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) |
Powered by Discuz! 2.5 |