[原创]反黑行动之数据恢复

范堡 发布于 2009/05/05 15:13
阅读 393
收藏 0

精选30+云产品,助力企业轻松上云!>>>

反黑行动之数据恢复 
数据恢复一直以来都是我们关注的问题,因为你的电脑数据每天都在受着诸如病毒、恶意代码、黑客、误操作等的威胁!那么如何才能恢复你的数据呢?希望本文能对你有所帮助! 
一、理论篇 
要深入学习数据恢复,并非是一件容易的事,要想成为一个数据恢复专家,没有深厚的理论知识是不可能的,你必须了十分了解磁盘的逻辑结构,就让我们来看看需要学习的理论知识吧。 
当我们对文件进行访问时,你有没有想过,操作系统是如何对文件进行操作的呢?这些文件又是如何存放在磁盘当中的呢?先来看看硬盘的总体结构,在介绍硬盘总体结构之前有必要介绍一下硬盘的参数,硬盘是以磁头(Heads),柱面(Cylinders),扇区(Sectors)进行访问的。其中: 磁头数(Heads)表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 255 (用 8 个二进制位存储); 柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道,最大为 1023 (用 10 个二进制位存储); 扇区数(Sectors) 表示每一条磁道上有几个扇区, 最大为 63(用 6 个二进制位存储). 每个扇区一般是 512个字节,学习过汇编语言的朋友可能想到了,BIOS中断13H的入口参数中,CH是磁道号其值为0H~FEH(最多255个磁道),CL中低6位为扇区号,其值为1H~3FH(最多63个扇区),DH为磁头号的低位,CL中的高2位为磁头号的高位,也就是说,磁头号最多由10位二进制数表示,(1111111111)2=(1023)10,也就是说最多可以表示的磁头数为1024个。请大家记住这些在我们以后的学习中还会用到的,由此可以看出基于这种访问方式我们最大能访问的磁盘容量为: 
255 * 1023 * 63 * 512字节=8414461440/1048576=8024.66M 
只有大约8G的空间,这是因为早期磁盘还很小,想想当年你拥有一块200M硬盘时的喜悦心情吧!就好象当年的科学家们以为1K内存已经很大了一样,让电脑用户很长一段时间都为配置DOS下的内存而烦恼。而今,你肯定拥有一块大于8G的硬盘了,你能够用她,应该多亏了一种较新的硬盘访问技术——扩展 Int13H 技术。采用线性寻址方式存取硬盘, 所以突破了 8 G的限制, 而且还加入了对可拆卸介质(如活动硬盘)的支持,因为是谈数据恢复不是谈编程,关于扩展INT13H技术我在此就不详述了。 

硬盘数据(基于FAT结构)总体结构如下: 
1、主引导扇区(Master boot sector) (占用一个扇区) 
2、第一个分区的引导扇区(Boot sector)(占用一个扇区) 
3、第一个分区的FAT1 (占用空间由磁盘大小和FAT类型来定) 
4、第一个分区的FAT2 (占用空间由磁盘大小和FAT类型来定) 
5、第一个分区的根目录区 
6、第一个分区数据区 (用来存放各种文件的数据) 
7、扩展分区表 (占用一个扇区 ) 
8、第二个分区的引导扇区(Boot sector)(占用一个扇区) 
9、第二个分区的FAT1 (占用空间由磁盘大小和FAT类型来定) 
10、第二个分区的FAT2 (占用空间由磁盘大小和FAT类型来定) 
11、第二个分区的根目录区 
12、第二个分区数据区 (用来存放各种文件的数据) 
13、扩展分区表 



注意:当你的硬盘没有扩展分区的时候,你就没有扩展分区表了;当你只有一个硬盘分区的时候你的硬盘结构到6就完了。 

(一)主引导扇区(Master boot sector)的结构: 
它是硬盘的第一个扇区, 由主引导程序(MasterBoot Record简称MBR),硬盘分区表(Disk Partition Table简称DPT )和结束标识三部分组成。其结构如下: 

1、偏移0H~1BDH 主引导程序(占446个字节,但实际可能并没有到这么多的字节) 
2、偏移1BEH~1FDH 硬盘分区表(占64个字节,每个分区项占16个字节,最多可容纳4个分区项) 
3、偏移1FEH~1FFH 结束标识 (占2个字节,结束标志,总为55H AAH) 

