荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Mic (酷鱼), 信区: Virus
标  题: [合集]我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Thu Apr 19 12:52:33 2001), 转信

==========================
转自Security(网络安全)讨论区
==========================
发信人: renwoxin (xiaofei), 信区: Security
标  题: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Mon Apr 16 18:56:44 2001), 转信

今天我的朋友中了硬盘锁,结果花了很长时间才搞好,希望广大的同僚门要注意!!!
!!!!!!


====================
发信人: beny (beny), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Mon Apr 16 22:28:42 2001), 转信

这是怎么样的?怎么才能防止呀?

===================
发信人: renwoxin (xiaofei), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Tue Apr 17 17:21:45 2001), 转信

防硬盘锁很简单,装上杀毒软件就可以了,或者把bios了病毒防护设为enable即可。


===================
发信人: Mic (酷鱼), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Tue Apr 17 18:18:27 2001), 转信


何为硬盘锁?是一种病毒吗?还是用debug写的小程序?
谢谢!


===================
发信人: jackpan (仙人掌), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Tue Apr 17 18:58:00 2001), 转信

没听说过有“硬盘锁”的,硬盘保护卡就有,但那是硬件,插在插槽上的。
你说的是不是使硬盘锁定之类的病毒或软件啊?某些软件也有使屏幕锁定
的功能哦。

【 在 renwoxin (xiaofei) 的大作中提到: 】
: 今天我的朋友中了硬盘锁,结果花了很长时间才搞好,希望广大的同僚门
要注意!!!
: !!!!!!

====================
发信人: renwoxin (xiaofei), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Tue Apr 17 21:56:34 2001), 转信

所谓的硬盘锁,刚开始时是为了保护自己硬盘的数据被他人使用用汇编语言写的
程序,放在硬盘的零磁道里面,输入正确的密码后,才能正确的引导硬盘,读出
硬盘的分区表,如果没有正确的密码,不能通过软盘驱动器和光盘驱动器来启动
硬盘,硬盘的数据就不会被他人所用,但有人用这种功能,破坏硬盘的分区表,
然后又不让你从软区动器和光驱启动,你的硬盘好象坏了一样。


====================
发信人: agile (agile), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Tue Apr 17 22:00:22 2001), 转信

我很同意你的看法!


【 在 renwoxin (xiaofei) 的大作中提到: 】
: 所谓的硬盘锁,刚开始时是为了保护自己硬盘的数据被他人使用用汇编语
言写的: 程序,放在硬盘的零磁道里面,输入正确的密码后,才能正确的引导硬盘
,读出...
........

====================
发信人: Chair (银发), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Tue Apr 17 23:51:31 2001), 转信


   一般来说,kv300+<F10>就解开了.


====================
发信人: windlight (坏男孩), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Wed Apr 18 09:49:00 2001), 转信


开机画面:
Verifying DMI Pool Data……
em disk
Disk I/O error
Replace the disk,and then press any key
我的机情况如上,可是中了硬盘锁?
怎么解决?
详细点,好吗?
本人是个菜菜鸟。
【 在 Chair (银发) 的大作中提到: 】
:    一般来说,kv300+<F10>就解开了.


=====================
发信人: Chair (银发), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Wed Apr 18 10:00:44 2001), 转信


  用kv300启动,进去之后按<F10>修复引导扇区,备份,完成. 在用DOS启动,看能不能
找到C:盘,能的话用fidks 看看是否C盘处于ACTIVE状态,否的话加上就完了.

   但你的情况好象是硬盘坏了耶, //poor


====================
发信人: windlight (坏男孩), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: 荔园晨风BBS站 (Wed Apr 18 10:08:09 2001), 转信

我的情况怎么解决好?
多多指点。

====================
发信人: Chair (银发), 信区: Security
标  题: Re: 我们学校有人放了硬盘锁
发信站: BBS 荔园晨风站 (Wed Apr 18 18:18:15 2001), 站内信件

 照做,不行就要实际找人帮忙,网上判断有困难的.


====================

发信人: lurker (影雷者), 信区: Security
标  题: 解开硬盘逻辑死锁的一种有效方法
发信站: 荔园晨风BBS站 (Wed Apr 18 12:12:56 2001), 转信

一·序言

  不知道你是否曾碰到过从软盘和硬盘都启动不了计算机的情形?一般计算机的

