2024年3月14日发(作者:求紫安)
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
MBR和DBR详细分析
系统2KPROSP4,C盘采用NTFS,用WinHex提取MBR和DBR,拿IDA分析的.
关键在DBR几处不明白. 1.一点预备知识: 主引导扇区代码
(MBR) ;=======================================================
=============================;;MBR(MasterBootRecord)主引导记录包含两部
分的内容,前446字节为启动代码及数据,而;从446(0x1BE)开始则是分区表,分区
表由四个分区项组成,每个分区项数据为16字节,记录了;启动时需要的分区参
数。;在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主引导记录(位于0柱
面、0磁道、1扇区)读;入7C00处,然后将控制权交给主引导代码。主引导代码的
任务包括:;(1)扫描分区表,找到一个激活(可引导)分区;;(2)找到激活分区的起始
扇区;;(3)将激活分区的引导扇区装载到内存7C00处;;(4)将控制权交给引导扇区
代码;;;如果主引导代码无法完成上述任务,它将显示以下错误信息之
一:;Noactivepartition.;Invalidpartitiontable.;Errorloadingoperatingsystem.;Missingoperat
ingsystem.;========================================================
============================;FAT16分区尺寸与
LBA;============================================================
========================;LBAHeadsPerCylinderSectorsPerTrackMaximumSizefo
rBootPartition;Disabled64321GB;Enabled255634GB;为了适应超过8G的硬盘,
Windows2000忽略了StartCHS和EndCHS,而使用StartLBA和TotalSector;来确定
分区在整个磁盘中的位置和大
小。;;============================================================
========================;分区表项结构(16字
节);=============================================================
=======================;typedefstruct_PARTITION_ENTRY;{;UCHARBootIndi
cator;//能否启动标志;UCHARStartHead;//该分区起始磁头号;UCHARStartSector;//起始
柱面号高2位:6位起始扇区号;UCHARStartCylinder;//起始柱面号低8
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
位;UCHARPartitionType;//分区类型;UCHAREndHead;//该分区终止磁头
号;UCHAREndSector;//终止柱面号高2位:6位终止扇区号;UCHAREndCylinder;//终
止柱面号低8位;ULONGStartLBA;//起始扇区号;ULONGTotalSector;//分区尺寸(总
扇区
数);}PARTITION_ENTRY,*PPARTITION_ENTRY;;========================
============================================================;主引
导记录(MBR)结
构;==============================================================
======================;typedefstruct_MASTER_BOOT_RECORD;{;UCHARBoo
tCode[446];;PARTITION_ENTRYPartition[4];;USHORTSignature;;}MASTER_BOOT_
RECORD,*PMASTER_BOOT_RECORD;;=================================
===================================================
析
code:7C00codesegmentbytepublic’CODE’use16code:7C00assumecs:codecode:7C00org7
C00hcode:7C00assumees:nothing,ss:nothing,ds:code,fs:nothing,gs:nothingcode:7C00start
procfarcode:7C00xorax,axcode:7C02movss,axcode:7C04movsp,7C00hcode:7C07sticode:
7C08pushaxcode:7C09popescode:7C0Apushax;es=ds=ss=0x0000code:7C0Bpopds;initials
egmentandstackcode:7C0Ccldcode:7C0Dpushaxcode:7C0Emovsi,7C00hcode:7C11movdi,
600hcode:7C14movcx,200hcode:7C17repmovsb;movethisMBRcodeto600hcode:7C19mov
di,61Ehcode:7C1Cpushdicode:7C1Dretf;jmp0000:61Ehcode:7C1Exorbx,bx;ip=61Ehcode:
7C20xordx,dxcode:7C22movsi,7BEh;partitionstatecode:7C25movcl,4;SearchDPT,anditha
s4itemes,code:7C27check_next_partition:code:7C27testbyteptr[si],80h;0x80- Active0x00-
notactivecode:7C2Ajzshortsearch_active_partition;nextitem,sizeofoneitemis10hcode:7C2
Acode:7C2Cmovdx,si;saveitembaseaddresscode:7C2Eincbx;thesumoftheactiveitemcode:7
C2Fsearch_active_partition:code:7C2Faddsi,10h;nextitem,sizeofoneitemis10hcode:7C32lo
opcheck_next_partition;0x80- Active0x00-
详细分
2024年3月14日发(作者:求紫安)
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
MBR和DBR详细分析
系统2KPROSP4,C盘采用NTFS,用WinHex提取MBR和DBR,拿IDA分析的.
关键在DBR几处不明白. 1.一点预备知识: 主引导扇区代码
(MBR) ;=======================================================
=============================;;MBR(MasterBootRecord)主引导记录包含两部
分的内容,前446字节为启动代码及数据,而;从446(0x1BE)开始则是分区表,分区
表由四个分区项组成,每个分区项数据为16字节,记录了;启动时需要的分区参
数。;在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主引导记录(位于0柱
面、0磁道、1扇区)读;入7C00处,然后将控制权交给主引导代码。主引导代码的
任务包括:;(1)扫描分区表,找到一个激活(可引导)分区;;(2)找到激活分区的起始
扇区;;(3)将激活分区的引导扇区装载到内存7C00处;;(4)将控制权交给引导扇区
代码;;;如果主引导代码无法完成上述任务,它将显示以下错误信息之
一:;Noactivepartition.;Invalidpartitiontable.;Errorloadingoperatingsystem.;Missingoperat
ingsystem.;========================================================
============================;FAT16分区尺寸与
LBA;============================================================
========================;LBAHeadsPerCylinderSectorsPerTrackMaximumSizefo
rBootPartition;Disabled64321GB;Enabled255634GB;为了适应超过8G的硬盘,
Windows2000忽略了StartCHS和EndCHS,而使用StartLBA和TotalSector;来确定
分区在整个磁盘中的位置和大
小。;;============================================================
========================;分区表项结构(16字
节);=============================================================
=======================;typedefstruct_PARTITION_ENTRY;{;UCHARBootIndi
cator;//能否启动标志;UCHARStartHead;//该分区起始磁头号;UCHARStartSector;//起始
柱面号高2位:6位起始扇区号;UCHARStartCylinder;//起始柱面号低8
本文由我司收集整编,推荐下载,如有疑问,请与我司联系
位;UCHARPartitionType;//分区类型;UCHAREndHead;//该分区终止磁头
号;UCHAREndSector;//终止柱面号高2位:6位终止扇区号;UCHAREndCylinder;//终
止柱面号低8位;ULONGStartLBA;//起始扇区号;ULONGTotalSector;//分区尺寸(总
扇区
数);}PARTITION_ENTRY,*PPARTITION_ENTRY;;========================
============================================================;主引
导记录(MBR)结
构;==============================================================
======================;typedefstruct_MASTER_BOOT_RECORD;{;UCHARBoo
tCode[446];;PARTITION_ENTRYPartition[4];;USHORTSignature;;}MASTER_BOOT_
RECORD,*PMASTER_BOOT_RECORD;;=================================
===================================================
析
code:7C00codesegmentbytepublic’CODE’use16code:7C00assumecs:codecode:7C00org7
C00hcode:7C00assumees:nothing,ss:nothing,ds:code,fs:nothing,gs:nothingcode:7C00start
procfarcode:7C00xorax,axcode:7C02movss,axcode:7C04movsp,7C00hcode:7C07sticode:
7C08pushaxcode:7C09popescode:7C0Apushax;es=ds=ss=0x0000code:7C0Bpopds;initials
egmentandstackcode:7C0Ccldcode:7C0Dpushaxcode:7C0Emovsi,7C00hcode:7C11movdi,
600hcode:7C14movcx,200hcode:7C17repmovsb;movethisMBRcodeto600hcode:7C19mov
di,61Ehcode:7C1Cpushdicode:7C1Dretf;jmp0000:61Ehcode:7C1Exorbx,bx;ip=61Ehcode:
7C20xordx,dxcode:7C22movsi,7BEh;partitionstatecode:7C25movcl,4;SearchDPT,anditha
s4itemes,code:7C27check_next_partition:code:7C27testbyteptr[si],80h;0x80- Active0x00-
notactivecode:7C2Ajzshortsearch_active_partition;nextitem,sizeofoneitemis10hcode:7C2
Acode:7C2Cmovdx,si;saveitembaseaddresscode:7C2Eincbx;thesumoftheactiveitemcode:7
C2Fsearch_active_partition:code:7C2Faddsi,10h;nextitem,sizeofoneitemis10hcode:7C32lo
opcheck_next_partition;0x80- Active0x00-
详细分