|
数据恢复入门教程
初买来一块硬盘,我们是没有办法使用的,你需要将它分区、格式化,然后再安装上操作系统才可以使用。一个完整硬盘的数据应该包括五部分:MBR,DBR,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就表示将改文件删除了。
--------------------------------------------------------------
从系统中剔除病毒
一、让病毒从目录中消失
我们先得从病毒所在的目录入手,如果病毒像正常的软件一样有自己独立的目录,那么我们可以略微的笑笑了——这个病毒比较弱。检查目录的创建时间就可以知道您是什么时候染的毒,并可能发现毒从何来。如果它没有自己单独的目录,而是存在于系统目录,那也比较好办,这种病毒的破坏性一般不是很大,您就直接查看它的属性就可以了解到一切必要的信息。如果它存在于您计算机上的每个目录,那这时候Windows自带的文件搜索功能就派上用场了。
尽管它复制的到处都是,但这种病毒都只有一个主程序文件,且都是一个娘胎生的,文件大小必然一致。打开文件搜索的高级功能,填入EXE文件类型并把文件的大小输入,然后按下回车键,接着藏在您硬盘每个角落的病毒就会被暴露无疑。利用创建时建排序,您可以发现第一个攻击您机器的病毒了。现在所有的病毒数据文件几本都在眼前了,至少是病毒能对你发动攻击的主要成分,那么就请大开杀戒吧,把您找到的与任何与病毒相关的EXE、DLL、数据全部删除。不过别做的太绝,留上至少一个EXE作为标本,将其扩展名改为DAT并用RAR打包,我们以后还用的上。
另外还是请您非常的小心谨慎,别把不是病毒的文件给误删了,那可是致命的错误!在处理完硬盘病毒后,千万不要重起计算机,那可能会导致前功尽弃,因为有的病毒的正身我们并不能如此轻易的找到。如果有些病毒不以EXE的身份出现,而是其它的比如COM、RAR等,我们的文件尺寸搜索法一样适用,换个扩展名就行了。不过我还是要告诉您一件不幸的事,主程序文件尺寸不一样的病毒现在还没有但并不代表以后不会有,到那时我们只能用关键数据匹配搜索了。
二、对病毒最后的阵地发动总攻
硬盘上的病毒虽然已被我们斩草除根,但更麻烦的事还在等着我们,要知道负隅顽抗的敌人才是最可怕的。病毒的最后阵地在哪呢?无疑就是那传说中的注册表。因为系统服务的信息都存储在注册表理,我就把服务的内容归类在这一节了。首先应该做的事是仔细检查你的服务列表,仔细核对每一个没有描述的服务,看是否和你刚结束掉的进程有关。对于中文版Windows的用户来说,查出病毒服务是有一定优势的,原因说来比较可笑,那就是国外写病毒的程序员不懂中文,因此他们不会用中文的描述来将自己伪装成系统服务。因此对于一切英文描述的服务也应该格外注意。
我还见过更狠的病毒,它将系统正常的进程干掉,然后将那个进程的描述、名称等信息套用在自己身上,伪装的真是天衣无缝。但最终还是露出了马脚,它所对应的EXE文件是完全不对路的。当确保进程是安全的,那我们就可以直接进入注册表了,先检查系统起动时自动运行的注册项,看有没有可疑的程序。我的经验是在系统启动时基本不运任何程序,真的要运行就放在开始菜单的启动项里,这样不仅安全,而且可以为你发现病毒带来极大的便利。
事实上,长期以来的无数次实践证明,将所有的自动启动项都删除对于机器是没有任何不良影响的。系统本身不会把关键的启动程序放在那里,对于系统运行最关键的其实是服务。不过当你在这里发现病毒时先不要急于删除键值,您应该将它记录下来,看看它对应的程序是否已被你备案。然后将病毒程序可能的名字都复制下来,逐个在注册表中搜索,把找到的所有的匹配项全部删掉。不过这样做还是有一定的危险性,我强烈建议您在删除前导出键值以做备份。在注册表的查杀和扫描工作结束后,我们终于可以长嘘一口气了,因为病毒及其家人很可能已经被我们残忍的屠杀净了。在您再次检查进程列表确保无误后,就可以重起计算机看看病毒是否会再次发作了。
三、真正可怕的对手
还记得上面的内容中层经提到过的寄生在浏览器进程或系统服务进程中的病毒吗?它们当之无愧是我们最可怕的敌人。然而随着您将他们藏在注册表里的信息清除掉,它们中的大多数在您重起机器后就不会再附加在系统进程上了,这时就可以按照上面的方法将它们清除,这听起来并不很复杂是吗?但更加令人恐怖的病毒还在后面,那就是病毒在运行的时候对注册表实施了监控,一旦发现它在注册表里的注册信息被破坏,将会立即复原,使你对注册表的操作无效。对于这样的病毒,我们只能用干净的DOS启动盘启动机器,然后将它的程序文件删掉,再启动进入Windows,删除它在注册表里的信息。
有的朋友会问,为什么不进入安全模式杀毒。当然,在安全模式下绝大多数无用的服务和进程不会被启动,然而这对于那些丧心病狂的特殊病毒这是无效的,甚至于当它们发现您的机器进入了安全模式后会立即发动最后猛攻,使您的机器彻底瘫痪。虽然这么狠的病毒对于一般的朋友来说是百年难遇的。
------------------------------------------------------------
解决内存不能为read办法
系统dll文件没有注册,可能引起各种各样不可知的问题,比如无法打开二级链接,经常出现“内存不能为read或written”等错误。如何一下把所有的dll文件重新注册一遍呢?
在“运行”中输入cmd,在命令提示符下输入(复制好了在命令提示符上右键选择粘贴即可):
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
你也可以更改注册文件的路径,不一定在system32文件夹下。这比用软件方便多了请在系统有问题的时候再使用,比如用IE打不开新窗口等等之类的问题,如果机器正常的话就没必要使用了。
------------------------------
系统运行过程中的故障
运行某个程序时提示出错内存不能为READ或不能为WRITER(written)
出现某某程序出错,内存不能为READ,偶尔出现,是程序冲突,与偶尔蓝屏差不多,没什么关系的。经常出现就危险了,后果很严重,往往是废了半天劲,还是重装系统来得更彻底!
该内存不能read written常见原因及解决方法
1 内存条坏了 更换内存条
2 双内存不兼容 使用同品牌的内存或只要一条内存
3 内存质量问题 更换内存条
4 散热问题 加强机箱内部的散热
5 内存和主板没插好或其他硬件不兼容 重插内存或换个插槽
6 硬件有问题 更换硬盘
7 驱动问题 重装驱动,如果是新系统,应先安装主板驱动
8 软件损坏 重装软件
9 软件有BUG 打补丁或更新到最新版本
10 软件和系统不兼容 给软件打上补丁或是试试系统的兼容模式
11 软件和软件之间有冲突 如果最近安装了什么新软件,卸载了试试
12 软件要使用其他相关的软件有问题 重装相关软件,比如播放某一格式的文件时出错,可能是这个文件的解码器有问题
13 病毒问题 杀毒
14 杀毒软件与系统或软件相冲突 由于杀毒软件是进入底层监控系统的,可能与一些软件相冲突,卸载试试
15 系统本身有问题 有时候操作系统本身也会有BUG,要注意安装官方发行的更新程序,像SP的补丁,最好打上.如果还不行,重装系统,或更换其他版本的系统。
16 在控制面板的添加/删除程序中看看是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。
另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。
如果以上方法并不能完全解决问题,试着用一下“IE修复”软件,并可以查查是否有病毒之类的。
17 重新注册所有动态链接文件
运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1
这个命令慢慢输,输入正确的话会看到飞快地滚屏,否则失败就是没这效果。回车后慢慢等(需要点时间1-2分钟) 都运行完再打开看。
如果以上都不能解决,则只有重装系统了…… |
|