主引导程序我在此就不分析了,需要注意的是在主引导程序中有一些出错信息,一些引导型病毒往往会覆盖这些信息来将自己嵌入到主引导程序中去,并将主引导程序开始的几个字节改为一条跳转指令,通过观察主引导程序的变化,往往可以让我们看出自己的电脑是否有引导型病毒,一旦发现异常,我们可以用FDISK/MBR命令来覆盖原有的MBR。结束标识的两个字节总是55H AAH,该标识只是用于判断这个扇区是否是有效的主引导扇区,如果主引导程序发现没有这个结束标识,将会认为操作系统丢失,并显示“Missing Operating System”。 
硬盘分区表: 
从偏移1BEH~1FDH的64个字节存放的是硬盘分区表,其中最多包含4个分区项,每个分区项由16个字节构成,其结构如下: 

1、1BEH~1CDH 分区项1 
2、1CEH~1DDH 分区项2 
3、1DBH~1EDH 分区项3 
4、1EFH~1FDH 分区项4 
注意:没有用到的分区项上的记录总是16个十六进制码00H 

我们再来看看每个分区项的详细含义,假设我们的一个分区占用的16个字节被标为00H~0FH,其结构如下: 

00H 引导标识字节,其值只能为00H或80H,为00H时表示该分区不可引导,为80H时表示该分区可用于引导 。在许多诸如BOOT MAGIC之类的软件都是利用了这一原理,实现多操作系统引导的,了解了这一原理,你也可以写出你自己的多操作系统引导程序了。 

01H 分区起始磁头号 

   02H 其高2位为分区起始柱面号的高位,底6位为分区起始扇区号 

03H 分区起始柱面号的低位 

04H 分区系统标志,当该值为00H时,表示此分区为不可识别的系统;为04H时该分区为FAT16分区;为05H或0FH该分区为 扩展分区;为0B时该分区为FAT32分区 ;为83H时表示该分区为Linux分区, 为07时该分区为NTFS分区等等。一些如PQMAGIC磁盘软件在隐藏分区操作时就是将此字节的内容保存后在把它改为00H。 

05H 分区结束磁头号 

06H 其高2位为分区结束柱面号的高位,底6位为分区结束扇区号 

07H 分区结束柱面号的低位 

08H~0BH 此4个字节为在线性寻址方式下的分区的扇区地址。当分区大于8G时,扩展INT13H是通过该信息进行寻址的,我们可以发现在这种方式下寻址最多可访问的空间为:FFFFFFFFH扇*512B/扇=2048G,也就是说我们用扩展INT13H最大可以访问的空间为2048G,这个数字现在对我们来说是非常大的,但谁都不能想象计算机的发展之快,到时到底要如何来突破这个限制呢?现在谁也不知道。注意:此4个字节是从高位到低位排列的!例如我的分区表第一个分区项此4字节的内容为“3FH 00H 00H 00H”,它代表该分区是从0000003FH开始的,也就是从线性地址63扇开始的(线性地址把硬盘的第一个扇记为0H扇) 

0CH~0FH 此4个字节为以扇区为单位的该分区大小(总扇区数),此4个字节同样是从高位到低 
位排列的 ! 

(二)引导扇区(Boot sector)的结构: 
当主引导程序找到了带有引导标识为80H的分区后,就会将该分区的引导扇区读入到内存地址为0000:7C00 
处,并把控制权交给引导扇区中的引导程序,让我们来看看其中一些需要了解的地方: 

1、0H~02H 一条跳转指令,指针指向后面的引导程序 
2、03H~0AH 厂商名和系统版本 
3、0BH~0CH 每扇字节数,一般为512字节 
4、0DH 每簇扇区数(有关簇的概念我们在后面会详细介绍),对于FAT32的磁盘该字节一般为08H,既每簇为8H*512B=4K。 
5、0EH~0FH 保留扇区数 
6、10H 磁盘FAT的个数,一般为2个 
7、11H~12H 对于FAT16的磁盘为根目录的最大目录项,对于FAT32的磁盘该值总为“00H 00H” 
8、13H~14H 对于软盘