微型机与应用
MICROCOMPUTER & ITS APPLICATIONS
2000 Vol.19 No.2 P.20-21




手工恢复被CIH病毒破坏的硬盘
齐玉斌
摘 要： 硬盘基本分区和逻辑分区的控制机制，介绍了被CIH病毒破坏硬盘的主分区表和逻辑分区表的手工恢复办法。
关键词： CIH病毒 基本分区 逻辑分区s
　　CIH病毒发作后对微机的破坏主要有2种方式：一是修改某些主板的BIOS内容，造成微机彻底瘫痪这也是CIH病毒之所以厉害的主要原因，它打破了病毒不能破坏硬件的界限；二是破坏硬盘的主引导记录、分区表，使微机不能从C驱启动即使从A驱启动也不承认C盘的存在，使硬盘数据完全丢失，给用户造成很大损失。硬盘主引导记录、分区表是使用FDISK命令时形成的。FDISK命令执行后，在硬盘0面0道1扇区建立硬盘主引导记录和分区表PBB，分区表描述了各个分区的起止地址等信息。
1 PBB表中各项的含义
　　PBB表中共有4个表项，每个表项为16B。另外，还有PBB结束标志2B，故整个分区表为66个字。图1所示为1个PBB表的实例。

图1　个具体的硬盘分区表
　　如前所述，从03BE～03CD是第1表项，从03CE～03DD是第2表项，……。下面分别叙述分区表项中各个参数的意义（以第1个分区表项为例）。
　　（1）引导指示符（80H为可引导的活动分区，00H为非引导分区）。
　　（2）该分区的起始地址（面号、扇区号、柱面号）。
　　（3）操作系统指示符。其值：00H表示不识别的（没有指定的）；01H为12bit／FAT项的DOS系统；02H为XENIX系统；03H为XENIX系统；04H为16bit／FAT项的DOS系统；05H为扩展DOS（EXT－DOS）系统；≥06H为非DOS（NON－DOS）系统。
　　（4）分区结束地址（面号、扇区号、柱面号）。
　　（5）该分区之前的扇区总数。
　　（6）该分区占用扇区数。
　　（7）～（12）含义与（1）～（2）的含义类似。
　　（13）主引导记录结束标志。
2 硬盘上数据的组织方法
2．1 硬盘分区区域的划分方法
　　利用FDISK命令对硬盘进行分区后，各分区的区域的划分是以硬盘的盘面还是以柱面为主对其进行分区划分？笔者经过对PBB表的深入研究，发现硬盘分区是以柱面为主进行的。
　　设硬盘只有C、D2个分区，则C分区和D分区的区域如图2所示，A处各柱面为C分区，B处各柱面为D分区。可见，C区是从低序号柱面连续向高序号柱面分布，到满足其容量的柱面处结束；D区从C区结束处的下一个柱面开始，又连续向高序号柱面分布。这样对硬盘进行分区区域的划分，其优点是：即将分区划分在一段连续的柱面区域，在使用该分区时，减少了磁头的运动次数，从而使存取数据的时间进一步缩短，提高了用户操作速度。

图2　硬盘
2．2 硬盘上数据的组织顺序
　　为了有效地对硬盘上的数据进行组织、管理，操作系统在设计时将硬盘上的信息进行了分类，一部分是控制信息，另一部分是数据信息。控制信息包括硬盘主引导记录（MBR）、硬盘分区表（PBB）、DOS引导记录（DBR）、文件分配表（FAT）、文件目录表（FDT）等。数据信息则是具体的程序、数据。控制信息和数据信息在硬盘上的组织顺序如下：
　　MBR（0面0柱1扇区）→DBR（1面0柱1扇区）→FAT（1面0柱2扇区）→FDT（1面0柱33扇区）→硬盘数据区
2．3 DOS逻辑分区的管理
　　DOS操作系统允许为硬盘设置多个分区，除了分区C外，其它的分区（如分区D、E等）通称为逻辑分区。操作系统是通过1个分区表链（PBB链）来完成对各逻辑分区管理的，这个PBB链的头结点是MBR中的PBB。
　　在MBR里的PBB表中，除了可以对基本分区C进行定义外，还可以有1个表项对DOS的扩展分区进行说明，而这个扩展分区表项则是PBB链的头结点。操作系统在使用硬盘的逻辑分区时，将从PBB的头结点获取下一个逻辑分区表的地址，如此下去，操作系统就获得了各逻辑分区的起止地址，可以对逻辑分区中的数据进行存取管理。图3为PBB链柱面0、磁头0、扇区1：MBR。

