系统工作机理的简单介绍
这一部分在原作中是最重要的一章,考虑到篇幅关系,进行了大量的删节。
1. DOS(DOS兼容系统)硬盘数据的构成
DOS磁盘系统,可以按照逻辑分区的概念管理物理空间,不同分区可以装载不同的OS系统。
FAT结构的每一分区都有独立的引导记录,FDT表,FAT表等。同时,系统还有一个最为重要的主引导记录,在0柱0面1扇区,今后我们用CYL代表柱、SIDE代表面,SEC代表扇区。表一是一个FAT结构分区的示意。
以下简单介绍一下重要的部分:
主引导记录又称主分区表、MBR等等:MBR占一个扇区,在CYL 0、SIDE 0 、SEC 1,由代码区和数据区构成。其中代码区是一段标准的程序,完成BIOS自举到OS BOOT之间的工作,为OS启动做最后的准备。标准代码区可以由FDISK/MBR重建,但对于多系统引导的不标准MBR,将被这一操作破坏。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,是记录文件占用簇的情况和连接关系的地方。一般有两个FAT表,起到备份的作用。FAT12、FAT16的第一FAT表一般均在0-1-2,FAT32的第一FAT表在0-1-33。由于FAT表记录文件占用扇区连接的地方,如果两个FAT表都坏了,后果不堪设想。由于FAT表的长度与当前分区的大小有关,所以FAT2的地址是须要计算的。
表1
硬盘空间
第一扇区
分区1
分区2
分区3
分区4
主引导扇区
引导扇区
引导扇区
引导扇区
引导扇区
各分区公用
各个分区相对独立,可安装不同操作系统。
根目录区(ROOT、FDT):这里记录了根目录里的目录文件项等,ROOT区跟在FAT2后面。
数据区:跟在ROOT区后面,这才是数据内容。
其实, MBR、隐含扇区、BOOT区的重建都比较容易。数据恢复的关键在于恢复数据文件。由于FAT表记录了文件在硬盘上占用扇区的链表,如果两个FAT表都完全损坏了。那么恢复文件,特别是恢复占用多个不连续扇区的文件就相当困难了。
2.主引导记录简单说明
主引导记录是硬盘引导的起点,关于代码区不多说了,其数据区,比较重要的是2个标志,80H和55AA,80H一般在偏移1BE处,80是分区激活的标志表示系统可引导,且整个分区表只能有一个80标记。另一个就是结尾的55 AA标记,用来表示主引导记录是一个有效的记录。另外,各个分区自身的引导记录,也是以55AA结束,这是我们查找分区的标志。我们后面在介绍主引导记录时,给出了一个完整的分区表的例子,大家可对照查看。数据区中,用10H字节表示一个分区,最多可表示4个分区,分别从1BE、1CE、1DE、1EE开始,我们后面给出了分区表项对应地址的含义。大家可以对应分析一下以下分区的情况。
保留区
磁盘参数表 DOS引导记录
控制区
FAT表1 FAT表2 根目录区
数据区
数据区
80 01 01 00 0B FE BF FC 3F 00-00 00 7E 86 BB 00
① ② ③ ④ ⑤ ⑥
①激活标记,80表示可引导分区。
②分区开始的磁头号为01、开始的扇区号为01、开始的柱面号为00,由于开始的扇区号为2进制6位,而开始的柱面号为2进制10位,因此扇区号所用字节的高两位要加在柱面号高两位。
③分区的系统类型FAT32(0B),01是FAT12,04为FAT16,06为BIGDOS,07为NTFS,其他参见分区类型表。
④分区结束磁头号254、分区结束扇区号63、分区结束柱面号764。
⑤首扇区的相对扇区号63。
⑥总扇区数12289622。
常见手工处理工具与DOS外部命令介绍
DEBUG:古老和最为常见的调试跟踪软件,始终捆绑在微软的DOS/WIN9X操作系统中。有19个子命令。有编写执行汇编指令,直接读写绝对扇区和内存单元等功能,可以在最艰苦的条件下工作。DOS6.22以下的系统,debug.exe在DOS目录下,WIN9X系统中它在Windows\command目录下,它也出现在WIN9X所生成的应急盘中。
DISKEDIT:常见16进制编辑软件,字符界面,可以以文件方式和扇区方式读写逻辑内容,可以读写绝对扇区,可以方便地查找编辑分区表、FAT表、ROOT区等重要扇区。这一点要比Debug更方便。但在一些重要扇区损坏的情况下,DiskEdit可能无法启动。DiskEdit软件可以在著名的Norton Utilities软件包中找到。最新的DiskEdit出现在NU4中。
NDD:常见的FAT文件结构磁盘修复工具,就是著名的Norton磁盘医生,可以自动修复分区丢失等情况,可以抢救软盘坏区中的数据,强制读出后搬移到其它空白扇区。希望大家不要再使用Norton FOR DOS7或8的NDD,这个版本由于不支持大分区、FAT32、长文件名等技术,会给你带来大量的麻烦。建议大家使用Norton Utilities 4或更高版本中的NDD.EXE,这是纯DOS下的工具。在硬盘崩溃或异常的情况下,它可能带给用户以希望。WIN9X下的磁盘医生调用的并不是这个程序,而是NDD32.EXE.
FDISK:FDISK当然是个危险的命令,很多人非常恐惧,事实上,FDISK命令的运行并不影响任何分区内的硬盘数据,它对分区的设置操作,只改变主分区表的数据区。特别是FDISK异常重要的隐含参数/MBR,可以重建主分区表的代码区,清除主引导型病毒等。这是非常有用的操作。DOS6.22以下的系统,FDISK.EXE在DOS目录下,WIN9X系统中它在WINDOWS\COMMAND目录下,它也出现在WIN9X所生成的应急盘中。
FORMAT:在一些人眼中,Format是最可怕的命令,但它并不是对硬盘清零,特别值得注意的是,很多文件恢复工具都建议你恢复前先Format该分区起到保护的作用。DOS6.22以下的系统,Format.COM在DOS目录下,WIN9X系统中它在Windows\command目录下,它也出现在WIN9X所生成的应急盘中。
HD-COPY:传统的软盘COPY工具,2.0版本以后加入了强制读的功能,可以读出一些已损坏扇区的内容。
SYS:SYS命令是重建BOOT区的最简洁的手段,也可以杀除BOOT区病毒。DOS6.22以下的系统,sys.com在DOS目录下,WIN9X系统中它在Windows\command目录下,它也出现在WIN9X所生成的应急盘中。
令我非常遗憾的是,至今我没有发现比较出色的扇区级备份镜像工具,我曾写过一个HD-MIRROR,但由于错误较多,我提供下载的第二天就停止了发布,另外fixc的作者NOZ写过一个clone.exe,但可惜只适合相同的硬盘。我也曾以为GHOST可以做到这点,事实上,你目前还不能指望他为你备份一块深度破损的硬盘。如果有一个有效的能按扇区机制(而不是文件机制)压缩备份一块硬盘将之做成一个镜像文件的话,那么我们的恢复工作就有了更多的保证和余地。我们可以更大胆地作恢复的尝试。
自动处理工具或软件包
首先介绍国内的一些免费修复工具
FIXMBR:公道先生写的一个修复MBR的工具,适合处理逻辑分区丢失的情况, 有一些可选参数,支持 FAT32、FAT16,不支持 NTFS、Linux等分区,支持8.4G以上硬盘。可修复CIH发作后的扩展逻辑分区。
VRVFIX:信源公司推出的修复硬盘共享工具,适合处理逻辑分区丢失的情况,处理基本准确。支持FAT32、FAT16,不支持NTFS、 Linux等分区,也不支持8.4G以上硬盘。
FIXC:国内最早出现的可以修复部分被CIH破坏的C盘的工具,作者是NOZ,新版本也加入了修复分区信息的功能,支持FAT32、FAT16,有限支持NTFS,不支持8.4G以上硬盘。目前的版本已经比较完善。
FIXHDPT:TBSOFT工作室的分区信息修复工具。支持FAT32、FAT16,不支持NTFS和Linux,不支持8.4G以上硬盘,是历史比较长的工具之一。
RE:本人早期写的分区表修复工具,支持FAT32、FAT16,有限支持NTFS,不支持8.4G以上硬盘,和某些BIOS不兼容。其整体水准低于前面列举的工具。
国外一些系统维护的工具目前已经达到了非常强大的程度。
Norton Utilities:历史最悠久的系统维护工具。不仅可以恢复数据,还可以加速系统和修补内存错误。目前最新的版本是NU 4.5 FOR WIN9X、NU2 FOR NT等。
Tiramint:最为出色的灾难恢复工具之一,有NTFS、FAT32、FAT16、Novell 4种版本。生成急救软盘,可以对深度破坏的磁盘进行交叉恢复。
常用的基本操作
1.读出主引导记录:这是系统级数据恢复可能涉及最多的程序之一。
例:
DEBUG
-a100 ;从此处开始汇编
126C:0100 mov ax,201; 读操作一个扇区
126C:0103 mov bx,300; 送入地址300
126C:0106 mov cx,1 ;0面1扇
126C:0109 mov dx,80 ;80H为硬盘,头为0
126C:010C int 13
126C:010E int 3
126C:010F
-g=100 ;执行
AX=0050 BX=0300 CX=0001 DX=0080 SP=FFEE BP=0000 SI=0000 DI=0000
DS=126C ES=126C SS=126C CS=126C IP=010E NV UP EI PL NZ NA PO NC
这里用了I/O中断13,涉及的寄存器含义为:
ah,操作方式,02H为读,03H为写
al,送扇区数
bx,送准备装入扇区的内存偏移地址
cx送从哪一道哪一扇区开始,我们一般依靠改换cx来读写不同逻辑盘某个逻辑扇区。
dx,送盘符和头数
int 3是断点中断,使程序运行到此停止。
2.显示引导区内容:我们把扇区读到某个内存地址并不是目的,而是为了看到它的内容,在DEBUG中D命令可以方便地查看内存单元的内容。
续前例,如果我们要看到主引导区的内容的话,既然装载到300。
-d300 l200就可以查看了,一个引导区的映像可以直观地看到我们前面所提到的代码区和数据区。
3.反汇编主引导区内容:判定MBR的代码区是否正常,对于数据区的基本情况,我们可以通过直观观察得出,但对于引导型病毒,或者引导区出现异常代码的情况,我们可能须要分析MBR中代码区的指令。这一般要对已经读入内存的引导区进行反汇编。反汇编用指令U。
续前例:
-u300 l15D ;反汇编主引导扇区代码区内容
126C:0300 33C0 XOR AX,AX
126C:0302 8ED0 MOV SS,AX
............
126C:045C 65 DB 65
126C:045D 6D DB 6D
4.写内存单元:在我们的前例中,主分区类型是0B是FAT32的,假定这个类型实际是NTFS的,我们该如何修改呢?由于主分区类型的偏移是4C3H,我们可以用E命令写到内存单元中,从附表中查得NTFS的类型为07。因此 -e4c3 7
再比如说,假定我们想把无效的分区表清零,那么,我们应当用另一个命令F,这个命令可以填充一个内存地址范围。清零分区表的操作就是 -f4be 4ff 00,以下两个操作也比较常见。
重置80标记,-e4be 80
重置55AA标记,-f4ff 4fe 55 aa
不要忘记了,此时仅仅是改动了内存中的数据,并未写到硬盘上。因此需要用int 13中断把改写的结果写回硬盘。
续前例,
-a100
126C:0100 mov ax,301 ; 写操作一个扇区
-g=100 ;执行
其实,我们相当于修改了刚才输入的读主引导扇区程序,使程序变为。
126C:0100 mov ax,301 ; 写操作一个扇区
126C:0103 mov bx,300 ;从内存地址300
126C:0106 mov cx,1 ;0面1扇
126C:0109 mov dx,80 ;80H为硬盘,头为0
126C:010C int 13
126C:010E int 3 ;断点
5.绝对磁盘内容的读出与写入:类似操作在FAT32结构硬盘被CIH破坏的修复中比较常见,我们后面将讲到恢复的基本思路就是用第二FAT表覆盖第一FAT表。那么无疑要读出第二FAT表的内容,再回写到第一FAT表的位置上。一般来说,大量连续扇区的读出写入 DiskEdit进行非常方便,如果用Debug做则要写一段子程序,不过程序的主要技巧就是利用int 25绝对磁盘读中断读出的内容,而用int 26绝对磁盘写写入内容。
数据可恢复的前提
数据恢复,作为一个数据再现的过程,一定要解决两个问题,第一是从哪里恢复,第二是怎么恢复。解决了这两个问题,我们事实上就把握了数据恢复的。这一部分就是探讨从哪里恢复的问题。
1. 有效而及时的备份是数据恢复最可靠的来源:在许多人倡导备份到秒的今天,恐怕不会有人怀疑这点。而有些备份机制则是系统内建的,比如两份FAT表。
2. 数据的实际有效性的判定是关键:对我们来说,硬盘无法自举、文件找不到、文件打不开等现象,其实并不ce 与数据丢失划等号。因为此时d ovt rnd 往往只是逻辑丢失,在物理意义上,它仍然存在或部分存在。最明显的就是文件删除的例子,事实上,这只是把文件首字节改为0E5而已,文件体依然存在。
3. 数据损坏过程的可逆性分析:对数据的改变无非两种:取代和变换,前者是不可逆的,后者则是可逆的。我们以杀毒为例,对于大多文件性病毒来说,那些以附加而非代换方式感染的文件型病毒,理想的杀毒过程就是感染的逆过程。这种分析也适用于重要信息被隐藏搬移或者被加密的情况,但分析将比较复杂。
4. 数据本身是否是标准信息:有些信息实际是通用或局部通用的,你无须考虑如何从本机抢救。只要有相同或相近的系统版本就可以了,比如BOOT区、隐含扇区、Windows的DLL文件等等。典型的例子如分区表的代码区,这是一段标准代码,事实上,它就放在你的FDISK程序里面,你可以用DEBUG把他提取出来。
5. 数据本身是否可以由其它信息统计再生:有些信息尽管丢失了,也没有备份。但它实际可以从其他数据中间接求得。最典型的就是主分区表中的分区信息,即使你把它清零也不必害怕,因为你可以从你几个分区中计算再生。
6. 破坏的完成程度:事实上,FDISK、FORMAT都不会彻底破坏数据,一般只有低格和扇区覆盖操作才会彻底破坏数据。但有时,破坏过程或者误操作过程会因人工终止、死机等原因不能完成。最明显的就是CIH病毒的例子,由于CIH是以1024字节为单位覆盖扇区,这当然是不可逆过程,于是我们最初都认为,破坏是很难恢复的,除非人工终止。事实上,当病毒覆盖某些扇区时会与WIN9X系统发生冲突,从而造成死机,使数据得到了保护。
上一篇:BOIS类数据恢复
下一篇:恢复误删数据 拯救硬盘十大绝招放送
这一部分在原作中是最重要的一章,考虑到篇幅关系,进行了大量的删节。
1. DOS(DOS兼容系统)硬盘数据的构成
DOS磁盘系统,可以按照逻辑分区的概念管理物理空间,不同分区可以装载不同的OS系统。
FAT结构的每一分区都有独立的引导记录,FDT表,FAT表等。同时,系统还有一个最为重要的主引导记录,在0柱0面1扇区,今后我们用CYL代表柱、SIDE代表面,SEC代表扇区。表一是一个FAT结构分区的示意。
以下简单介绍一下重要的部分:
主引导记录又称主分区表、MBR等等:MBR占一个扇区,在CYL 0、SIDE 0 、SEC 1,由代码区和数据区构成。其中代码区是一段标准的程序,完成BIOS自举到OS BOOT之间的工作,为OS启动做最后的准备。标准代码区可以由FDISK/MBR重建,但对于多系统引导的不标准MBR,将被这一操作破坏。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,是记录文件占用簇的情况和连接关系的地方。一般有两个FAT表,起到备份的作用。FAT12、FAT16的第一FAT表一般均在0-1-2,FAT32的第一FAT表在0-1-33。由于FAT表记录文件占用扇区连接的地方,如果两个FAT表都坏了,后果不堪设想。由于FAT表的长度与当前分区的大小有关,所以FAT2的地址是须要计算的。
表1
硬盘空间
第一扇区
分区1
分区2
分区3
分区4
主引导扇区
引导扇区
引导扇区
引导扇区
引导扇区
各分区公用
各个分区相对独立,可安装不同操作系统。
根目录区(ROOT、FDT):这里记录了根目录里的目录文件项等,ROOT区跟在FAT2后面。
数据区:跟在ROOT区后面,这才是数据内容。
其实, MBR、隐含扇区、BOOT区的重建都比较容易。数据恢复的关键在于恢复数据文件。由于FAT表记录了文件在硬盘上占用扇区的链表,如果两个FAT表都完全损坏了。那么恢复文件,特别是恢复占用多个不连续扇区的文件就相当困难了。
2.主引导记录简单说明
主引导记录是硬盘引导的起点,关于代码区不多说了,其数据区,比较重要的是2个标志,80H和55AA,80H一般在偏移1BE处,80是分区激活的标志表示系统可引导,且整个分区表只能有一个80标记。另一个就是结尾的55 AA标记,用来表示主引导记录是一个有效的记录。另外,各个分区自身的引导记录,也是以55AA结束,这是我们查找分区的标志。我们后面在介绍主引导记录时,给出了一个完整的分区表的例子,大家可对照查看。数据区中,用10H字节表示一个分区,最多可表示4个分区,分别从1BE、1CE、1DE、1EE开始,我们后面给出了分区表项对应地址的含义。大家可以对应分析一下以下分区的情况。
保留区
磁盘参数表 DOS引导记录
控制区
FAT表1 FAT表2 根目录区
数据区
数据区
80 01 01 00 0B FE BF FC 3F 00-00 00 7E 86 BB 00
① ② ③ ④ ⑤ ⑥
①激活标记,80表示可引导分区。
②分区开始的磁头号为01、开始的扇区号为01、开始的柱面号为00,由于开始的扇区号为2进制6位,而开始的柱面号为2进制10位,因此扇区号所用字节的高两位要加在柱面号高两位。
③分区的系统类型FAT32(0B),01是FAT12,04为FAT16,06为BIGDOS,07为NTFS,其他参见分区类型表。
④分区结束磁头号254、分区结束扇区号63、分区结束柱面号764。
⑤首扇区的相对扇区号63。
⑥总扇区数12289622。
常见手工处理工具与DOS外部命令介绍
DEBUG:古老和最为常见的调试跟踪软件,始终捆绑在微软的DOS/WIN9X操作系统中。有19个子命令。有编写执行汇编指令,直接读写绝对扇区和内存单元等功能,可以在最艰苦的条件下工作。DOS6.22以下的系统,debug.exe在DOS目录下,WIN9X系统中它在Windows\command目录下,它也出现在WIN9X所生成的应急盘中。
DISKEDIT:常见16进制编辑软件,字符界面,可以以文件方式和扇区方式读写逻辑内容,可以读写绝对扇区,可以方便地查找编辑分区表、FAT表、ROOT区等重要扇区。这一点要比Debug更方便。但在一些重要扇区损坏的情况下,DiskEdit可能无法启动。DiskEdit软件可以在著名的Norton Utilities软件包中找到。最新的DiskEdit出现在NU4中。
NDD:常见的FAT文件结构磁盘修复工具,就是著名的Norton磁盘医生,可以自动修复分区丢失等情况,可以抢救软盘坏区中的数据,强制读出后搬移到其它空白扇区。希望大家不要再使用Norton FOR DOS7或8的NDD,这个版本由于不支持大分区、FAT32、长文件名等技术,会给你带来大量的麻烦。建议大家使用Norton Utilities 4或更高版本中的NDD.EXE,这是纯DOS下的工具。在硬盘崩溃或异常的情况下,它可能带给用户以希望。WIN9X下的磁盘医生调用的并不是这个程序,而是NDD32.EXE.
FDISK:FDISK当然是个危险的命令,很多人非常恐惧,事实上,FDISK命令的运行并不影响任何分区内的硬盘数据,它对分区的设置操作,只改变主分区表的数据区。特别是FDISK异常重要的隐含参数/MBR,可以重建主分区表的代码区,清除主引导型病毒等。这是非常有用的操作。DOS6.22以下的系统,FDISK.EXE在DOS目录下,WIN9X系统中它在WINDOWS\COMMAND目录下,它也出现在WIN9X所生成的应急盘中。
FORMAT:在一些人眼中,Format是最可怕的命令,但它并不是对硬盘清零,特别值得注意的是,很多文件恢复工具都建议你恢复前先Format该分区起到保护的作用。DOS6.22以下的系统,Format.COM在DOS目录下,WIN9X系统中它在Windows\command目录下,它也出现在WIN9X所生成的应急盘中。
HD-COPY:传统的软盘COPY工具,2.0版本以后加入了强制读的功能,可以读出一些已损坏扇区的内容。
SYS:SYS命令是重建BOOT区的最简洁的手段,也可以杀除BOOT区病毒。DOS6.22以下的系统,sys.com在DOS目录下,WIN9X系统中它在Windows\command目录下,它也出现在WIN9X所生成的应急盘中。
令我非常遗憾的是,至今我没有发现比较出色的扇区级备份镜像工具,我曾写过一个HD-MIRROR,但由于错误较多,我提供下载的第二天就停止了发布,另外fixc的作者NOZ写过一个clone.exe,但可惜只适合相同的硬盘。我也曾以为GHOST可以做到这点,事实上,你目前还不能指望他为你备份一块深度破损的硬盘。如果有一个有效的能按扇区机制(而不是文件机制)压缩备份一块硬盘将之做成一个镜像文件的话,那么我们的恢复工作就有了更多的保证和余地。我们可以更大胆地作恢复的尝试。
自动处理工具或软件包
首先介绍国内的一些免费修复工具
FIXMBR:公道先生写的一个修复MBR的工具,适合处理逻辑分区丢失的情况, 有一些可选参数,支持 FAT32、FAT16,不支持 NTFS、Linux等分区,支持8.4G以上硬盘。可修复CIH发作后的扩展逻辑分区。
VRVFIX:信源公司推出的修复硬盘共享工具,适合处理逻辑分区丢失的情况,处理基本准确。支持FAT32、FAT16,不支持NTFS、 Linux等分区,也不支持8.4G以上硬盘。
FIXC:国内最早出现的可以修复部分被CIH破坏的C盘的工具,作者是NOZ,新版本也加入了修复分区信息的功能,支持FAT32、FAT16,有限支持NTFS,不支持8.4G以上硬盘。目前的版本已经比较完善。
FIXHDPT:TBSOFT工作室的分区信息修复工具。支持FAT32、FAT16,不支持NTFS和Linux,不支持8.4G以上硬盘,是历史比较长的工具之一。
RE:本人早期写的分区表修复工具,支持FAT32、FAT16,有限支持NTFS,不支持8.4G以上硬盘,和某些BIOS不兼容。其整体水准低于前面列举的工具。
国外一些系统维护的工具目前已经达到了非常强大的程度。
Norton Utilities:历史最悠久的系统维护工具。不仅可以恢复数据,还可以加速系统和修补内存错误。目前最新的版本是NU 4.5 FOR WIN9X、NU2 FOR NT等。
Tiramint:最为出色的灾难恢复工具之一,有NTFS、FAT32、FAT16、Novell 4种版本。生成急救软盘,可以对深度破坏的磁盘进行交叉恢复。
常用的基本操作
1.读出主引导记录:这是系统级数据恢复可能涉及最多的程序之一。
例:
DEBUG
-a100 ;从此处开始汇编
126C:0100 mov ax,201; 读操作一个扇区
126C:0103 mov bx,300; 送入地址300
126C:0106 mov cx,1 ;0面1扇
126C:0109 mov dx,80 ;80H为硬盘,头为0
126C:010C int 13
126C:010E int 3
126C:010F
-g=100 ;执行
AX=0050 BX=0300 CX=0001 DX=0080 SP=FFEE BP=0000 SI=0000 DI=0000
DS=126C ES=126C SS=126C CS=126C IP=010E NV UP EI PL NZ NA PO NC
这里用了I/O中断13,涉及的寄存器含义为:
ah,操作方式,02H为读,03H为写
al,送扇区数
bx,送准备装入扇区的内存偏移地址
cx送从哪一道哪一扇区开始,我们一般依靠改换cx来读写不同逻辑盘某个逻辑扇区。
dx,送盘符和头数
int 3是断点中断,使程序运行到此停止。
2.显示引导区内容:我们把扇区读到某个内存地址并不是目的,而是为了看到它的内容,在DEBUG中D命令可以方便地查看内存单元的内容。
续前例,如果我们要看到主引导区的内容的话,既然装载到300。
-d300 l200就可以查看了,一个引导区的映像可以直观地看到我们前面所提到的代码区和数据区。
3.反汇编主引导区内容:判定MBR的代码区是否正常,对于数据区的基本情况,我们可以通过直观观察得出,但对于引导型病毒,或者引导区出现异常代码的情况,我们可能须要分析MBR中代码区的指令。这一般要对已经读入内存的引导区进行反汇编。反汇编用指令U。
续前例:
-u300 l15D ;反汇编主引导扇区代码区内容
126C:0300 33C0 XOR AX,AX
126C:0302 8ED0 MOV SS,AX
............
126C:045C 65 DB 65
126C:045D 6D DB 6D
4.写内存单元:在我们的前例中,主分区类型是0B是FAT32的,假定这个类型实际是NTFS的,我们该如何修改呢?由于主分区类型的偏移是4C3H,我们可以用E命令写到内存单元中,从附表中查得NTFS的类型为07。因此 -e4c3 7
再比如说,假定我们想把无效的分区表清零,那么,我们应当用另一个命令F,这个命令可以填充一个内存地址范围。清零分区表的操作就是 -f4be 4ff 00,以下两个操作也比较常见。
重置80标记,-e4be 80
重置55AA标记,-f4ff 4fe 55 aa
不要忘记了,此时仅仅是改动了内存中的数据,并未写到硬盘上。因此需要用int 13中断把改写的结果写回硬盘。
续前例,
-a100
126C:0100 mov ax,301 ; 写操作一个扇区
-g=100 ;执行
其实,我们相当于修改了刚才输入的读主引导扇区程序,使程序变为。
126C:0100 mov ax,301 ; 写操作一个扇区
126C:0103 mov bx,300 ;从内存地址300
126C:0106 mov cx,1 ;0面1扇
126C:0109 mov dx,80 ;80H为硬盘,头为0
126C:010C int 13
126C:010E int 3 ;断点
5.绝对磁盘内容的读出与写入:类似操作在FAT32结构硬盘被CIH破坏的修复中比较常见,我们后面将讲到恢复的基本思路就是用第二FAT表覆盖第一FAT表。那么无疑要读出第二FAT表的内容,再回写到第一FAT表的位置上。一般来说,大量连续扇区的读出写入 DiskEdit进行非常方便,如果用Debug做则要写一段子程序,不过程序的主要技巧就是利用int 25绝对磁盘读中断读出的内容,而用int 26绝对磁盘写写入内容。
数据可恢复的前提
数据恢复,作为一个数据再现的过程,一定要解决两个问题,第一是从哪里恢复,第二是怎么恢复。解决了这两个问题,我们事实上就把握了数据恢复的。这一部分就是探讨从哪里恢复的问题。
1. 有效而及时的备份是数据恢复最可靠的来源:在许多人倡导备份到秒的今天,恐怕不会有人怀疑这点。而有些备份机制则是系统内建的,比如两份FAT表。
2. 数据的实际有效性的判定是关键:对我们来说,硬盘无法自举、文件找不到、文件打不开等现象,其实并不ce 与数据丢失划等号。因为此时d ovt rnd 往往只是逻辑丢失,在物理意义上,它仍然存在或部分存在。最明显的就是文件删除的例子,事实上,这只是把文件首字节改为0E5而已,文件体依然存在。
3. 数据损坏过程的可逆性分析:对数据的改变无非两种:取代和变换,前者是不可逆的,后者则是可逆的。我们以杀毒为例,对于大多文件性病毒来说,那些以附加而非代换方式感染的文件型病毒,理想的杀毒过程就是感染的逆过程。这种分析也适用于重要信息被隐藏搬移或者被加密的情况,但分析将比较复杂。
4. 数据本身是否是标准信息:有些信息实际是通用或局部通用的,你无须考虑如何从本机抢救。只要有相同或相近的系统版本就可以了,比如BOOT区、隐含扇区、Windows的DLL文件等等。典型的例子如分区表的代码区,这是一段标准代码,事实上,它就放在你的FDISK程序里面,你可以用DEBUG把他提取出来。
5. 数据本身是否可以由其它信息统计再生:有些信息尽管丢失了,也没有备份。但它实际可以从其他数据中间接求得。最典型的就是主分区表中的分区信息,即使你把它清零也不必害怕,因为你可以从你几个分区中计算再生。
6. 破坏的完成程度:事实上,FDISK、FORMAT都不会彻底破坏数据,一般只有低格和扇区覆盖操作才会彻底破坏数据。但有时,破坏过程或者误操作过程会因人工终止、死机等原因不能完成。最明显的就是CIH病毒的例子,由于CIH是以1024字节为单位覆盖扇区,这当然是不可逆过程,于是我们最初都认为,破坏是很难恢复的,除非人工终止。事实上,当病毒覆盖某些扇区时会与WIN9X系统发生冲突,从而造成死机,使数据得到了保护。
文章评论:
[
查看全部 ] 网友评论
相关文章
本类热门阅览
推荐文章
- 该分类还没有添加任何内容!


