电脑硬盘被锁被锁,请问我该怎么办
发布网友
发布时间:2024-03-03 15:04
我来回答
共2个回答
热心网友
时间:2024-03-29 23:00
解开硬盘逻辑死锁的一种有效方法
一·序言
不知道你是否曾碰到过从软盘和硬盘都启动不了计算机的情形?一般计算机的硬
盘分区表被病毒感染后,若不能启动机子,通常从软盘可以启动。但在严重的情形下 ,不但从硬
盘不能启动机子,就是从软盘也不能启动。有的恶毒的病毒就能使硬盘被死锁。笔者一次在自己
机子上玩弄硬盘锁时,就被锁住过一次。结果在硬盘下选择DOS或WIN95模 式启动机子都死机,在
软盘下用DOS启动也死机;在COMS中将硬盘类型选择None,虽然可以从软盘启动,但启动后没有硬
盘,使用软盘上的FDISK命令,想重新分区或格式化都没门。 弄得我一筹莫展。
本来,硬盘被锁住时,可以采用3.0以下的DOS版本启动机子,机子启动后虽然也
不认硬盘,但其不认的原因在于其管理不了现在的大硬盘,因此可以用Debug修改硬盘 分区表,
修改后可以启动。但在已进入WINDOWS的年代,3.0以下的DOS实难找到,即使找到,你的机子上恐
怕也因没有5寸软驱而不能使用。因此,最好的办法是编制一个程序来解决 这个问题。笔者通过
尝试和思考,找到一种比较实用的方法,可以轻松解开死锁的硬盘,当然也把自己的硬盘解开
了。下面,我将这种方法介绍出来。
二·硬盘锁住原理
硬盘锁住通常是对硬盘的分区表做手脚,因此首先应该了解硬盘的分区表。硬盘
分区表位于0柱面0磁头1区,这个扇区的前面200多个字节是主引导程序,后面从01BEH 开始的64
个字节是分区表。分区表共64字节,分为4栏,每栏16字节,用来描述一个分区。如果是用DOS的
FDISK程序分区后,最多只用两栏,第一栏描述基本的DOS分区,第二栏描述 扩展的DOS分区。
分区表一栏的结构与各字节的含义如下:
00H-标志活动字节,活动DOS分区为80H,其它为00H。
01H-本分区逻辑0扇区所在的磁头号。
02H-逻辑0扇区所在柱面中的扇区号。
03H-逻辑0扇区所在的柱面号。
04H-分区类型标志。
05H-本分区最后一个扇区的磁头号。
06H-最后一个扇区的扇区号。
07H-最后一个柱面的柱面号。
08H-硬盘上在本分区之前的扇区总数,用双字表示。
0CH-本分区的扇区总数,从逻辑0扇区计数,不含隐藏扇区,用双字表示。
在上面的介绍中给出的柱面号与扇区号虽然各占一个字节,但实际上扇区号用6位
表示,柱面号用10位表示,扇区号所在字节的最高两位实际上是柱面号的最高两位。
分区表的最后两个字节是分区表的有效标志,如果将其改变,将不能从硬盘启
动,这是一种简单的锁住硬盘的方法。解决的办法是从软盘启动,启动后硬盘仍然可以 使用。用
Debug或Noratn中的Diskedit软件将硬盘该分区表中的标志恢复,则从硬盘启动也没有问题了。锁
住硬盘的另一种方法是对分区参数做手脚,如果将分区参数全部变为0,则 启动时由于找不到分
区参数,从硬盘是没法启动,从软盘启动后也不认硬盘,如果你敲入盘符C并回车,将出现提示
Invalid
driver
specification。但所幸的是,毕竟可以启动机子,不认硬盘没关系,在A盘上用
DOS的Debug仍然可以读出硬盘0柱面0磁头1扇区的内容,修改后再写入0柱面0磁头1扇 区,重新启
动机子又没问题了。如果将分区表参数随意改为其它参数,则有可能不能用可以安装DOS的DOS系
统盘启动,按F3退出后将出现内存分配错误,不能装载DOS的命令解释 器COMMAND的提示,系统就
死机了,笔者就曾碰见过这种情形。但用一张格式化成系统盘的软盘则可以顺利启动,只要有
Debug,你仍然可以将分区表参数修改回去。可怕的事情是, 如果你不幸将分区表参数改成一个
循环链,即C盘的下一个分区指向D驱,D驱的下一个分区又指向C区,这样循环下去,DOS启动或
WIN95启动时由于无休止的读取逻辑驱动器,就只有 死机的份了。这是只要有硬盘存在,不管你
用软盘还是硬盘都没法启动机子了,由于不能启动是由于硬盘造成的,即使你将硬盘下到其它计
算机上,也没法使用,这样硬盘就彻底被 锁死了,笔者所遭遇就是此情形。不信,你只需将硬盘
0柱面0磁头1扇区的1D0H处改为1(如果你的D驱开始柱面号不够大,此处本来就为1),将1D1H处
改为0,表示D盘的开始柱面号 跟C盘一样,看看你的计算机还能不能启动,不过你在没有充分的
准备前绝不要试。
一个完整的硬盘锁程序,不过是重新改写0柱面0磁头1扇区的引导程序,并将分区
表破坏或故意制造一个循环分区表,而将真正的硬盘分区表参数和引导程序放在其它 隐藏扇区并
保护起来,如果启动时口令不对,则不能启动机子,口令对了则顺利启动。这种硬盘锁程序,情
形好的还可以用软盘启动;情形严重的就是连软盘也不能启动,硬盘真被 锁住。
三·解开硬盘锁的程序法
如果硬盘被锁死,是否真的就无法解开呢?当然不是。看看问题的症结所在,根
源在于DOS中的IO.SYS文件,它包含LOADER、IO1、IO2、IO3四个模块,其中IO1中包含 有一个很
关键的程序SysInt_I,它在启动中很固执,非要去读分区表,而且不把分区表读完誓不罢休。如
果碰上分区表是循环的,它就只有死机了。这是DOS的脆弱性和不完备性。其 实这也不能怪DOS,
因为DOS为了获得硬盘使用权,就必需读分区表参数,而且DOS还约定驱动器号不能超过26,只不
过没有考虑到此等循环分区表情形。一句话,机子不能启动不过是 DOS操作系统造成的,如果另
写一个操作系统,或许就能启动机子。当然这只是说个笑话。
明白了病因在于DOS,问题就好办了。DOS启动中不是要读硬盘分区表吗?我不让
你读分区表甚至连硬盘都不让你读,不就可以顺利启动了。的确是这样的,开硬盘锁 的程序实现
方法就是基于这个思想形成的。当然,这只有从软盘启动着手了。
看看计算机的启动过程,上电首先进行的多项硬件自测跟我们没有关系,我们关
心的只是它最开始和磁盘打交道时是干什么。如果选择从硬盘启动,则计算机和磁盘 最开始打交
道是将硬盘0柱面0磁头1扇区的内容读入内存0000:7C00处并跳到0000:7C00处执行;如果选择从
软盘启动,则计算机和磁盘最开始打交道是将A盘0磁道0磁头1扇区的内容 读入内存0000:7C00处
并跳到0000:7C00处执行,在执行过程中,计算机并不检查该扇区的内容是什么,只机械地执行
读命令,这使得许多系统型病毒得以生存。但利用这一点,恰 恰使我们的程序解锁法有了用武之
地。如果我们用DOS格式化一张可以启动机子的系统软盘,将该软盘的0磁道0磁头1扇区的内容移
到后面的空白扇区中,而重新写一段程序到该软盘 的0磁道0磁头1扇区,这样用软盘启动时首先
执行的是我们所写的程序了。在这段程序中,具备这样一些功能:在DOS启动前抢先拦截INT
13H,驻留高端内存并监视INT
13H,判断是否读硬盘,如果是读硬盘就直接返回,这样就禁止了读硬盘,也就避
免了DOS读硬盘循环分区表造成的死机;同时拦截对软盘的读取,如果读软盘的0磁道 0磁头1扇
区,就改成读真正有引导程序和磁盘参数表的扇区,免得DOS在启动中找不到软盘的磁盘参数表而
死机。完成这些任务的同时,还要读取软盘真正的引导程序并把控制权交给 它。
该方法可以称为万能的,因为它在用软盘启动中,始终不与硬盘打交道,这样不
管你硬盘用什么方法加锁了,对DOS的启动都没有影响。当然,这样启动的机子是不认 硬盘的,
但这没有关系。你可在机子启动后,用Debug调出驻留高端内存的新INT
13H程序,将其改为只有一条直接执行旧INT 13H的语句,这样在Debug下可以用
INT
13H读取硬盘0柱面0磁头1扇区的内容,如果你有备份,将分区表参数恢复后再写
入0柱面0磁头1扇区,重新启动计算机就可以了。如果实在没有备份,去掉分区表中的 循环链,
用正常DOS启动盘重启机子后至少也可以重新对硬盘分区,不至于硬盘被锁住打不开了。
热心网友
时间:2024-03-29 23:01
你的电脑很显然中病毒了,赶快拔掉网线,把硬盘送到专业维修店