图3　1个PBB链的示例
3 PBB表中各项的规则与计算
　　笔者经过多次实验、分析，对PBB表中各项的规则与计算方法进行探讨，得出了如下结论：　　　1．在主PBB表的4个分区表项中，有且只有1个为可引导分区；
　　2．基本DOS分区起始的面、柱、扇区号应是1、0、1；
　　3．PBB表必须以55AAH结束。
　　PBB表中各项的计算方法如下（参照图1）：
　　1．（5）处为分区C之前的扇区数，该数与CMOS中每磁道扇区数相一致。这是因为0面0柱所有扇区都给了MBR；
　　2．（6）处为分区C总共使用的扇区数，该数值可以从（2）、（4）计算得到，即
［（180－0＋1）*10－1］*34＝61506S
　　这个数据还可以由另一种途径获得：用CHKDSK命令对C盘进行检查，可知C盘数据区总容量为31412224B，该数值除以512B／S，得51352S，再加上控制信息（1S的DBR、121S的FAT、32S的FDT），即
61325＋1＋121＋32＝61506S 
　　DBR、FAT、FDT所占用的扇区数，可由工具软件NU获得。
　　3．（8）处是逻辑分区的首地址，其中的柱面号是4中柱面号的继续，如4中是B4，则该处为B5。
　　4．（11）处表示D分区之前的总扇区数，是（5）、（6）二部分的和。
　　5．（12）处是D分区占用的总扇区数。如2．说明，也可以有2种方法计算出来。
4 实践与应用
　　在对硬盘分区及硬盘数据组织情况有了深入的了解后，就可以用手工方法恢复被CIH病毒破坏的引导记录和分区表了。下面结合1个实例阐述手工恢复控制信息的方法。
　　例：1台微机CIH病毒发作后不认硬盘，从A驱启动后，不能将当前盘转变为C盘，提示：Invalid drive specification．
　　处理：从A驱启动微机，然后运行NU软件，发现C仍为不可见，只好使用DEBUG命令。从A驱启动DEBUG
　－A
　　　　MOV AX，0201
　　　　MOV BX，0200
　　　　MOV CX，0001
　　　　MOV DX，0080
　　　　INT 13
　　　　INT 20
　　－G
　　－D200；观察分区表，发现已完全受损，按照上面介绍的原则，先对C区分区表进行修复，修复后的分区表如下： 

　　重新启动微机，此时已可以从C盘引导，但D盘仍不可见。再按如下方法恢复D盘上的数据：运行CHKDSK，检查C盘数据区空间为31412224B，即61352S，运行NU，观察C盘上DBR、FAT、FDT所占扇区个数，分别为1S、18S、14S，这说明C区共占用了61506个扇区，61506／34／10＝181，即C区共占用了181个磁道，也就是从1面0柱开始，到9面181柱结束。按此数值，利用NU修改分区表为：

　　重新启动微机，则C、D分区均已可见，其上数据完整恢复。对于D区的分区表项，也可用上述方法进行精确设置。
　　对其它逻辑分区如E、F等也可按此方法进行恢复。
齐玉斌（秦皇岛河北职业技术师范学院教务处066600）
收稿日期：1999－09－01