硬盘分区表被病毒感染后,若不能启动机子,通常从软盘可以启动。但在严重的情

形下,不但从硬盘不能启动机子,就是从软盘也不能启动。有的恶毒的病毒就能使

硬盘被死锁。笔者一次在自己机子上玩弄硬盘锁时,就被锁住过一次。结果在硬盘

下选择DOS或WIN95模式启动机子都死机,在软盘下用DOS启动也死机;在COMS中将

硬盘类型选择None,虽然可以从软盘启动,但启动后没有硬盘,使用软盘上的
FDISK命令,想重新分区或格式化都没门。弄得我一筹莫展。

  本来,硬盘被锁住时,可以采用3.0以下的DOS版本启动机子,机子启动后虽然

也不认硬盘,但其不认的原因在于其管理不了现在的大硬盘,因此可以用Debug修

改硬盘分区表,修改后可以启动。但在已进入WINDOWS的年代,3.0以下的DOS实难

找到,即使找到,你的机子上恐怕也因没有5寸软驱而不能使用。因此,最好的办

法是编制一个程序来解决这个问题。笔者通过尝试和思考,找到一种比较实用的方

法,可以轻松解开死锁的硬盘,当然也把自己的硬盘解开了。下面,我将这种方法

介绍出来?
二·硬盘锁住原理


  硬盘锁住通常是对硬盘的分区表做手脚,因此首先应该了解硬盘的分区表。硬

盘分区表位于0柱面0磁头1区,这个扇区的前面200多个字节是主引导程序,后面从

01BEH开始的64个字节是分区表。分区表共64字节,分为4栏,每栏16字节,用来描

述一个分区。如果是用DOS的FDISK程序分区后,最多只用两栏,第一栏描述基本的

DOS分区,第二栏描述扩展的DOS分区。


  分区表一栏的结构与各字节的含义如下:


  00H-标志活动字节,活动DOS分区为80H,其它为00H。


  01H-本分区逻辑0扇区所在的磁头号。


  02H-逻辑0扇区所在柱面中的扇区号。


  03H-逻辑0扇区所在的柱面号。
?
- 03H-逻辑0扇区所在的柱面号。


  04H-分区类型标志。


  05H-本分区最后一个扇区的磁头号。


  06H-最后一个扇区的扇区号。


  07H-最后一个柱面的柱面号。


  08H-硬盘上在本分区之前的扇区总数,用双字表示。


  0CH-本分区的扇区总数,从逻辑0扇区计数,不含隐藏扇区,用双字表示。


  在上面的介绍中给出的柱面号与扇区号虽然各占一个字节,但实际上扇区号用

6位表示,柱面号用10位表示,扇区号所在字节的最高两位实际上是柱面号的最高
两位。


  分区表的最后两个字节是分区表的有效标志,如果将其改变,将不能从硬盘启

动,这是一种简单的锁住硬盘的方法。解决的办法是从软盘启动,启动后硬盘仍然

可以使用。用Debug或Noratn中的Diskedit软件将硬盘该分区表中的标志恢复,则

从硬盘启动也没有问题了。锁住硬盘的另一种方法是对分区参数做手脚,如果将分

区参数全部变为0,则启动时由于找不到分区参数,从硬盘是没法启动,从软盘启

动后也不认硬盘,如果你敲入盘符C并回车,将出现提示Invalid driver
specification。但所幸的是,毕竟可以启动机子,不认硬盘没关系,在A盘上用
DOS的Debug仍然可以读出硬盘0柱面0磁头1扇区的内容,修改后再写入0柱面0磁头

1扇区,重新启动机子又没问题了。如果将分区表参数随意改为其它参数,则有可

能不能用可以安装DOS的DOS系统盘启动,按F3退出后将出现内存分配错误,不能装

载DOS的命令解释器COMMAND的提示,系统就死机了,笔者就曾碰见过这种情形。但

用一张格式化成系统盘的软盘则可以顺利启动,只要有Debug,你仍然可以将分区

表参数修改回去。可怕的事情是,如果你不幸将分区表参数改成一个循环链,即
C
盘的下一个分区指向D驱,D驱的下一个分区又指向C区,这样循环下去,DOS启动或

WIN95启动时由于无休止的读取逻辑驱动器,就只有死机的份了。这是只要有硬盘

