<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[ZAPPER'S Blog]]></title> 
<link>http://www.rnh19.com/gz/index.php</link> 
<description><![CDATA[]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[ZAPPER'S Blog]]></copyright>
<item>
<link>http://www.rnh19.com/gz/read.php?</link>
<title><![CDATA[硬盘逻辑锁相关问题解决办法...]]></title> 
<author>zapper &lt;zappershl@hotmail.com&gt;</author>
<category><![CDATA[Windows_MAC]]></category>
<pubDate>Mon, 27 Dec 2004 01:46:28 +0000</pubDate> 
<guid>http://www.rnh19.com/gz/read.php?</guid> 
<description>
<![CDATA[ 
	<p align="justify"><font face="times new roman,times,serif" size="4">硬盘逻辑锁<br />不知道你是否曾碰到过bios里面能够检测到硬盘，但是你从软盘和硬盘都启动不了计算机的情形？也许这时候你就会认为是硬盘坏掉了，可实际上，很有可能是你的硬盘中了逻辑锁。 <br />硬盘逻辑锁总共有三种，本质都是对硬盘的分区表作了修改，以前只是一些黑客程序使用它，开始大范围对计算机造成危害是在臭名昭著的KV3000反盗版事件的时候，那时江民公司为了打击盗版。在KV3000新版升级程序植入了一个黑客程序，当检测到用户使用了盗版的KV3000以后就将硬盘的分区表锁住，被称为“主动逻辑锁”，其实就是硬盘逻辑锁的一种，当时却使无数无辜的人受害，江民公司也因此被定罪。这是旧事不谈，下面我们就来介绍一下它的三种情况和解决方法。 <br />---------------------------------------------------- <br />首先我们来了解一下硬盘的分区表。硬盘分区表位于磁盘的0磁头0柱面1扇区，这个扇区从01BEH开始的64个字节就是分区表。分区表共64字节，分为4栏，每栏16个字节描述一个分区。如果用FDISK程序分区，那最多只用两栏，第一栏描述主引导分区，第二栏描述扩展分区。分区表的结构与各字节的含义如下： <br /><br />　　00H—标志活动字节。活动DOS分区为80H，其它为00H。 <br />　　01H—本分区逻辑0扇区所在的磁头号。 <br />　　02H—逻辑0扇区所在柱面中的扇区号。 <br />　　03H—逻辑0扇区所在的柱面号。 <br />　　04H—分区类型标志。 <br />　　05H—本分区最后一个扇区的磁头号。 <br />　　06H—最后一个扇区的扇区号。 <br />　　07H—最后一个柱面的柱面号。 <br />　　08H—硬盘上在本分区之前的扇区总数，用双字节表示。 <br />　　0CH—本分区的扇区总数，从逻辑0扇区计数，不含隐藏扇区，用双字节表示。 <br /><br />分区表的最后两个字节是它的有效标志，改变后将无法从硬盘启动，这就是第一种简单的锁住硬盘的方法。不过比较容易解决，只要从软盘启动就一切正常，启动后用Debug或Diskedit等软件将硬盘分区表中的标志恢复就可以了。第二种方法是修改分区参数，如果将分区参数全部变为0，则启动后由于找不到分区参数无法从硬盘启动，用启动盘从软盘启动后也不认硬盘，不过机器毕竟能够启动，我们可以在启动后用软盘里的debug等工具修复被改动的分区表参数，重新启动后就没问题了。 <br /><br />我们重点要讲的就是第三种，也就是上文提到的“主动逻辑锁”，它是因为分区表参数被修改成了一个死循环。正常启动时DOS接管硬盘后查找分区表，主引导分区被定义为C盘，然后查找逻辑盘，定义为D盘，然后是E、F、G，而这个主动逻辑锁就是将第一个逻辑盘（一般是D盘）的下一个分区指向它本身，不断读取下一个，其实就是读它自己，结果陷入死循环。因为DOS启动必须包含基本输入输出文件io.sys（我们在windows下也可以看到，位于C盘根目录下）。而它是有些固执的，启动以后非要把硬盘分区表读完然后接管不可，所以无论我们用什么启动，它一查找逻辑盘就死循环，我们就看到了硬盘灯常亮系统挂起的情况了。 <br /><br />---------------------------------------------------- <br /><br />那么我们如何解开它呢？从根本上讲就是让io.sys不起作用或者在它起作用以前将分区表参数修改回来。 <br /><br />1、debug法。 <br /><br />用这种方法首先必须要能启动机器，我们可以在一台正常的电脑上修改启动软盘中的io.sys文件，查找到第一个“55aa”字符串，找到以后修改为任何其他数值，用这张启动软盘你就可以顺利地带着被锁的硬盘启动了。不过这时该硬盘的分区表已经不正常，所以我们无法用FDISK来删除和修改分区，而且仍然无法用正常的启动盘启动系统，这时可以用DEBUG来手工恢复。具体命令如下： <br /><br />a:\&gt;debug <br />-a <br />-????:100 mov ax,0201（读一扇区内容） <br />-????:103 mov bx,500（设置一缓存地址） <br />-????:106 mov cx,0001（设置第一硬盘的硬盘指针） <br />-????:109 mov dx,0080（读零磁头） <br />-????:10c int 13 （硬盘中断） <br />-????:10e int 20 <br />-????:0110 回车 <br />（注：-????各硬盘不相同，跟后面的:1??都是自动显示的，我们要输入的只是其后的内容） <br />-g <br />-d500 （查看运行后缓存地址500的内容，这时候我们会发现地址6be开始的内容就是硬盘分区表信息，如果硬盘的扩展分区正是指向自己，那么DOS或WINDOWS启动时就会因查找逻辑分区而陷入死循环。）在DEBUG指示符下继续修改内存数据： <br />E6BE <br />??.0 ??.0 ??.0…… <br />…… <br />……55 AA <br />55 AA是硬盘有效的标志，不要修改，??.0表示把以前的数据“??”改成了0，再用硬盘中断13把修改好的数据写入硬盘就可以了： <br /><br />A:\&gt;debug <br />a 100 （表示修改100地址的汇编指令） <br />-????:100 mov ax,0301 （写硬盘一个扇区） <br />-????: 回车 <br />-g （运行） <br />-q （退出） <br />退出后运行fdisk/mbr来重置硬盘引导程序，重新启动即可。 <br /><br />这种方法虽然麻烦一点，但是它能够恢复硬盘分区表，也就是说恢复以后硬盘中的数据也不会丢失。而以下方法虽然更加方便，但是要么硬盘中的数据难保，要么有一定危险性。 <br /><br />2、外挂软件法 <br /><br />这种方法原理都是绕过bios对硬盘的检测而直接用一些能够自己查找硬盘的软件来控制硬盘。 <br /><br />首先是DM，现在每一个硬盘厂商都有自己的DiskManager程序，而且都能放进一张软盘里，你可以下载一个使用，如果不清楚自己硬盘的牌子，也可以用IBM出的DM万用版，不过它对现在32G以上的大硬盘支持不好。我们先在bios里面将硬盘所在的IDE口设置为none，（如果你不知道哪个是，全部设为none也可以），然后用启动盘启动系统，启动完成后将软盘取出，放入装有DM软件的软盘，运行DM，它会检测到你的病硬盘的存在，然后将它重新分区就搞定了。DM具体用法比较简单，就不详细说了，不过对E文不太好的朋友可能有些困难，请教身边的高手吧。 <br /><br />我们还可以使用低格软件，也是每一种硬盘都有自己的低格软件，但也有通用的Lformat程序（只有30多k），前面的做法相同，还是在bios里面屏蔽掉硬盘，用启动盘启动，然后换软盘运行低格程序对硬盘进行低级格式化，由于分区表只在硬盘最前列部分，所以估摸着格过前面的分区表部分就可以停止了，然后重新启动在bios里面将硬盘设出来，就可以像一块新的硬盘一样对它进行分区等操作了。 <br /><br />3、热插拔 <br /><br />这是最危险的一种方法，很有可能将你的硬盘烧毁，所以请谨慎。具体做法很简单，首先将硬盘的电源线拔掉，然后软盘启动系统，启动完成后再将硬盘的电源线插上，这时候系统就能够控制硬盘了，可以对它进行分区，恢复分区表等操作。我有一个菜鸟朋友就是在热插拔硬盘3次以后搞定的。不过此种方法存在危险，强烈不推荐使用，如因此损坏，本人概不负责。 <br />其实最好的情况是你有分区表备份，那恢复起来就比较容易了，而且数据也不会丢失。所以说呢，亡羊补牢固然不错，但是如果能事先就做好了保险工作，那就不用愁了。 <br /><br />作者：goalfly “逻辑锁”的上锁原理：计算机在引导DOS系统时将会搜索所有逻辑盘的顺序，当DOS被引导时，首先要去找主引导扇区的分区表信息，然后查找各扩展分区的逻辑盘。“逻辑锁”修改了正常的主引导分区记录，将扩展分区的第一个逻辑盘指向自己，使得DOS在启动时查找到第一个逻辑盘后，查找下个逻辑盘总是找到自己，这样一来就形成了死循环。 <br /><br />　　给“逻辑锁”解锁比较容易的方法是“热拔插”硬盘电源。就是在当系统启动时，先不给被锁的硬盘加电，启动完成后再给硬盘“热插”上电源线，这样系统就可以正常控制硬盘了。这是一种非常危险的方法，为了降低危险程度，碰到“逻辑锁”后，大家最好依照下面两种比较简单和安全的方法处理。 <br />★UltraEdit★ <br /><br />　　首先准备一张启动盘，然后在其他正常的机器上使用二进制编辑工具（推荐UltraEdit）修改软盘上的IO.SYS文件（修改前记住先将该文件的属性改为正常），具体是在这个文件里面搜索第一个“55AA”字符串，找到以后修改为任何其他数值即可。用这张修改过的系统软盘你就可以顺利地带着被锁的硬盘启动了。不过这时由于该硬盘正常的分区表已经被破坏，你无法用“Fdisk”来删除和修改分区，但是此时可以用前面介绍的关于分区表恢复的方法来处理。 <br />★DM★ <br /><br />　　因为DM是不依赖于主板BIOS来识别硬盘的硬盘工具，就算在主板BIOS中将硬盘设为“NONE”，DM也可识别硬盘并进行分区和格式化等操作，所以我们也可以利用DM软件为硬盘解锁。 <br /><br />　　首先将DM拷到一张系统盘上，接上被锁硬盘后开机，按“Del”键进入BIOS设置，将所有IDE接口设为“NONE”并保存后退出，然后用软盘启动系统，系统即可“带锁”启动，因为此时系统根本就等于没有硬盘。启动后运行DM，你会发现DM可以识别出硬盘，选中该硬盘进行分区格式化就可以了。这种方法简单方便，但是有一个致命的缺点，就是硬盘上的数据保不住了＾＿＾。</font></p>
]]>
</description>
</item><item>
<link>http://www.rnh19.com/gz/read.php?&amp;guid=0#topreply</link>
<title><![CDATA[[评论] 硬盘逻辑锁相关问题解决办法...]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.rnh19.com/gz/read.php?&amp;guid=0#topreply</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>