还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
硬盘数据恢复常识硬盘数据恢复常识数据恢复一直以来都是我们关注的问题,因为你的电脑数据每天都在受着诸如病毒、恶意代码、黑客、误操作等的威胁!那么如何才能恢复你的数据呢希望本文能对你有所帮助!
一、理论篇要深入学习数据恢复,并非是一件容易的事,要想成为一个数据恢复专家,没有深厚的理论知识是不可能的,你必须了十分了解磁盘的逻辑结构,就让我们来看看需要学习的理论知识吧当我们对文件进行访问时,你有没有想过,操作系统是如何对文件进行操作的呢这些文件又是如何存放在磁盘当中的呢先来看看硬盘的总体结构,在介绍硬盘总体结构之前有必要介绍一下硬盘的参数,硬盘是以磁头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位二进制数表示,11111111112=102310,也就是说最多可以表示的磁头数为1024个请大家记住这些在我们以后的学习中还会用到的,由此可以看出基于这种访问方式我们最大能访问的磁盘容量为255*1023*63*512字节=8414461440/1048576=
8024.66M只有大约8G的空间,这是因为早期磁盘还很小,想想当年你拥有一块200M硬盘时的喜悦心情吧!就好象当年的科学家们以为1K内存已经很大了一样,让电脑用户很长一段时间都为配置DOS下的内存而烦恼而今,你肯定拥有一块大于8G的硬盘了,你能够用她,应该多亏了一种较新的硬盘访问技术--扩展Int13H技术采用线性寻址方式存取硬盘,所以突破了8G的限制,而且还加入了对可拆卸介质如活动硬盘的支持,因为是谈数据恢复不是谈编程,关于扩展INT13H技术我在此就不详述了硬盘数据基于FAT结构总体结构如下
1、主引导扇区Master bootsector占用一个扇区
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 bootsector的结构它是硬盘的第一个扇区,由主引导程序MasterBoot Record简称MBR,硬盘分区表Disk PartitionTable简称DPT和结束标识三部分组成其结构如下
1、偏移0H~1BDH主引导程序占446个字节,但实际可能并没有到这么多的字节
2、偏移1BEH~1FDH硬盘分区表占64个字节,每个分区项占16个字节,最多可容纳4个分区项
3、偏移1FEH~1FFH结束标识占2个字节,结束标志,总为55H AAH主引导程序我在此就不分析了,需要注意的是在主引导程序中有一些出错信息,一些引导型病毒往往会覆盖这些信息来将自己嵌入到主引导程序中去,并将主引导程序开始的几个字节改为一条跳转指令,通过观察主引导程序的变化,往往可以让我们看出自己的电脑是否有引导型病毒,一旦发现异常,我们可以用FDISK/MBR命令来覆盖原有的MBR结束标识的两个字节总是55H AAH,该标识只是用于判断这个扇区是否是有效的主引导扇区,如果主引导程序发现没有这个结束标识,将会认为操作系统丢失,并显示Missing OperatingSystem硬盘分区表从偏移1BEH~1FDH的64个字节存放的是硬盘分区表,其中最多包含4个分区项,每个分区项由16个字节构成,其结构如下
1、1BEH~1CDH分区项
12、1CEH~1DDH分区项
23、1DBH~1EDH分区项
34、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磁盘软件在隐藏分区操作时就是将此字节的内容保存后在把它改为00H05H分区结束磁头号06H其高2位为分区结束柱面号的高位,底6位为分区结束扇区号07H分区结束柱面号的低位08H~0BH此4个字节为在线性寻址方式下的分区的扇区地址当分区大于8G时,扩展INT13H是通过该信息进行寻址的,我们可以发现在这种方式下寻址最多可访问的空间为FFFFFFFFH扇*512B/扇=2048G,也就是说我们用扩展INT13H最大可以访问的空间为2048G,这个数字现在对我们来说是非常大的,但谁都不能想象计算机的发展之快,到时到底要如何来突破这个限制呢现在谁也不知道注意此4个字节是从高位到低位排列的!例如我的分区表第一个分区项此4字节的内容为3FH00H00H00H,它代表该分区是从0000003FH开始的,也就是从线性地址63扇开始的线性地址把硬盘的第一个扇记为0H扇0CH~0FH此4个字节为以扇区为单位的该分区大小总扇区数,此4个字节同样是从高位到低位排列的!二引导扇区Boot sector的结构当主引导程序找到了带有引导标识为80H的分区后,就会将该分区的引导扇区读入到内存地址为00007C00处,并把控制权交给引导扇区中的引导程序,让我们来看看其中一些需要了解的地方
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的磁盘该值总为00H00H
8、13H~14H对于软盘或早期小硬盘该处为分区总扇区数,对于硬盘一般此值为00H00H
9、15H介质描述,对于
1.44软盘此处长为F0H,对于硬盘此处长为F8H
10、16H~17H对于软盘或早期小硬盘该处为每个FAT占用的扇区数,对于硬盘一般此值为00H00H
11、18H~19H每道扇区数,一般为3FH00H,即每道有63个扇区
12、1AH~1BH磁头数,一般为FFH00H,即每个柱面有255个磁头
13、1CH~1FH隐含扇区数
14、20H~23H对于大硬盘来说该处存放的是该分区占用的扇区数
15、24H~27H对于大硬盘来说该处存放的是每个FAT占用的扇区数
16、40H该处为磁盘BIOS信息,第一块硬盘为80H,一般软盘为00H
17、47H~51H用户设置的卷标,如果没有卷标此处常为字符串NO NAME
18、52H~59H文件系统,对于FAT32文件系统此处常为FAT
3219、1FEH~1FFH结束标识,和上文提到的主引导区的结束标识一样为55H AAH以上是引导扇区的一些信息,在上面我们可以获得一些有用的信息,我们也可以想象一下为什么当我们在分区上单击右键在分区属性中可以看到一些分区信息,比如分区大小,文件系统等等,知道原理,你也可以直接调用这些参数了三磁盘文件分配表FAT在介绍FAT之前,我们要先了解有关簇的概念,簇Cluster是文件数据区被划分成的具有大小相等的区域用于磁盘文件的计量分配单位一个簇可能有
1、
2、
4、
8、
16、
32、64或128必须是2的幂个扇区构成,但对于一种磁盘系统是其值往往是一定的,比如FAT16中每簇一般为32K占64个扇,FAT32中每簇一般为4K占8个扇要理解操作系统为什么要用簇对磁盘进行管理,还是得学习FAT,FAT32磁盘中在系统引导区之后有一些保留未用的扇区,再后面有一个以F8H FFH FFH0FH开始的FAT表,对于FAT16是以F8H FFH开始的,每个FAT项占32位4个字节,FAT16的每个FAT项占16位2个字节,不同的FAT值有不同的含义FAT12的表项值FAT16的表项值FAT32的表项值值的含义000H0000H00000000H未用的空簇001H~FEFH0001H~FFEFH00000001H~0FFFFFEFH文件已使用的簇FF0H~FF6H FFF0H~FFF6H0FFFFFF0H~0FFFFFF6H系统保留簇FF7H FFF7H0FFFFFF7H坏簇FFF8H~FFFH FFF8H~FFFFH0FFFFFF8H~0FFFFFFFH文件的最后一簇注意在FAT表项中的16进制码总是从高向底排列的我们再来看看系统是如何利用FAT表来管理和访问文件的系统在创建一个新文件时,逐一扫描FAT,跳过已经分配的簇,将该簇分给文件,其簇号作为该文件的起始簇号被放在该文件的文件目录项中关于文件目录项我们将在后面详谈,如果此文件的大小只需要一个簇就可以放下的话,在该簇对应的FAT项中将放文件最后一簇的标志一般是FFH FFH FFHF0H,即其值为0FFFFFFFH,如果文件大小一个簇放不下,系统就会在继续寻找FAT表中未用的簇,找到后将该簇的簇号写到上一簇对应的FAT项中,如果此时已经可以存下该文件的数据,系统就会在此簇对应的FAT中记上最后簇的标志,否则就继续找下一空簇.也就是说FAT和簇是一一对应的关系,对于FAT32的FAT来说每4个字节为1个FAT项对于FAT16的FAT每2个字节为一个FAT项,从0~N个FAT项分别对应0~N个簇,在我们对文件进行访问时,总是先访问文件的目录项,找到首簇簇号,再找到该簇号对应的FAT项,在其中找到下一簇的簇号,再在下一簇对应的FAT项中找到再下一簇的簇号.一直到在FAT项中找到有文件最后一簇的标志,我们对该文件的查找才结束当然也可能在首簇对应的FAT中该文件就结束了这样就形成了一个链,我们把它称为盘簇链简要介绍一下FAT12系统,FAT12现在只用于软盘,因为是每个FAT占12位所以是每2个字节含有3个FAT项,我们来看看FAT12系统在寻找簇链的过程将10进制簇号*
1.5并取整,该值为FAT相对位移,在该处存放的是下一簇的簇号,以此类推一个问题到底每簇占多少扇区合适文件所占簇数为文件占用的簇数=[文件长度/每簇所占空间]取整+1文件在最后一个簇存放的时候不可能刚好放满,没有放满的空间就浪费了就好象我们打电话不可能每个电话都打到X分
59.99秒,即使你通话时间为X分1秒你也要付出X+1分的电话费,我们可以来计算一下你的FAT系统磁盘空间浪费的大小浪费的空间大小=文件个数/2*每簇字节数平均每个文件浪费半个簇的空间这样看来好象簇越小浪费的空间也越小,但是有个矛盾的地方是簇越小FAT所用的空间就会越大,同时簇小了,簇链就越长,访问文件的时间就会加长,这又是一种资源上的浪费,因此,簇的大小应该是以提高文件的访问时间和充分利用磁盘空间为原则的三目录项的结构在第2个FAT表系统一般有两个同样的FAT表后我们可以找到该分区的根目录区,在上面有许多目录项注意目录项并非根目录才有,让我们先来复习一下FAT16的目录项各个字节的含义由32个字节构成00H~07H文件的文件名,其中00H为以下值时有些特定含义00H表项为空表项E5H文件已被删除05H实际该字节为的值为E5H08H~0AH文件的扩展名0BH文件属性8位文件属性字节含义如下B7~B6未用B5归档位B4子目录代表该文件是一个目录或叫文件夹B3卷标卷标也解释为一种特殊的文件B2系统文件B1隐藏文件B0只读文件0CH~15H FAT16系统保留未用16H~17H系统最后修改时间,其中16H字节的0~4位是以2秒为增量的秒16H字节的5~7位和17H字节的0~2位是分钟17H字节的3~7位是小时18H~19H文件最后修改的日期,其中18H字节0~4位是天号18H字节5~7位和19H字节0位是月份19H字节的1~7位为年号,0~119分别代表1980~20991AH~1BH文件的起始簇号我们在之前已经介绍了1CH~1FH文件的长度单位为字节我们知道用在FAT16系统下的文件名有一些弊端,如文件名最多只能有8个字符或4个汉字,扩展名最多有3个字符,不分大小写,不能用一些特殊字符等在FAT32系统这些问题已经得到解决,我们来看看FAT32系统是如何解决长文件名问题的假如在你的电脑中有一个文件名为abcdefghijklmnopqrstuvwxyz
111111.txt的文件名,那么该文件在磁盘目录中就占用了4个已32字节为单位的目录项,其中有3个目录项是用来描述长文件名的,有1个目录项是用来兼容老的FAT系统的,我们来看看例子中前3个用于描述长文件名的目录项43H31H00H31H00H31H00H31H00H31H00H0FH00H27H31H00H2EH00H74H00H78H00H74H00H00H00H00H00HFFH FFHFFHFFH02H6EH00H6FH00H70H00H71H00H72H00H0FH00H27H73H00H74H00H75H00H76H00H77H00H78H00H00H00H79H00H7AH00H01H61H00H62H00H63H00H64H00H65H00H0FH00H27H66H00H67H00H68H00H69H00H6AH00H6BH00H00H00H6CH00H6DH00H不难看出描述长文件名的目录项中的一些规则在每个目录项的32个字节中,
1、偏移0H处代表了长文件描述目录项的序号,其中高4位如果为0100则表示此项为最后一个目录项,低4位表示此长文件名的目录项的序号如果此长文件名描述目录只用到了1个目录项,则此值为41H,如果此值为E5H代表此文件已被删除;
2、偏移0BH~0CH处其值总为0FH00H;
3、偏移0D处该长文件目录项的标号,同一个长文件目录的不同目录项该值总相同比如本例中3个目录项该值都为27H;
4、偏移1AH~1BH处该值总为00H00H;5从偏移01H~1FH跳过前4项提到的字节,总是一个文件名的ASCII码接一个00H排列的,如果文件名的ASCII码在一个目录项还未写完,则会接到下一个目录项实际上这些目录项都是从高到低排列的同样的位置继续写,如果已经写完,则系统会在最后一个ACSII码后写00H,最多写3个00H,如果3个00H写完后,目录项还有空余位置,则系统会把这些位置全部写上FFH同时FAT32系统还有一个类似与FAT16的目录项紧接着长文件名的目录的后面,同样占32个字节00H~07H文件的文件名08H~0AH文件的扩展名0BH文件属性0CH保留未用0EH~0FH文件创建时间10H~11H文件最后访问日期12H~13H文件创建日期14H~15H文件起始簇号的高16位16H~17H系统最后修改时间,其中16H字节的0~4位是以2秒为增量的秒16H字节的5~7位和17H字节的0~2位是分钟17H字节的3~7位是小时18H~19H文件最后修改的日期,其中18H字节0~4位是天号18H字节5~7位和19H字节0位是月份19H字节的1~7位为年号,0~119分别代表1980~20991AH~1BH文件的起始簇号的低16位1CH~1FH文件的长度单位为字节注意其中文件名为DOS兼容文件名,比如上例中在DOS下的文件名为ABCDEF~
1.TXT;其首字节含义同FAT16系统;文件属性字节含义同FAT16系统;在FAT32系统中增加了最后访问日期和文件创建时间日期,其计算原理同FAT16中的最后修改的时间和日期四扩展分区表我们已经学习了在主引导扇区中的分区表的偏移04H,是分区系统标志,当该值为05H或0FH表示该分区为扩展分区,其实它并非一个真正意义上的分区项,此分区项只是指向一个扩展分区表,这样做是为了解决分区表中最多只能有4个分区项的问题,扩展分区表也是从扩展分区表所在的扇区偏移1BEH~偏移1FD,该扇区0H~1BDH一般为1BEH个00H,同样要以结束标志55H AAH结束同样,在扩展分区表中也可能存在指向下一个扩展分区表的分区项记录激动时刻,赢取超级大奖!点击链接,和我一起参加2010我的世界杯Blog日志活动!特别声明1资料来源于互联网,版权归属原作者2资料内容属于网络意见,与本账号立场无关3如有侵权,请告知,立即删除。