存在,不管你用软盘还是硬盘都没法启动机子了,由于不能启动是由于硬盘造成的

,即使你将硬盘下到其它计算机上,也没法使用,这样硬盘就彻底被锁死了,笔者

所遭遇就是此情形。不信,你只需将硬盘0柱面0磁头1扇区的1D0H处改为1(如果你

的D驱开始柱面号不够大,此处本来就为1),将1D1H处改为0,表示D盘的开始柱面-
号跟C盘一样,看看你的计算机还能不能启动,不过你在没有充分的准备前绝不要

试。


  一个完整的硬盘锁程序,不过是重新改写0柱面0磁头1扇区的引导程序,并将

分区表破坏或故意制造一个循环分区表,而将真正的硬盘分区表参数和引导程序放

在其它隐藏扇区并保护起来,如果启动时口令不对,则不能启动机子,口令对了则

顺利启动。这种硬盘锁程序,情形好的还可以用软盘启动;情形严重的就是连软盘

也不能启动,硬盘真被锁住。


三·解开硬盘锁的程序法


  如果硬盘被锁死,是否真的就无法解开呢?当然不是。看看问题的症结所在,

根源在于DOS中的IO.SYS文件,它包含LOADER、IO1、IO2、IO3四个模块,其中
IO1
中包含有一个很关键的程序SysInt_I,它在启动中很固执,非要去读分区表,而且

不把分区表读完誓不罢休。如果碰上分区表是循环的,它就只有死机了。这是
DOS
的脆弱性和不完备性。其实这也不能怪DOS,因为DOS为了获得硬盘使用权,就必需

读分区表参数,而且DOS还约定驱动器号不能超过26,只不过没有考虑到此等循环

分区表情形。一句话,机子不能启动不过是DOS操作系统造成的,如果另写一个操

作系统,或许就能启动机子。当然这只是说个笑话。
∶靼琢瞬∫蛟谟贒OS,问题就好办了。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


100  CLI


101  XOR   AX,AX


103  MOV   DS,AX


105  MOV   ES,AX


107  MOV   SS,AX


109  MOV   AX,7C00
10C  MOV   SP,AX


10E  STI


10F  MOV   SI,AX


111  MOV   DI,7E00


114  CLD


115  MOV   CX,0200


118  REPNZ


119  MOVSB
11A  JMP   0000:7E1F


11F  MOV   CX,0003


122  PUSH  CX


123  MOV   AX,0201;读启动软盘的引导扇区


126  MOV   BX,7C00


129  MOV   CX,4F01


12C  MOV   DX,0100

12F  INT   13


131  POP   CX


132  DEC   CX


133  JNZ   0122


135  MOV   AX,[004C];抢先获取INT 13H的位置


138  MOV   [7E88],AX


13B  MOV   AX,[004E]
13E  MOV   [7E8A],AX


141  MOV   AX,[0413]


144  DEC   AX


145  MOV   [0413],AX


148  MOV   CL,06


14A  SHL   AX,CL


14C  MOV   ES,AX


14E  XOR   AX,AX
150  MOV   DS,AX


152  MOV   SI,7E6D;复制改写的INT 13H程序到高端内存


155  MOV   DI,0000


158  MOV   CX,0030


15B  REPNZ


015C  MOVSB


015D  MOV   AX,0000;将新INT 13H位置写入中断向量表
0160  MOV   [004C],AX


0163  MOV   AX,ES


0165  MOV   [004E],AX


0168  JMP   0000:7C00


016D  PUSHF;新INT 13H程序


016E  CMP   DX,0080;是否是硬盘


0172  JNZ   0176;不是硬盘则继续
0174  POPF


0175  IRET;是硬盘则直接返回


0176  CMP   DX,+00;是否读软盘BOOT区?


0179  JNZ   0186


017B  CMP   CX,+01


017E  JNZ   0186


0180  MOV   CX,4F01;是则读79磁道1磁头1扇区


0183  MOV   DX,0100

0186  POPF


0187  JMP   0000:0000;此处跳转去执行旧INT 13,


             ;旧INT 13H的位置由前面程序获得后写入。


N key.com


RCX


200


W
Q


2·程序的装载


  在进行下面工作前,先用DOS格式化一张启动的系统盘,并保证没有坏扇区,

