龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > 汇编开发 >

MBR和DBR详细分析

时间:2011-05-21 16:24来源:未知 作者:admin 点击:
分享到:
之所以贴出来,是有些地方不明白,希望能于大家交流分析 我系统2K PRO SP4,C盘采用NTFS,用WinHex提取MBR和DBR,拿IDA分析的.关键在DBR几处不明白. 1.一点预备知识: 主引导扇区代码(MBR) 代码:

之所以贴出来,是有些地方不明白,希望能于大家交流分析

我系统2K PRO SP4,C盘采用NTFS,用WinHex提取MBR和DBR,拿IDA分析的.关键在DBR几处不明白.

1.一点预备知识:

主引导扇区代码(MBR)

代码:

====================================================================================

MBR( Master Boot Record )主引导记录包含两部分的内容,前446字节为启动代码及数据,而

从446(0x1BE)开始则是分区表,分区表由四个分区项组成,每个分区项数据为16字节,记录了

启动时需要的分区参数。

在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主引导记录(位于0柱面、0磁道、1扇区)读

入7C00处,然后将控制权交给主引导代码。主引导代码的任务包括:

(1) 扫描分区表,找到一个激活(可引导)分区

(2) 找到激活分区的起始扇区

(3) 将激活分区的引导扇区装载到内存7C00处

(4) 将控制权交给引导扇区代码

如果主引导代码无法完成上述任务,它将显示以下错误信息之一:

No active partition.

Invalid partition table.

Error loading operating system.

Missing operating system.

====================================================================================

FAT16分区尺寸与LBA

====================================================================================

LBA HeadsPerCylinder SectorsPerTrack Maximum Size for Boot Partition

Disabled 64 32 1GB

Enabled 255 63 4GB

为了适应超过8G的硬盘,Windows2000忽略了Start CHS和End CHS,而使用StartLBA和TotalSector

来确定分区在整个磁盘中的位置和大小。

====================================================================================

分区表项结构(16字节)

====================================================================================

typedef struct _PARTITION_ENTRY

{

UCHAR BootIndicator // 能否启动标志

UCHAR StartHead // 该分区起始磁头号

UCHAR StartSector // 起始柱面号高2位:6位起始扇区号

UCHAR StartCylinder // 起始柱面号低8位

UCHAR PartitionType // 分区类型

UCHAR EndHead // 该分区终止磁头号

UCHAR EndSector // 终止柱面号高2位:6位终止扇区号

UCHAR EndCylinder // 终止柱面号低8位

ULONG StartLBA // 起始扇区号

ULONG TotalSector // 分区尺寸(总扇区数)

}PARTITION_ENTRY,*PPARTITION_ENTRY

====================================================================================

主引导记录(MBR)结构

====================================================================================

typedef struct _MASTER_BOOT_RECORD

{

UCHAR BootCode[446]

PARTITION_ENTRY Partition[4]

USHORT Signature

}MASTER_BOOT_RECORD,*PMASTER_BOOT_RECORD

====================================================================================

2.MBR详细分析

代码:

code:7C00 code segment byte public 'CODE' use16

code:7C00 assume cs:code

code:7C00 &


精彩图集

赞助商链接