选择显示字体大小

cih硬盘数据恢复方法与实例


本来不想写什么总结了,但是有两件事是不能释怀的。一般我都是在版上提前发 出病毒警告的,但这一次因为个人的私事,没有这样做,不管这样做能发挥多大作用有效,但是至少事前,作为版主我没有尽到责任。第二,关于数据恢复,我 是有过失的,我曾在以前的贴子说数据可以恢复是个概率事件,依赖于病毒破坏 是否完成,因为当时我并没有看到cih破坏的硬盘,只是简单的根据机理进行的分析。现在看起来,概率事件当然还是,但是,不知道这个观点是否有误导的作用 认为概率事件就是不可恢复的。这一次,经过对收到的十几块硬盘的分析,看来 病毒破坏可能是很难完成的,因为cih的覆盖可能与95/98文件系统发生冲突,如袁哥前面说的好“windows死机了。”所以,写这点东西作为经验交流,也作为一个补偿。由于写太细就写不完了,所以就叫减料版吧,另外凭借记忆完成,可 能有错误或步骤的颠倒。一、基础知识 1、dos(dos兼容系统硬盘数据)的构成 主分区和扩展分区结构基本相似,以下以主分区为例。 主引导记录(mbr):mbr占一个扇区,在cyl 0、side 0 、sec 1,由代码区 和分区表构成。其中代码区可以由fdisk/mbr重建。 系统扇区:cyl 0、side 0 、sec 1-cyl 0、side 0 、sec 63,共62个扇区 引导区(boot):cyl 0、side 1 、sec 1 这是我们过去称的dos引导区。 也占一个扇区。 隐藏扇区:cyl 0、side 0 、sec 1,如果是fat16那么占一个扇区,如果是 fat32 则由此占32个扇区。 文件分配表:一般有两个fat表,fat12、fat16的第一fat表一般均在0-1-2, fat32的第一fat表在0-1-33。fat表是记录文件占用扇区连接的地方,如果 两个fat表都坏了,后果不堪设想。由于fat表的长度与当前分区的大小有关 所以fat2的地址是需要计算的。 根目录区:(root)这里记录了根目录里的目录文件项等,root区跟在fat2后面。 数据区:跟在root区后面,这才是数据内容。2、主引导记录简单说明:主引导记录是硬盘引导的起点,关于代码区不多说了,其分区表,比较重要的是2个标志,在偏移1be,处的80 的标记表示系统可引导,且整个分区表只能有一个80标记。 另一个就是结尾的55 aa标记。用来表示主引导记录是一个有效的记录。其实,无论mbr还是隐含扇区还是boot区,都不重要,这些重建都比较容易。 对数据恢复来说,能否成功的找回数据文件是重要的。另外,由于fat表记录了文件在硬盘上占用扇区的链表,如果2个fat表都完全损坏了。那么恢复文件,特别是占用多个不连续扇区文件就相当困难了。基本思路是, 1、fat2没有损坏的情况,用fat2覆盖fat1。 2、fat2也已经损坏的情况,我一般是只期待找回其中某些关键的文件了。我们最期待的是这些文件是连续的。如果不连续的话,也并非没有可能,但这往往还要知道文件的一些细节,包括对一些文件本身的连接结构有了解。如果fat2没有完全破坏,是有一定用处的,另外,一般来说,fat16的硬盘因 为fat表靠前破坏的比较严重,一般两个fat表都坏了,小硬盘也很难恢复了。二、一个基本恢复被cih破坏硬盘数据的例子一直有朋友问手工恢复的技巧,近来恢复了多块被cih破坏的硬盘,之所以选取这一次,是因为尽管恢复成功,但其中犯了一些错误,值得注意。委托恢复用户:某银行系统 硬盘情况:cih发作有该单位电脑人员曾用kv300 f10进行修复,但没有成功,又恢复了保存的mbr。准备好软盘3张: disk1 :win98启动盘(带debug) disk2:diskedit等工具(此盘不要写保护) disk3:dos下杀cih的工具把我的硬盘摘下,挂上待恢复的的硬盘,开机,进入setup,检测硬盘,把参数 记下。 cly 620 head 128 precomp 0 landz 4959 sector 63 mode lba。 用准备好的软盘启动: a:>c: 显示invalid drive specification fdisk/mbr重建主引导记录。(这是个习惯),重新软盘引导:(可能没有必 要)。此时已经看的见c:硬盘。启动diskedit,启动过程中显示invalid media type reading driver c,哎呀,算了,还是先用debug 清空分区表,,并置80和55aa标志。重新启动,再运行diskedit,显示设定为read only,没关系,把configuration中的只读选项去掉,存盘,好了,可以编辑了。由于当时接的硬盘有多块,我把这块当成了是一块只有c分区,所以没看别的东西,我们期待fat2没有损坏,以用fat2覆盖fat1,在这个时候diskedit要比debug容易的多,在find object中选择 fat,查一下起始扇区,好的,在 cyl 0 side68 sec 14,0000h,f8 ff ff 0f(fat32的),好的,fat2没坏。其实如果不用diskedit的可以用debug查,偏移0000的f8 ff ff。由于以为只有c分区,所以,上来就在find中查找iosys(io和sys中要有空格 )以查找root区。找到后观察,是否有c:\下常见文件。好的,root区没被破坏。记下了该扇区的cyl 0、side 68 、sec 14,备用。fat1一般前面已经被破坏了,但后面应该还在,这可以作为检查。因为是32 位的,fat1 一般在cyl 0 side1 sec 33。因为有了root 区然后应该计算fat 表的长度了,因为fat2到 root前一扇区为止,所以非常简单。然后可以用fat2覆盖fat1,这里用debug 还是diskedit都可以,如果用debug一般是用int 25读绝对扇区,再用int 26 写入,不过一般要分几次。记得保留断点呀:-)用diskedit可以mark fat2的 内容copy下来,在write到fat1。然后可以恢复主引导记录、隐含扇区和boot区,可以先用ndd修复分区表,然 后可以考虑用标准覆盖法,如果你希望下一步由nortonutilities ,来接手这些都可以不做。我从另一台fat32上取来了,相应的部分,写了进去。我这是发 现好象有一个d盘。先看一下在说吧。好了,关机串上我的硬盘,用norton utilities 4扫描c盘,文件基本恢复,对c盘杀毒,why,没有发现病毒,换了2 种杀毒软件还是没有病毒,更糟糕的是,显示c盘是948m,有一个d盘,但是95 下无法浏览,dos下乱码。于是打电话核实当时的情况,原来是26日那天,放进一张光盘,光驱灯亮了一会,就硬盘狂响,蓝屏死机了。应该证实我的推断一样,是光盘的autorun程序有cih病毒。所以说没有实时防御能力的软件是没有意义的。另外,他们的硬盘确实分两个区,而且重要文件在d区。(气死我了!)然后在修复d盘吧,再回到dos,用debug查找结束标志为55aa的扇区,由结构判 定是否为扩展分区。此时可算出大小来返回修订主分区表。当然,许多工具也可以很好的完成这一工作。如果你没有把握,就用他们完成好了。经验总结:


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons