![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-21 04:14 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,270 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » [转帖]硬盘逻辑锁详解 |
| 可打印版本 13,900 / 24 |
| 第1楼 Lydong | 发表于 2003-06-30 00:00 |
| 元老会员 发帖 407 积分 1,468 来自 广州 | |
|
[转帖]硬盘逻辑锁详解 硬盘逻辑锁详解
-------------------------------------------------------------------------------- 2003-5-31 9:39:46 不知道你是否曾碰到过bios里面能够检测到硬盘,但是你从软盘和硬盘都启动不了计算机的情形?也许这时候你就会认为是硬盘坏掉了,可实际上,很有可能是你的硬盘中了逻辑锁。 硬盘逻辑锁总共有三种,本质都是对硬盘的分区表作了修改,以前只是一些黑客程序使用它,开始大范围对计算机造成危害是在臭名昭著的KV3000反盗版事件的时候,那时江民公司为了打击盗版。在KV3000新版升级程序植入了一个黑客程序,当检测到用户使用了盗版的KV3000以后就将硬盘的分区表锁住,被称为“主动逻辑锁”,其实就是硬盘逻辑锁的一种,当时却使无数无辜的人受害,江民公司也因此被定罪。这是旧事不谈,下面我们就来介绍一下它的三种情况和解决方法。 首先我们来了解一下硬盘的分区表。硬盘分区表位于磁盘的0磁头0柱面1扇区,这个扇区从01BEH开始的64个字节就是分区表。分区表共64字节,分为4栏,每栏16个字节描述一个分区。如果用FDISK程序分区,那最多只用两栏,第一栏描述主引导分区,第二栏描述扩展分区。分区表的结构与各字节的含义如下: 00H—标志活动字节。活动DOS分区为80H,其它为00H。 01H—本分区逻辑0扇区所在的磁头号。 02H—逻辑0扇区所在柱面中的扇区号。 03H—逻辑0扇区所在的柱面号。 04H—分区类型标志。 05H—本分区最后一个扇区的磁头号。 06H—最后一个扇区的扇区号。 07H—最后一个柱面的柱面号。 08H—硬盘上在本分区之前的扇区总数,用双字节表示。 0CH—本分区的扇区总数,从逻辑0扇区计数,不含隐藏扇区,用双字节表示。 分区表的最后两个字节是它的有效标志,改变后将无法从硬盘启动,这就是第一种简单的锁住硬盘的方法。不过比较容易解决,只要从软盘启动就一切正常,启动后用Debug或Diskedit等软件将硬盘分区表中的标志恢复就可以了。第二种方法是修改分区参数,如果将分区参数全部变为0,则启动后由于找不到分区参数无法从硬盘启动,用启动盘从软盘启动后也不认硬盘,不过机器毕竟能够启动,我们可以在启动后用软盘里的debug等工具修复被改动的分区表参数,重新启动后就没问题了。 我们重点要讲的就是第三种,也就是上文提到的“主动逻辑锁”,它是因为分区表参数被修改成了一个死循环。正常启动时DOS接管硬盘后查找分区表,主引导分区被定义为C盘,然后查找逻辑盘,定义为D盘,然后是E、F、G,而这个主动逻辑锁就是将第一个逻辑盘(一般是D盘)的下一个分区指向它本身,不断读取下一个,其实就是读它自己,结果陷入死循环。因为DOS启动必须包含基本输入输出文件io.sys(我们在windows下也可以看到,位于C盘根目录下)。而它是有些固执的,启动以后非要把硬盘分区表读完然后接管不可,所以无论我们用什么启动,它一查找逻辑盘就死循环,我们就看到了硬盘灯常亮系统挂起的情况了。 那么我们如何解开它呢?从根本上讲就是让io.sys不起作用或者在它起作用以前将分区表参数修改回来。 1、debug法。 用这种方法首先必须要能启动机器,我们可以在一台正常的电脑上修改启动软盘中的io.sys文件,查找到第一个“55aa”字符串,找到以后修改为任何其他数值,用这张启动软盘你就可以顺利地带着被锁的硬盘启动了。不过这时该硬盘的分区表已经不正常,所以我们无法用FDISK来删除和修改分区,而且仍然无法用正常的启动盘启动系统,这时可以用DEBUG来手工恢复。具体命令如下: a:\>debug -a -????:100 mov ax,0201(读一扇区内容) -????:103 mov bx,500(设置一缓存地址) -????:106 mov cx,0001(设置第一硬盘的硬盘指针) -????:109 mov dx,0080(读零磁头) -????:10c int 13 (硬盘中断) -????:10e int 20 -????:0110 回车 (注:-????各硬盘不相同,跟后面的:1??都是自动显示的,我们要输入的只是其后的内容) -g -d500 (查看运行后缓存地址500的内容,这时候我们会发现地址6be开始的内容就是硬盘分区表信息,如果硬盘的扩展分区正是指向自己,那么DOS或WINDOWS启动时就会因查找逻辑分区而陷入死循环。)在DEBUG指示符下继续修改内存数据: E6BE ??.0 ??.0 ??.0…… …… ……55 AA 55 AA是硬盘有效的标志,不要修改,??.0表示把以前的数据“??”改成了0,再用硬盘中断13把修改好的数据写入硬盘就可以了: A:\>debug a 100 (表示修改100地址的汇编指令) -????:100 mov ax,0301 (写硬盘一个扇区) -????: 回车 -g (运行) -q (退出) 退出后运行fdisk/mbr来重置硬盘引导程序,重新启动即可。 这种方法虽然麻烦一点,但是它能够恢复硬盘分区表,也就是说恢复以后硬盘中的数据也不会丢失。而以下方法虽然更加方便,但是要么硬盘中的数据难保,要么有一定危险性。 2、外挂软件法 这种方法原理都是绕过bios对硬盘的检测而直接用一些能够自己查找硬盘的软件来控制硬盘。 首先是DM,现在每一个硬盘厂商都有自己的DiskManager程序,而且都能放进一张软盘里,你可以下载一个使用,如果不清楚自己硬盘的牌子,也可以用IBM出的DM万用版,不过它对现在32G以上的大硬盘支持不好。我们先在bios里面将硬盘所在的IDE口设置为none,(如果你不知道哪个是,全部设为none也可以),然后用启动盘启动系统,启动完成后将软盘取出,放入装有DM软件的软盘,运行DM,它会检测到你的病硬盘的存在,然后将它重新分区就搞定了。DM具体用法比较简单,就不详细说了,不过对E文不太好的朋友可能有些困难,请教身边的高手吧。 我们还可以使用低格软件,也是每一种硬盘都有自己的低格软件,但也有通用的Lformat程序(只有30多k),前面的做法相同,还是在bios里面屏蔽掉硬盘,用启动盘启动,然后换软盘运行低格程序对硬盘进行低级格式化,由于分区表只在硬盘最前列部分,所以估摸着格过前面的分区表部分就可以停止了,然后重新启动在bios里面将硬盘设出来,就可以像一块新的硬盘一样对它进行分区等操作了。 3、热插拔 这是最危险的一种方法,很有可能将你的硬盘烧毁,所以请谨慎。具体做法很简单,首先将硬盘的电源线拔掉,然后软盘启动系统,启动完成后再将硬盘的电源线插上,这时候系统就能够控制硬盘了,可以对它进行分区,恢复分区表等操作。我有一个菜鸟朋友就是在热插拔硬盘3次以后搞定的。不过此种方法存在危险,强烈不推荐使用,如因此损坏,本人概不负责。 其实最好的情况是你有分区表备份,那恢复起来就比较容易了,而且数据也不会丢失。所以说呢,亡羊补牢固然不错,但是如果能事先就做好了保险工作,那就不用愁了。 |
|
| 第2楼 Wengier | 发表于 2003-06-30 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
这篇文章早就过时了,真不知道把它帖在这儿还有什么意义了?
|
|
| 第3楼 6618 | 发表于 2003-06-30 00:00 |
| 中级用户 发帖 54 积分 356 | |
|
好!支持!对Wengier来说是过时的,但对我能学到知识!
|
|
| 第4楼 Wengier | 发表于 2003-06-30 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
我写的这篇文章可就不过时了,而且也能学到知识的:
http://dos.qiee.com/newdos/dosart42.htm |
|
| 第5楼 yiyesong | 发表于 2003-06-30 00:00 |
| 元老会员 发帖 632 积分 1,987 | |
|
我觉得不管方法是老还是新,只要解决问题就行。虽然WENGIER有了不怕逻辑锁的IO.SYS,但现在毕竟普通用户使用最多的还是WIN98自带的那个启动盘。当他们手边只有WIN98的那个启动盘时,我想这时也只有老方法才管用。
|
|
| 第6楼 Wengier | 发表于 2003-06-30 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
Win98自带的那个启动盘其实也不管用呢!即使按照那个老方法还不是得先修改一下原IO.SYS中的55AA(有两处呢!),结果使得通用性大减(例如改后硬盘无论何时将彻底不能被识别)?还不如我公开一下真正让原IO.SYS不怕逻辑锁的新修改方法,让大家知道正确的改法呢。。。
|
|
| 第7楼 yiyesong | 发表于 2003-06-30 00:00 |
| 元老会员 发帖 632 积分 1,987 | |
|
那好呀,求之不得。
|
|
| 第8楼 Dark-Destroy | 发表于 2003-06-30 00:00 |
| 元老会员 发帖 3,551 积分 8,312 | |
|
所以要多多推廣Wengier的IO.sys呢
|
|
| 第9楼 Lydong | 发表于 2003-06-30 00:00 |
| 元老会员 发帖 407 积分 1,468 来自 广州 | |
|
大家帮忙想一想,在没有备份分区表的情况下,怎么解除逻辑锁呢,上文中说到的修改IO.SYS使DOS可以启动的方法现在不值得推荐了,但是主要是在没有备份分区表的情况下如何解除逻辑锁呢?因为像我一样,出现问题后才吃后悔药的人是很多的哦!^_^
|
|
| 第10楼 Wengier | 发表于 2003-07-01 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
如果没有备份的MBR就很难说了。比如“FDISK /MBR”只能重置MBR中的引导程序,而不能重置分区表,我已试过了。所以呢,还是备份最好呢。。
|
|
| 第11楼 futurezhiz | 发表于 2003-07-01 00:00 |
| 初级用户 发帖 14 积分 158 | |
|
请问怎样备份分区表
|
|
| 第12楼 Wengier | 发表于 2003-07-02 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
用SRCMBR命令就可以备份分区表了。。
关于没有备份的情况下恢复分区表呢,也还算有一个办法吧,就是试试KV3000的F10键功能。不过有点慢。 |
|
| 第13楼 GOTOmsdos | 发表于 2004-06-18 00:00 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
对呀!楼主的方法只能清零分区表(不含引导代码),这样问题还没解决呀!因为“FDISK /MBR”只能重置MBR中的引导程序,而不能重置分区表!
接着要用DISKMAN(DISKGENIUS),PQ等等分区工具搜索硬盘分区并恢复它才行呀! |
|
| 第14楼 GOTOmsdos | 发表于 2004-06-18 00:00 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
还有,能不能请Wengier老大或哪位仁兄贴出个被锁住的分区表十六进制原代码!
因为到处都是说“指向自己” 就是没说怎么个指法! 这是不是中国人做事得过且过的优良传统?这样的话,始终不能看见逻辑锁的庐山真面目呀!只能知其然不知其所以然,知表不知里! |
|
| 第15楼 fs20051011 | 发表于 2005-10-17 11:49 |
| 新手上路 发帖 6 积分 10 | |
|
read 学习学习再学习
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |