清晰磁盘结构

一块新磁盘,需要将它分区、格式化,然后再安装上操作系统才可以使用。格式化是指系统为了达到随机存取磁盘数据的目的,需要在盘的磁道上规划出磁道 和扇区,每个扇区以引导标记和扇区标记作为扇区的起始,然后才是扇区的内容,后面还有校验标记。格式化后,磁盘被分为面、磁道、扇区和簇。一个面对应一个 磁头,每个面由若干个磁道组成,每个磁道又被分成若干个扇区。物理相邻的若干个扇区组成一个簇。操作系统读写磁盘的基本单位是扇区,而文件分配的基本单位 是簇。如图2-1所示的是磁盘结构。

安装操作系统后,磁盘被分为保留扇区部分和逻辑分区。对软盘而言,保留扇区部分只有引导扇区;对硬盘而言,除了引导扇区,该磁道的其他扇区是未被利用的。在逻辑分区,以FAT32磁盘格式为例,有该分区的引导扇区,文件分配表FAT和文件数据区。

磁盘的第一个逻辑扇区被称之为主引导扇区(Master Boot Record,MBR),逻辑分区的第一个逻辑扇区被称为引导扇区。引导扇区代码和数据可以使用程序fdisk.exe进行创建。

图2-1  磁盘数据结构

引 导扇区内有引导程序,还有磁盘结构数据。以1.44M软盘为例,软盘由两面组成,分别称为0面和1面。磁道是从外到里的同心圆,每面由80个磁道组成。而 每个磁道由18个扇区组成,扇区是物理结构的最小单元。每个扇区占512个字节。如图2-2所示是用debug命令-L4000:0 0 0 1读取的1.44M软盘引导扇区数据。该命令表示将第一个驱动器(A:)的第一个逻辑扇区读到内存4000:0的位置,各个参数的使用请参考汇编语言教材 的Debug命令的使用。

图2-2  软盘引导扇区

主 引导扇区除了引导代码,还有各逻辑扇区的结构数据块,即分区表。分区表数据从引导扇区偏移0x1be开始,共64个字节。分区表最多只能描述4个分区,每 个分区16字节。引导代码的作用就是分析分区表中的4个分区引导标志,当某一分区的引导标志为80H时,主引导程序就把这一分区的第一个扇区(逻辑0扇 区)读到内存0000:7C00H处,并从该处开始执行。如图2-3所示为一个硬盘MBR中的分区表。例如,分区表中D:的数据结构如下:

图2-3  MBR的分区表

偏移0自举标志0(0x80为活动分区)
偏移1起始磁头号1
偏移2起始扇区号0x41
偏移3起始磁道号0x4b
偏移4为分区格式:FAT32
偏移5终止磁头号0xef
偏移6终止扇区号0xff
偏移7终止磁道号0xa4
偏移8--11本分区前已用扇区0x3F
偏移12--15本分区总扇区数0x1772361
最后两个字节/x55/xAA是引导扇区的标志。在硬盘的第一个磁道,除了MBR扇区,其他扇区是没有被使用的。C:的引导扇区一般在第二个磁道的第一个扇区。如图2-4所示描述了图2-3的分区结构。

图2-4  扇区分布

每个逻辑分区的FAT表用来描述磁盘中各簇的使用情况。对1.44M的软盘,每项FAT为16位(二进制),对多数硬盘,一般为32位(二进制),即FAT32。以FAT32为例,每项值的含义如表2-1所示。
表2-1  FAT32表项意义

序     号

表   项   值

簇描述信息含义

   1

0x00000000

未使用的簇

   2

0x00000002 ~ 0xffffffff

一个已分配的簇号

   3

0xfffffff0 ~ 0xfffffff6

保留的簇

   4

0xfffffff7

坏簇

   5

0xfffffff8 ~ 0xffffffff

文件结束簇

我们可以想象一下,病毒既然把原来的引导程序位置占了,引导扇区只能放512字节,而原来的引导程序又是必需的。那么原来的引导扇区放在哪里并且又不被覆盖呢?

一个可能的位置是MBR扇区所在磁道上的其他未使用的扇区。另一个可能的位置是分区引导扇区所在磁道的其他扇区。还有一个可能位置是磁盘的数据区,病毒只要将所占用的簇对应的FAT表项标记为坏扇区或已经使用的扇区,操作系统存放文件时就不会覆盖它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值