高手速成给硬盘加逻辑锁的方法和解法自从硬盘逻辑锁或逻辑炸弹出现以来,可以说是祸害无穷。只要是硬盘被锁上,叫天天不灵,叫地地不应,你是干着急也没有办法,自己辛辛苦苦整理的资料就不能使用了。大家也可能知道用这种简单的方法就可以解决:把硬盘在CMOS里屏蔽掉,再用光盘启动用低格工具对这个硬盘低格,锁就没有了,同时我们自己的数据资料也全部没有了。有时候,使用这种方法有的硬盘按照上面的步骤操作时找不到硬盘,这时只有热拔插(不断电直接插拔硬盘数据线)才能找到硬盘进行低格。弄不好的话,硬盘可能要报废。不过下面介绍的方法就没有那么危险了,相对来说,不用摆弄硬盘和拆机箱。那我就详细介绍一下硬盘为什么会被锁上。一、计算机启动过程分析当计算机自检完成后,并更新过ESCD(ExtendedSystemConfigurationData,扩展系统配置数据)时,如果你的计算机设置是从硬盘启动,这时计算机将首先硬盘0柱面0磁头1扇区(主引导区MBR)中的512个字节读入内存0000:7C00处并跳到0000:7C00处执行;如果选择从软盘启动,则计算机首先将A盘0磁道0磁头1扇区的内容读入内存0000:7C00处并跳到0000:7C00处执行。在读取过程中,计算机并不检查该扇区的内容是什么。接着执行读入的内容(硬盘主引导区中的前466个字节,软盘没有分区表,软盘读入的是其引导区的内容,类似于C盘,D盘第一个扇区的内容),首先开始检测该扇区的最后两个字李是不是“55AA”标志,如果“55AA”不存在则打印“Invalidpartitiontable(无效的分区表)”;如果有“55AA”并进一步检测有无硬盘分区表;如有并再进一步分析硬盘分区表中的内容是否正确;如果硬盘分区表正确可用,便接着读取活动分区的第一个扇区的内容即引导区(DBR区)的内容,并把控制权移交。但硬盘分区表的内容驻留内存,供计算机调用。二、硬盘分区表和逻辑锁的原理分析1.硬盘分区表谈到硬盘逻辑锁加锁原理,就不得不提到硬盘分区表的结构。硬盘分区表位于硬盘的0磁道0柱面第1扇区(即0区)(注意:该扇区为隐含扇区,0道0面的全部扇区均为隐含扇区,普通的磁盘访问命令无法直接访问,同时该磁道的其他62个扇区也是隐含的,因此有引多系统引导程序就把自己的程序代码放在其他隐含扇区,有些引导区病毒也把自己的代码放在其他隐含扇区。)。在该扇区512字节中,硬盘的主引导记录区MBR(MainBootRecord)只占用了前446个字节(偏移000H--偏移1BDH),另外的64个字节(偏移1BEH--偏移1FDH)是硬盘分区表DPT(DiskPartitionTable),最后两个字节55AA(偏移1FEH-偏移1FFH)是分区结束标志。主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有活动标志(80H)的分区上的操作系统,并将控制权交给活动盘上的操作系统的启动程序。四个分区的入口位置偏移量内容说明大小000h执行代码(启动计算机用)446Bytes1BEh第一个分区入口16Bytes1CEh第二个分区入口16Bytes1DEh第三个分区入口16Bytes1EEh第四个分区入口16Bytes1FEhMBR分区标志(55hAAh)2BytesMBR是由分区工具(如Fdisk,SmartFDisk,DM,PQmagic等)所产生的,它不依赖哪一种操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。主引导区的引导程序也可以全部为0,只是此时的硬盘不能引导起动。不论硬盘所装的什么样的操作系统,其MBR区的分区表的结构是一样的,引导程序在WINDOWS操作系统下基本一样,MSDOS6.22和MSDOS7.0不一样,其内容有所改变,但工作原理是一样的。如果你的电脑C盘安装的是NT操作系统时,其MBR区的引导程序就会和WIN98的不同。每个硬盘都只能有一个主引导区,扩展分区表可以有多个。硬盘的分区表偏移长度所表达的意义偏移量内容说明大小00h分区状态(00h=非活动Inactive,80h=活动Active)1Byte01h分区开始的磁头数1Byte02h分区开始的柱面和扇区数1Word04h分区类型1Byte05h分区结束的磁头数1Byte06h分区结束的柱面和扇区数1Word08h第一个分区和MBR区之间的扇区总数,即隐含扇区总数。1DoubleWord0Ch分区中的扇区总数1DoubleWord偏移量01-03H字节表示的柱面数和扇区数的计算方法1514131211109876543210CylinderBits7to0CylinderBits9+8SectorBits5to0常用分区类型如下所示数值内容说明00h未知类型或不用01h12BIT的FAT格式04h16BIT_FAT表,磁盘空间小于32M05h扩展MS_DOS分区06h16BIT空间大于32MB0Bh使用32BIT_FAT表,磁盘空间最大2GB0Ch使用32BIT_FAT表,采用LBA模式,调用INT13扩展中断0Eh使用16BIT_FAT表,调用INT13扩展中断0Fh扩展MS_DOS分区,采用LBA模式,调用INT13扩展中断07hNTFS分区(NewTechnologyFileSystem)82hLinux分区83hLinux交换分区例:下面是硬盘的MBR扇区内容:上表内容左侧为偏称地址,中间为扇区内容16进制表示,右侧为ASCII表示,下同分析硬盘分区表的内容定义:其中从地址地03BE处的80开始到地址03FD处结尾,其间就是所谓的硬盘分区表,共64个字节,每个分区占16个字节。也就是说不管硬盘有多大,最多也只能有四个主分区(扩展分区也是一个主分区)。我们通常在WIN98下使用FDISK分区工具分区时,只分了一个活动分区和一个扩展分区。从上面的分区表的内容我们可以看出,这个硬盘一共有3个主分区,两个0B分区(其中一个是隐含的,即在WIN98和其他操作系统中是不可见的)和一个0F扩展分区。分区表中的“800101000BFE7FE63F00-0000E8607700”这一段内容就表示第一个主分区参数。其中:偏移地址BEH:80表示当前分区为活动状态(如果该块硬盘不只有一个主分区,那么该位置的80H也可能是00H)偏移地址BF-C1H:010100表示起始的磁头1柱面1,扇区数0偏移地址C2H:0B表示该分区是FAT32磁盘格式偏移地址C3H-C5H:FE7FE6表示结束的磁头254D柱面486D扇区数63D偏移地址C6H-C9H:3F000000表示该硬盘有0000003FH(63D)个隐含扇区(也就是硬盘主引导区所在的0道0面的全部扇区)偏移地址CAH-CDH:E8607700表示该分区的全部扇区数(7760E8H=7823592D)注意:1)分区表中的内容全部是十六进制,并且高位在前,低位在后。2)偏移地址C2H表示的分区类型常用的,04,05,06,0B,0C,0F,07等,如果把其前面的0改为1即,14,15,16,1B,1C,1F,17就表示该分区为隐含分区。2.硬盘逻辑锁加锁的原理一个完整的硬盘锁程序,就是人为的改写0柱面0磁头1扇区的引导程序,并将分区表破坏,并故意制造一个循环分区表,而将真正的硬盘分区表参数和引导程序放在其它隐藏扇区并保护起来。在从自身启动时校验口令是否正确,如果口令不正确则无法启动电脑;如果口令正确,则把硬盘分区的内容改为正常值读入内存,这时系统就可以顺利启动。对于加锁的硬盘,即使我们把它放到别的机子也是不能启动的。没有密码您无法读取硬盘中的信息和数据,这对于保护硬盘中的数据是一种非常好的办法。但是如果想更安全,就必须把硬盘分区表中的内容进行加密存储,那时即时您使用这里介绍的方法启动电脑了,也无法正确读取硬盘分区表中的内容。要想读取就必须了解程序的加密原理,然后解密。三、硬盘逻辑锁加锁的方法1)如果“55AA”的内容丢失,计算机不能从硬盘启动,系统提示:“DISKBOOTFAILURE,INSERTSYSTEMDISKANDPRESSENTER.”,但是我们即使从软盘启动,也没有硬盘,用FDISK/STATUS命令显示硬盘未使用。例如:106C:03B00000000000000000-0000000000008001................106C:03C001000BFE7FE63F00-0000E86077000000......?....`w...106C:03D041E71BFEBF652761-7700BF211F000000A....e'aw..!....106C:03E081660FFEFFFFE682-9600151DCC010000.f..............106C:03F00000000000000000-0000000000000000..............U.还有,如果硬盘分区表中的活动标志都为“00H”时,这时硬盘也是不能启动的,但是由其他盘启动后,可以正常读取硬盘文件。2)如果将硬盘分区参数全部变为0,这时由于没有分区参数存在,从硬盘是没法启动系统,这时从软盘启动后也无法认硬盘,这时系统认为硬盘是新的。当你敲入盘符C:并回车,将出现提示“Invaliddriverspecification”。不过,我们还能够启动我们的计算机。例如:106C:03B00000000000000000-0000000000000000................106C:03C00000000000000000-0000000000000000......?....`w...106C:03D00000000000000000-0000000000000000A....e'aw..!....106C:03E00000000000000000-0000000000000000.f..............106C:03F00000000000000000-00000000000055AA..............U.3)如果将硬盘分区表参数改成一个循环链,即将D分区起始柱面,扇区数,磁道数指向C分区开始的起始柱面,磁道数,扇区数。当计算机启动时,主引导程序分析硬盘分区表时就进入死循环状态,计算机无休止的读取分区信息。这时无论我们是从硬盘启动还是从软盘启动,到检测硬盘那一步就死机。具体表现为当出现“UpdateDMIdata”后,计算机只有光标闪烁,没有其他任何反应。但是这种做法如果想恢复硬盘数据时也比较麻烦,在操作前必须对硬盘的主引导区数备份。例如:106C:03B00000000000000000-0000000000008001................106C:03C001000BFE7FE63F00-0000E86077000001......?....`w...106C:03D001001BFEBF652761-7700BF211F000000A....e'aw..!....106C:03E081660FFEFFFFE682-9600151DCC010000.f..............106C:03F00000000000000000-00000000000055AA..............U.这种方法只是部分硬盘能够被锁住。2.硬盘逻辑锁加锁的原理一个完整的硬盘锁程序,就是人为的改写0柱面0磁头1扇区的引导程序,并将分区表破坏,并故意制造一个循环分区表,而将真正的硬盘分区表参数和引导程序放在其它隐藏扇区并保护起来。在从自身启动时校验口令是否正确,如果口令不正确则无法启动电脑;如果口令正确,则把硬盘分区的内容改为正常值读入内存,这时系统就可以顺利启动。对于加锁的硬盘,即使我们把它放到别的机子也是不能启动的。没有密码您无法读取硬盘中的信息和数据,这对于保护硬盘中的数据是一种非常好的办法。但是如果想更安全,就必须把硬盘分区表中的内容进行加密存储,那时即时您使用