从鬼影病毒开始,最近利用MBR手法的病毒逐渐普及,而想分析此类病毒,难免需要用到MBR和磁盘引导等基础知识。因此利用休息时间整理了一点东西,希望对想研究或了解该手法的同学有些帮助。文章本身没任何技术含量,只是一点体力活,希望懂的大牛小牛们不要见笑,直接飘过吧。
先简单介绍一下硬盘上相关结构:
1、MBR(主引导记录)
硬盘第一个物理扇区为MBR,当我们选择从硬盘启动时,由 bois从该扇区读入引导代码。MBR关键数据可分为3部分:
(1)  引导代码
(2)  分区表
(3)  结束标志(55AA)

分区表用以管理整个磁盘空间的划分。它从MBR的0x1BE偏移开始,有4个表项,每项16个字节,因此最多只能可以建立4个主分区。(微软为了克服这个数量限制,设计了扩展分区的方式,所谓扩展分区就是分区表中指向的一个普通分区而已,只是在它自己分区内部又有特殊的结构,使得我们可以分出多个逻辑分区,我们平时看到的d、e、f等驱动器实际上都是扩展分区内部划分的逻辑分区,你可以用winhex查看你的分区表,会发现里面只有两项,一项代表C盘分区,另外一项就是代表其他所有驱动器之和的扩展分区了,当然如果自己分了其他主分区的情况除外)
分区表项结构列出如下,以便查阅:

2、DBR
每个主分区的第一个扇区存放着另一个引导扇区DBR,“分区引导扇区”或叫“DOS引导扇区”。该扇区的目的就是读入ntldr,以进行进一步分引导。该扇区也是以”55AA”标志结束。

3、扩展分区
详细讲一下扩展分区的结构,我们平时能分多个逻辑磁盘出来都是它的功劳。
前面说了扩展分区内部有着自己特殊的结构以实现多分区,它和普通的主分区一个明显的差别就是它的第一个扇区存放的就不是DBR了,而是一个叫虚拟MBR的扇区。叫虚拟MBR是因为他和MBR结构很像。结构也为3部分:
(1)  全0
(2)  分区表
(3)  55AA
它没有引导代码,以全0代替。分区表偏移也在0x1BE处,为4项。只是它只会用前两项。后面两项全0。第一项指向一个逻辑驱动器(逻辑分区)比如d盘。第二项指向下一个虚拟MBR(如果还有逻辑分区的话)。如此就形成了一个链,突破了分区个数限制。扩展分区本身没有DBR,它的DBR在它的每个孩子即逻辑分区的第一个扇区。你可以把扩展分区想象成一个独立的硬盘,只是分区的组织方式变成链表了,这样可能好理解点。忘了一点,记得曾经有过硬盘逻辑锁的概念,其原理就是把逻辑分区的链表修改成了一个环,这样在系统遍历这个链表时就死循环了。

以上文字描述的比较乱,下面给大家整理成一个结构图,以方便理解。图中以硬盘分了2个主分区+一个扩展分区画的。


Extend Partition内部结构单独列出来如下:


windows系统从MBR开始的引导过程简单描述为:MBR->活动分区DBR->Ntldr->boot.ini启动菜单->加载系统。
磁盘结构先整理到这,希望对大家有些帮助,其中若发现错误,请批评指正:)。