crazylinux 发表于 2011-10-10 11:57:22

掀起硬盘主引导扇区的神秘面纱(对自己编写操作系统很有好处)

硬盘主引导扇区是一个敏感的区域, 它的安全与否直接决定硬盘是否能够正常使用。 深入认识和灵活使用硬盘主引导扇区将有助于你的系统维护和许多特殊工作完成。

一、与DOS 引导扇区的区别

  对于DOS系统来说, 有两种不同的引导扇区,即DOS 引导扇区和硬盘主引导扇区。 DOS 引导扇区存在于软盘的第一逻辑扇区或硬盘DOS分区的第一逻辑扇区,是用FORMAT命令对磁盘格式化时产生的, 是引导DOS 系统或正确使用磁盘的必要条件,在DOS下可用DEBUG方便地读出:

C>DEBUG

-L 100 2 0 1

;读C盘0扇区到内存当前段的100H处

-D ;显示DOS 引导扇区内容

  硬盘主引导扇区则指的是硬盘的物理地址0 面0 道1 扇区,是用FDISK 进行硬盘分区时产生的, 它属于整个硬盘而不属于某个独立的DOS 分区, 是硬盘正确引导和使用的必要条件。由于它不在DOS分区范围之内,所以无法用上述方法读出, 只有用相关的汇编程序代码读出:

C>DEBUG

-A

XXXX:0100 MOV AX,0201H ;指定扇区数

XXXX:0103 MOV BX,0800H ;指定内存地址

XXXX:0106 MOV CX,0001H ;指定磁道和扇区号

XXXX:0109 MOV DX,0080H ;指定磁头和驱动器号

XXXX:010C INT 13H ;读磁盘操作

XXXX:010E INT 3-d800 ;显示读出内容

二、扇区结构

  硬盘主引导扇区占据一个扇区,共512(200H)个字节,具体结构如下:

1.硬盘主引导程序,位于该扇区的0-1BDH处;

2.硬盘分区表,位于1BEH-1FDH处,每个分区表占用16个字节,共4个分区表,16个字节各字节意义如下:

0:自举标志,80H为可引导分区,00为不可引导分区;

1~3:本分区在硬盘上的开始物理地址;

4:分区类型,其中1表示为12位FAT表的基本DOS分区;4为16位FAT表的基本DOS分区;5为扩展DOS 分区;6为大于32M的DOS分区;其它为非DOS分区。

5~7:本分区的结束地址;

8~11:该分区之前的扇区数,即此分区第一扇区的绝对扇区号;

12~15:该分区占用的总扇区数。

3.引导扇区的有效标志,位于1FEH-1FFH处,固定值为AA55H。

三、硬盘主引导扇区的作用

硬盘主引导扇区在各个DOS版本下其内容基本一致,主要完成的任务是:

1.存放硬盘分区表,这是硬盘正确读写的关键数据。

2.检查硬盘分区的正确性,要求只能且必须存在一个活动分区。

3.确定活动分区号,并读出相应操作系统的引导记录。

4.检查操作系统引导记录的正确性, DOS引导扇区末尾也存在着一个AA55H标志,供引导程序识别。

5.释放引导权给相应的操作系统。例如,当确认DOS 操作系统引导记录存在时, 则调出DOS引导程序并执行。

另外,当它发现引导故障时将给出部分提示信息,如:

?Invalid partition table?表示硬盘分区表错误, 没有或存在两个以上活动分区;

?Error loading operating system?表示读DOS引导记录时出错;

?Missing operating system?表示 DOS引导记录无有效标志AA55H。

四、硬盘主引导扇区的应用

  正是硬盘主引导扇区直接决定硬盘的安全性, 所以利用它可以完成很多特殊的功能操作, 简单列举如下:

1.清除硬盘引导功能。

  由于硬盘引导必须使用引导程序, 并检测活动分区的正确性, 所以人为的修改或破坏引导程序部分, 或者清除活动分区引导标志, 都将使硬盘无法启动。

2.加密整个硬盘。

  硬盘主引导扇区末尾的扇区有效标志AA55H是系统承认硬盘的前提,所以可以采取清除名修改此标志位达到加密硬盘的目的, 即使从A 驱引导系统也无法对硬盘进行操作, 恢复AA55H即可解密硬盘。

3.加密单个硬盘分区。

  硬盘单个分区的加密可采取修改分区类型的方法,比如把扩展DOS 分区的类型标志 05H改为FFH,则DOS 认为此分区为非DOS分区,无法对其进行访问, 包括此分区中的所有逻辑盘。当然修改或清除某一分区表的所有数据同样具有加密单个分区的作用, 但操作繁琐并且具有危险性。

4.加入硬盘启动口令识别。

  通过修改硬盘的主引导程序, 在引导DOS 操作系统之前,加入一段口令识别程序段,如口令正确则正常引导系统,否则拒绝引导,达到口令识别的目的。

5.先于DOS 驻留内存程序。

  在主引导程序中安装某些中断服务程序,如时钟中断等,通过对INT 21H或其它DOS关键数据的监视,完成病毒的实时检测功能,因为此方法在引导DOS系统之前完成,所以其监视效果非常可靠。

6.实现同一硬盘多个操作系统的选择启动。

  硬盘可以分成4个独立的分区,装入4个不同的操作系统,通过特殊的方法可以共享多个DOS版本,但各操作系统或各DOS版本间的切换是一件非常麻烦的事,通过修改硬盘主引导程序加入按键识别过程,可实现四个分区的自由选择引导。

7.实现硬盘主引导扇区或DOS引导扇区的自我修复。

  如果在硬盘其它空闲扇区保留一份完好的主引导扇区内容,而在主引导程序中每次启动前进行主引导扇区的正确性检查工作,当发现异常时,即调入原来完好的主引导扇区内容,就可以及时发现和清除病毒,对于系统有很好的保护作用。          

hkcx3000 发表于 2011-10-10 16:50:07

不错,学习了{:1_1:}

pingguo 发表于 2011-10-10 17:37:39

呵呵,其实只要对64个字节,和55AA 东东手脚。。呵呵

迷途 发表于 2011-10-10 17:52:45

这个倒是好东东,必须熟悉一下

无怨无悔 发表于 2012-6-29 18:56:20

这个是好东东,必须熟悉一下

XBOY 发表于 2012-7-5 21:09:32

好文章,学习了!

cclang219 发表于 2012-10-31 16:02:08

好文章啊,赞一个!

恒信电脑 发表于 2013-4-21 11:22:39

见贴就回 为什么不回帖呢

cqk2980 发表于 2013-5-17 12:20:06

无回帖,不论坛,这才是人道。

q312102408 发表于 2015-2-7 11:36:15

很好,很漂亮

text6789 发表于 2015-3-7 14:32:12

看来是手打稍微总结的,不是复制的,mark

vanentu 发表于 2015-5-27 05:21:12

就是来顶 支持

EntU 发表于 2015-5-28 00:46:02

支持楼主!德玛西亚!

axcd178 发表于 2015-5-28 06:04:30

好文章,学习学习!

gt3223 发表于 2015-11-14 20:51:11

支持了:titter:

gt3223 发表于 2015-11-14 21:11:52

:smile支持下

BULEMOUTIANSS 发表于 2015-11-21 11:56:42

这个好像很难啊

gt3223 发表于 2015-12-1 10:34:03

:loveliness:支持不错的

昂句句 发表于 2015-12-1 21:25:47

以前学过,都快忘光了,谢谢拉,复习一下:smile
页: [1]
查看完整版本: 掀起硬盘主引导扇区的神秘面纱(对自己编写操作系统很有好处)