最好进行启动测试,确保其可以启动机子。由于现在机子上大多只有3寸软驱,因

此选择1.44M的3.5寸软盘。然后用debug key.com将程序key.com调入内存偏移地址

为100H,同时在400H处写入一段装载程序。即:


C>debug key.com


-a400


400   MOV   CX,0003
403   PUSH  CX


404   MOV   AX,0201;将A盘引导程序读入内存1000H处


407   MOV   BX,1000;为确保成功,首次采用重复读3次


40A   MOV   CX,0001


40D   MOV   DX,0000


410   INT   13


412   POP   CX


413   DEC   CX
414   JNZ   0403


416   MOV   AX,0301;将已读入内存的软盘引导程序写入软盘


419   MOV   BX,1000;最后一个磁道的首扇区


41C   MOV   CX,4F01


41F   MOV   DX,0100


422   INT   13


424   MOV   AX,0301;将key.com程序写入软盘0磁道0磁头1扇区
427   MOV   BX,0100


42A   MOV   CX,0001


42D   MOV   DX,0000


430   INT   13


432   INT   3


  为保证万无一失,最好将软盘这两个扇区的内容重新读出来看一看,以保证写

成功了。做好这一切,保险的还是进行一次测试,即用该软盘启动一次机子,看能

否成功,若成功启动,你就可以用循环分区表法锁住硬盘,看从正常DOS下能否启

动,然后再用此软盘启动机子试试,看看功效如何?
从该软盘启动后,不认硬盘,并且在高端内存驻留了新INT 13H程序,该段程
序实际上是key.com中从16D到187部分。由于有此段程序存在,在debug下也无法读

硬盘,也就没法恢复硬盘分区表,因此机子启动后首先应修改这段程序。现在的机

子基本内存通常都为640K,这样这段程序就位于内存中9FC0:0000处,在debug下

,用U9FC0:0显示这段程序,可以看到位于9FC0:001A处是一条跳转指令,该跳转

指令即转去执行最原始的INT 13H。由于BIOS版本不一样,跳转指令指向的位置可

能不一样,如笔者机子上是一条JMP F000:A5D4语句。这时在在debug下编写这样

一语句:a9FC0:0 JMP F000:A5D4。这样,对硬盘的禁写与禁读都不再起作用了

,在debug下用INT 13H的2号子功能可以读出硬盘分区表,修改恢复后再用3号子功

能将数据写回分区表。退出debug,重新用正常DOS启动计算机,就可以了。

  附带提一下,在正常DOS下,该软盘由于没有BOOT区,也就没有磁盘参数表,

从而不能使用,用DIR A:命令会出现General failure reading drive A提示。

不要理睬它,这并不影响它作特殊启动盘。


五·建议

  为更好的保护你的硬盘,笔者建议你最好将你的硬盘分区表信息备份起来。备

份有两种方式,一种是以文件形式将硬盘每个逻辑盘的分区信息存储起来;另一种

是将分区信息备份在硬盘隐藏扇区里。比如可以将0柱面0磁头1扇区备份在0柱面
0
磁头3扇区,将D盘开始柱面号0磁头1扇区备份在该柱面0磁头3扇区,其它逻辑盘也

如此。这种方法简单、方便,也很可靠。用NORTAN中的DISKEDI很容易操作和实现

。有了备份分区表信息,就不怕破坏分区表的病毒了;再加上我给你的程序,即使

有人真锁住了你的硬盘,你也可以轻而易举解开了。五·建议

  为更好的保护你的硬盘,笔者建议你最好将你的硬盘分区表信息备份起来。备

份有两种方式,一种是以文件形式将硬盘每个逻辑盘的分区信息存储起来;另一种

是将分区信息备份在硬盘隐藏扇区里。比如可以将0柱面0磁头1扇区备份在0柱面
0
磁头3扇区,将D盘开始柱面号0磁头1扇区备份在该柱面0磁头3扇区,其它逻辑盘也


====================


--
 ◎                                                                        ◎
 ▉╔══════════════════════════════════╗▉
 ▉║吾乃空空妙手无影神偷门下九代弟子有影小笨贼是也!(文化不高不准笑钦此)║▉
 ▉╚══════════════════════════════════╝▉
 ◎                                                                        ◎

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.108]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店