如果硬盘被锁死,是否真的就无法解开呢?当然不是。看看问题的症结所在,根源在于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启动盘重启机子后至少也可以重新对硬盘分区,不至于硬盘被锁住打不开了。
程序及说明
1·下面是写入软盘0磁道0头1扇区的源程序key.com,程序用debug输入。
C>debug
-a100
100CLI
101XORAX,AX
103MOVDS,AX
105MOVES,AX
107MOVSS,AX
109MOVAX,7C00
10CMOVSP,AX
10ESTI
10FMOVSI,AX
111MOVDI,7E00
114CLD
115MOVCX,0200
118REPNZ
119MOVSB
11AJMP0000:7E1F
11FMOVCX,0003
122PUSHCX
123MOVAX,0201;读启动软盘的引导扇区
126MOVBX,7C00
129MOVCX,4F01
12CMOVDX,0100
12FINT13
131POPCX
132DECCX
133JNZ0122
135MOVAX,[004C];抢先获取INT 13H的位置
138MOV[7E88],AX
13BMOVAX,[004E]
13EMOV[7E8A],AX
141MOVAX,[0413]
144DECAX
145MOV[0413],AX
148MOVCL,06
14ASHLAX,CL
14CMOVES,AX
14EXORAX,AX
150MOVDS,AX
152MOVSI,7E6D;复制改写的INT 13H程序到高端内存
155MOVDI,0000
158MOVCX,0030
15BREPNZ
015CMOVSB
015DMOVAX,0000;将新INT 13H位置写入中断向量表
0160MOV[004C],AX
0163MOVAX,ES
0165MOV[004E],AX
0168JMP0000:7C00
016DPUSHF;新INT 13H程序
016ECMPDX,0080;是否是硬盘
0172JNZ0176;不是硬盘则继续
0174POPF
0175IRET;是硬盘则直接返回
0176CMPDX,+00;是否读软盘BOOT区?
0179JNZ0186
017BCMPCX,+01
017EJNZ0186
0180MOVCX,4F01;是则读79磁道1磁头1扇区
0183MOVDX,0100
0186POPF
0187JMP0000:0000;此处跳转去执行旧INT 13,;旧INT 13H的位置由前面程序获得后写入。
Nkey.com
RCX
200
W
Q
2·程序的装载
在进行下面工作前,先用DOS格式化一张启动的系统盘,并保证没有坏扇区,最好进行启动测试,确保其可以启动机子。由于现在机子上大多只有3寸软驱,因此选择1.44M的3.5寸软盘。然后用debug key.com将程序key.com调入内存偏移地址为100H,同时在400H处写入一段装载程序。即:
C>debugkey.com
-a400
400MOVCX,0003
403PUSHCX
404MOVAX,0201;将A盘引导程序读入内存1000H处
407MOVBX,1000;为确保成功,首次采用重复读3次
40AMOVCX,0001
40DMOVDX,0000
410INT13
412POPCX
413DECCX
414JNZ0403
416MOVAX,0301;将已读入内存的软盘引导程序写入软盘
419MOVBX,1000;最后一个磁道的首扇区
41CMOVCX,4F01
41FMOVDX,0100
422INT13
424MOVAX,0301;将key.com程序写入软盘0磁道0磁头1扇区
427MOVBX,0100
42AMOVCX,0001
42DMOVDX,0000
430INT13
432INT3
为保证万无一失,最好将软盘这两个扇区的内容重新读出来看一看,以保证写成功了。做好这一切,保险的还是进行一次测试,即用该软盘启动一次机子,看能否成功,若成功启动,你就可以用循环分区表法锁住硬盘,看从正常DOS下能否启动,然后再用此软盘启动机子试试,看看功效如何?
从该软盘启动后,不认硬盘,并且在高端内存驻留了新INT 13H程序,该段程序实际上是key.com中从16D到187部分。由于有此段程序存在,在debug下也无法读硬盘,也就没法恢复硬盘分区表,因此机子启动后首先应修改这段程序。现在的机子基本内存通常都为640K,这样这段程序就位于内存中9FC0:0000处,在debug下,用U9FC0:0显示这段程序,可以看到位于9FC0:001A处是一条跳转指令,该跳转指令即转去执行最原始的INT 13H。由于BIOS版本不一样,跳转指令指向的位置可能不一样,如笔者机子上是一条JMP F000:A5D4语句。这时在在debug下编写这样一语句:a9FC0:0JMP F000:A5D4。这样,对硬盘的禁写与禁读都不再起作用了,在debug下用INT 13H的2号子功能可以读出硬盘分区表,修改恢复后再用3号子功能将数据写回分区表。退出debug,重新用正常DOS启动计算机,就可以了。
附带提一下,在正常DOS下,该软盘由于没有BOOT区,也就没有磁盘参数表,从而不能使用,用DIRA:命令会出现General failure reading drive A提示。不要理睬它,这并不影响它作特殊启动盘。
四·建议
为更好的保护你的硬盘,笔者建议你最好将你的硬盘分区表信息备份起来。备份有两种方式,一种是以文件形式将硬盘每个逻辑盘的分区信息存储起来;另另一种是将分区信息备份在硬盘隐藏扇区里。比如可以将0柱面0磁头1扇区备份在0柱面0磁头3扇区,将D盘开始柱面号0磁头1扇区备份在该柱面0磁头3扇区,其它逻辑盘也如此。这种方法简单、方便,也很可靠。用NORTAN中的DISKEDI很容易操作和实现。有了备份分区表信息,就不怕破坏分区表的病毒了;再加上我给你的程序,即使有人真锁住了你的硬盘,你也可以轻而易举解开了。
分享到:
相关推荐
易语言Elanguage终极硬盘锁源码 可以锁住对方的机子
解硬盘锁全教程.pdf 解硬盘锁全教程.pdf
硬盘锁死表现为CMOS能找到硬盘,但不能引导操作系统或不能正常读写。有时由于某种 锁死硬盘的存在,任何可引导设备(软驱、光驱、同机内的其它硬盘)都不能正常引导计算 机。这种情况下无法使用其它工具软件来解除...
HDD Unlock Wizard 是一个操作简单的程序,可以容易的解锁IDE和SATA硬盘。此工具可以清除硬盘的User password和Master password。 在清除硬盘的密码时,HDD Unlock Wizard将清空硬盘上的所有数据。 HDD Unlock ...
易语言硬盘锁源码(附带教程).zip
“双层硬盘锁机源码”自己改改如果打不开的话拖进易语言
如来硬盘锁生成器,源码模块已经打包,一共分为五个如来,本人是新人,这个硬盘锁也不是很好,通过,小心使用,生成器自动加壳
gh0st3.6的硬盘锁代码,摘取出来优化了一下,可以运行
Unlocker是一个免费的右键扩充工具,使用者在安装后,它便能整合于鼠标右键的操作当中, ...文件与程序关连性的方式来解锁,因此不会像其它解锁程序一样因为强制关闭程序而造成使 用者可能的数据遗失。
Gh0st3.6_去硬盘锁源码
这个是易语言逻辑硬盘锁的源码!!别用来犯法!!别锁别人机!!对了,麻烦告诉下!!C币怎么获得啊!!!
Gh0st3.6+已去除硬盘锁+win7
可以锁硬盘,并设置密码,主要用来学习,请不要滥用。
很强大的硬盘锁
方便用来隐藏一些隐私
许多电脑用户都见过或听说过,当硬盘中了所谓的“逻辑锁”后,无论是用软盘、硬盘,还是光盘都不能启动一些电脑。那么,“逻辑锁”到底是什么呢?
可以显示文字的逻辑硬盘锁,而且现在其他网站上找不到!!!无名制作,qq群里找到的,还有各种功能,我认为值得推荐。gmr
硬盘逻辑锁源码 教程:1.打开命令提示符 2.输入命令:MASM的位置 硬盘逻辑锁的位置 然后产生.obj文件 在输入link的位置 硬盘逻辑锁.obj的位置即可完成编译
一把非常好用的锁 可以锁文件夹 可以锁硬盘 可以锁优盘 而且超级小才406k