MBR全面分析
[08-08 01:51:03] 来源:http://www.xuehuiba.com 数据恢复 阅读:8988次
概要:0629E2F5LOOPPARTITION_SEARCH_LOOP062BCD18INT18;分区表搜索完,无活动分区,INT18h=DISKLESSBOOTHOOKACTIVE_PARTITON_FOUND:062D8B14MOVDX,[SI];下面的搜索保证只存在一个活动分区,否则分区表无效 www.xuehuiba.com 062F8BEEMOVBP,SI;找到的引导分区标志和开始地址分别存入DX,BPONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP:063183C610ADDSI, 10063449DECCX06357416JZGOOD_PARTITION_TABLE;搜索完毕,剩下的分区中无活动分区,分区表正常0637382CCMP[SI],CH063974F6JZONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP;如果还有活动分区则继续向下执行INVALID_PARTITION_TABLE:063BBE1007MOVSI,0710;SI指向要显示的
MBR全面分析,标签:硬盘数据恢复,数据恢复软件,http://www.xuehuiba.com
0629E2F5LOOPPARTITION_SEARCH_LOOP
062BCD18INT18;分区表搜索完,无活动分区,INT18h=DISKLESSBOOTHOOK
ACTIVE_PARTITON_FOUND:
062D8B14MOVDX,[SI];下面的搜索保证只存在一个活动分区,否则分区表无效 www.xuehuiba.com
062F8BEEMOVBP,SI;找到的引导分区标志和开始地址分别存入DX,BP
ONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP:
063183C610ADDSI, 10
063449DECCX
06357416JZGOOD_PARTITION_TABLE;搜索完毕,剩下的分区中无活动分区,分区表正常
0637382CCMP[SI],CH
063974F6JZONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP;如果还有活动分区则继续向下执行
INVALID_PARTITION_TABLE:
063BBE1007MOVSI,0710;SI指向要显示的错误信息处
HANG_MACHINE_LOOP:
063E4EDECSI
DISPLAY_ERROR_MESSAGE_LOOP:
063FACLODSB
06403C00CMPAL,00
064274FAJZHANG_MACHINE_LOOP
;到字符串尾时进入死循环,停止运行
0644BB0700MOVBX,0007
0647B40EMOVAH,0E
0649CD10INT10;显示错误信息
DISPLAY_ERROR_MESSAGE_LOOP_ALIAS:
064BEBF2JMPDISPLAY_ERROR_MESSAGE_LOOP
GOOD_PARTITION_TABLE:
064D894625MOV[BP 25],AX
;tmpvar=BP 25处清零,作为临时变量
065096XCHGSI,AX;SI=0
06518A4604MOVAL,[BP 04]
;读分区类型入AL
0654B406MOVAH,06
06563C0ECMPAL,0E;类型WIN95:DOS16-bitFAT,LBA-mapped
06587411JZTYPE_WIN95_DOS_16BIT_FAT_LBA
065AB40BMOVAH,0B
065C3C0CCMPAL,0C;类型WIN95OSR232-bitFAT,LBA-mapped
065E7405JZTYPE_WIN95_OSR2_32BIT_FAT_LBA
06603AC4CMPAL,AH;类型WIN95OSR232-bitFAT
0662752BJNZTYPE_DEFAULT
066440INCAX;AX=0B0C
TYPE_WIN95_OSR2_32BIT_FAT_LBA:
0665C6462506MOVBYTEPTR[BP 25],06
;tmpvar=06
06697524JNZTYPE_DEFAULT
;这里有点问题,这个转移应该肯定不成立?
TYPE_WIN95_DOS_16BIT_FAT_LBA:
066BBBAA55MOVBX,55AA
066E50PUSHAX
066FB441MOVAH,41
0671CD13INT13;int13h扩展功能的检测,IBM/MSINT13Extensions-INSTALLATIONCHECK
067358POPAX
06747216JBINT13H_EXTENSION_UNSUPPORTED
;CF=1-不支持int13h扩展功能
067681FB55AACMPBX,AA55;BX不为AA55-不支持int13h扩展功能
067A7510JNZINT13H_EXTENSION_UNSUPPORTED
067CF6C101TESTCL,01;CL不为1-不支持int13h扩展功能
067F740BJZINT13H_EXTENSION_UNSUPPORTED
06818AE0MOVAH,AL;AH=0E
0683885624MOV[BP 24],DL
;tmpvar=DL,引导分区标志
0686C706A106EB1EMOVWORDPTR[06A1],1EEB
;改06A1处指令为PUSHDS;JMPNEW_LOCATION_1
INT13H_EXTENSION_UNSUPPORTED:
068C886604MOV[BP 04],AH
;如果支持的话置分区类型为0E(类型WIN95:DOS16-bitFAT,LBA-mapped)
;否则为06(类型DOS3.31 16-bitFATover32M)
TYPE_DEFAULT:
068FBF0A00MOVDI,000A
READ_SECTOR_LOOP:
0692B80102MOVAX,0201
06958BDCMOVBX,SP;BX设置为7C00
069733C9XORCX,CX;CX=0
069983FF05CMPDI, 05
069C7F03JGNEW_LOCATION_0
069E8B4E25MOVCX,[BP 25]
NEW_LOCATION_0:
06A1034E02ADDCX,[BP 02]
06A4CD13INT13;将活动分区的起始扇区读到0000:7C00
NEW_LOCATION_1:
06A67229JBREAD_SECTOR_ERROR
;CF=1-错误
06A8BE5907MOVSI,0759
06AB813EFE7D55AACMPWORDPTR[7DFE],AA55
;扇区结束标志是否正确?
06B1745AJZREAD_SECTOR_SUCCEEDED
;正确
06B383EF05SUBDI, 05;DI=DI-5
06B67FDAJGREAD_SECTOR_LOOP
06B885F6TESTSI,SI
06BA7583JNZDISPLAY_ERROR_MESSAGE_LOOP:
;显示错误信息:缺少操作系统
06BCBE2E07MOVSI,072E
06BFEB8AJMPDISPLAY_ERROR_MESSAGE_LOOP_ALIAS
;显示错误信息:加载操作系统时发生错误。
070DEB74JMPCONTINUE_KOAD_OS
07838BFCMOVDI,SP
;DI=7C00
07851EPUSHDS
078657PUSHDI
07878BF5MOVSI,BP
0789CBRETF;转到执行0000:7C00处的语句,即操作系统的引导程序
0629E2F5LOOPPARTITION_SEARCH_LOOP
062BCD18INT18;分区表搜索完,无活动分区,INT18h=DISKLESSBOOTHOOK
ACTIVE_PARTITON_FOUND:
062D8B14MOVDX,[SI];下面的搜索保证只存在一个活动分区,否则分区表无效 www.xuehuiba.com
062F8BEEMOVBP,SI;找到的引导分区标志和开始地址分别存入DX,BP
ONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP:
063183C610ADDSI, 10
063449DECCX
06357416JZGOOD_PARTITION_TABLE;搜索完毕,剩下的分区中无活动分区,分区表正常
0637382CCMP[SI],CH
063974F6JZONLY_ONE_ACTIVE_PARTITON_SEARCH_LOOP;如果还有活动分区则继续向下执行
INVALID_PARTITION_TABLE:
063BBE1007MOVSI,0710;SI指向要显示的错误信息处
HANG_MACHINE_LOOP:
063E4EDECSI
DISPLAY_ERROR_MESSAGE_LOOP:
063FACLODSB
06403C00CMPAL,00
064274FAJZHANG_MACHINE_LOOP
;到字符串尾时进入死循环,停止运行
0644BB0700MOVBX,0007
0647B40EMOVAH,0E
0649CD10INT10;显示错误信息
DISPLAY_ERROR_MESSAGE_LOOP_ALIAS:
064BEBF2JMPDISPLAY_ERROR_MESSAGE_LOOP
GOOD_PARTITION_TABLE:
064D894625MOV[BP 25],AX
;tmpvar=BP 25处清零,作为临时变量
065096XCHGSI,AX;SI=0
06518A4604MOVAL,[BP 04]
;读分区类型入AL
0654B406MOVAH,06
06563C0ECMPAL,0E;类型WIN95:DOS16-bitFAT,LBA-mapped
06587411JZTYPE_WIN95_DOS_16BIT_FAT_LBA
065AB40BMOVAH,0B
065C3C0CCMPAL,0C;类型WIN95OSR232-bitFAT,LBA-mapped
065E7405JZTYPE_WIN95_OSR2_32BIT_FAT_LBA
06603AC4CMPAL,AH;类型WIN95OSR232-bitFAT
0662752BJNZTYPE_DEFAULT
066440INCAX;AX=0B0C
TYPE_WIN95_OSR2_32BIT_FAT_LBA:
0665C6462506MOVBYTEPTR[BP 25],06
;tmpvar=06
06697524JNZTYPE_DEFAULT
;这里有点问题,这个转移应该肯定不成立?
TYPE_WIN95_DOS_16BIT_FAT_LBA:
066BBBAA55MOVBX,55AA
066E50PUSHAX
066FB441MOVAH,41
0671CD13INT13;int13h扩展功能的检测,IBM/MSINT13Extensions-INSTALLATIONCHECK
067358POPAX
06747216JBINT13H_EXTENSION_UNSUPPORTED
;CF=1-不支持int13h扩展功能
067681FB55AACMPBX,AA55;BX不为AA55-不支持int13h扩展功能
067A7510JNZINT13H_EXTENSION_UNSUPPORTED
067CF6C101TESTCL,01;CL不为1-不支持int13h扩展功能
067F740BJZINT13H_EXTENSION_UNSUPPORTED
06818AE0MOVAH,AL;AH=0E
0683885624MOV[BP 24],DL
;tmpvar=DL,引导分区标志
0686C706A106EB1EMOVWORDPTR[06A1],1EEB
;改06A1处指令为PUSHDS;JMPNEW_LOCATION_1
INT13H_EXTENSION_UNSUPPORTED:
068C886604MOV[BP 04],AH
;如果支持的话置分区类型为0E(类型WIN95:DOS16-bitFAT,LBA-mapped)
;否则为06(类型DOS3.31 16-bitFATover32M)
TYPE_DEFAULT:
068FBF0A00MOVDI,000A
READ_SECTOR_LOOP:
0692B80102MOVAX,0201
06958BDCMOVBX,SP;BX设置为7C00
069733C9XORCX,CX;CX=0
069983FF05CMPDI, 05
069C7F03JGNEW_LOCATION_0
069E8B4E25MOVCX,[BP 25]
NEW_LOCATION_0:
06A1034E02ADDCX,[BP 02]
06A4CD13INT13;将活动分区的起始扇区读到0000:7C00
NEW_LOCATION_1:
06A67229JBREAD_SECTOR_ERROR
;CF=1-错误
06A8BE5907MOVSI,0759
06AB813EFE7D55AACMPWORDPTR[7DFE],AA55
;扇区结束标志是否正确?
06B1745AJZREAD_SECTOR_SUCCEEDED
;正确
06B383EF05SUBDI, 05;DI=DI-5
06B67FDAJGREAD_SECTOR_LOOP
06B885F6TESTSI,SI
06BA7583JNZDISPLAY_ERROR_MESSAGE_LOOP:
;显示错误信息:缺少操作系统
06BCBE2E07MOVSI,072E
06BFEB8AJMPDISPLAY_ERROR_MESSAGE_LOOP_ALIAS
;显示错误信息:加载操作系统时发生错误。
070DEB74JMPCONTINUE_KOAD_OS
07838BFCMOVDI,SP
;DI=7C00
07851EPUSHDS
078657PUSHDI
07878BF5MOVSI,BP
0789CBRETF;转到执行0000:7C00处的语句,即操作系统的引导程序
Tag:数据恢复,硬盘数据恢复,数据恢复软件,电脑知识学习 - 数据恢复
上一篇:硬盘MBR读取错误的解决
最新更新
推荐热门
- · MBR全面分析
- · 优盘、闪存盘数据恢复
- · 多系统启动故障恢复
- · Fdisk /MBR 修复硬盘的几种应用
- · 硬盘数据恢复新方法
- · U盘装系统还是要谨慎
- · 判断磁盘是否出现坏道
- · 如何建立和删除系统隐藏的帐号
- · 用U盘安装系统方法全解析
- · 用U盘安装系统的三种方法