无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2479|回复: 7
打印 上一主题 下一主题

请问有没有关于各种引导二进制代码的总结啊?

[复制链接]
跳转到指定楼层
1#
发表于 2010-10-21 07:43:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在论坛上看到了Windows NT 5.x 的MBR二进制代码,想学习一下其它各种引导的MBR、PBR代码各是什么样的,有没有大侠有总结?或者有什么途径?谢谢!

一方面想进一步学习,另一方面,用BootIce看一下自己写入的代码可以判断代码本身有没有问题,不懂代码的情况下,常常搞不清是引导没写对,还是计算机或者U盘兼容性不好。
2#
发表于 2010-10-21 08:38:45 | 只看该作者
各个操作系统的MBR引导代码是不一样的吗。
回复

使用道具 举报

3#
 楼主| 发表于 2010-10-21 23:05:49 | 只看该作者
不一样吧?至少我用BootIce写入后,看了NTLDR的和GRUB的是不一样的。一样的话又怎能叫做“将xx引导写入MBR”呢?
回复

使用道具 举报

4#
发表于 2010-10-22 00:33:38 | 只看该作者
蛙哥是高手,你问他吧
回复

使用道具 举报

5#
发表于 2010-10-22 08:16:21 | 只看该作者
所谓MBR,其核心思想就是:
1、审核DPT的合法性;
2、查找活动分区表项;
3、装入活动分区DBR并审查DBR的55AA标识;
4、移交控制权给DBR代码;
5、出错时进行报错处理。
而DBR相对MBR来说,就要复杂得多,它基本上就是根据BPB表提供的参数,对磁盘实施搜索,查找系统初始启动文件,DBR代码负责装入系统初始启动文件,并将控制权移交给装入的程序,从而完成其引导过程,DBR是有鲜明的系统特征的,不同操作系统在格式化磁盘后,构造出来的DBR是截然不同的,所指向的系统初始启动文件,也是不同的,DOS 5.0系统格式的DBR,指向的是IBMBIO.COM,XP格式的DBR指向的是NTLDR,Win7和Vista格式的DBR指向BOOTMGR,因此这些格式的DBR与系统密切相关,我们不能指望XP的DBR来装入Win7的引导程序BOOTMGR,总之用于启动的DBR,一定要切合操作系统的要求,其它非启动盘的DBR则可有可无,windows系统格式化时,不管是否启动盘,一律都带有DBR代码,有些分区工具软件,对于非启动盘,在格式化时,不会生成DBR代码,仅仅构造一个BPB表结构。
在此发一个我在96年注释的MBR,这是最简单的MBR,有助于理解MBR的运作机制,希望对LZ有所帮助。
DBR引导代码比较复杂,与文件系统结构密切相关,需要有足够的文件系统知识,方能看懂其中奥秘,我有一个DOS5.0的FAT16 DBR注释,只注释了一半,十多年未关注它了,不愿继续注释下去,就不拿出来了,免得留下笑柄。

MS-DOS V3.31  主引导程序注释

:7C00 FA         CLI                 ;关中断
:7C01 33C0       XOR        AX,AX    ;━━┓AX=0
:7C03 8ED0       MOV        SS,AX         ┃SS=0
:7C05 BC007C     MOV        SP,7C00       ┃SP=7C00
:7C08 8BF4       MOV        SI,SP         ┃SI=7C00
:7C0A 50         PUSH        AX           ┃
:7C0B 07         POP        ES            ┃ES=0
:7C0C 50         PUSH        AX           ┃
:7C0D 1F         POP        DS       ;━━┛DS=0
:7C0E FB         STI                 ;开中断
:7C0F FC         CLD                 ;置正方向
:7C10 BF0006     MOV        DI,0600  ;DI=600
:7C13 B90001     MOV        CX,0100  ;CX=100
:7C16 F2         REPNZ               ;━┓传递从7C00偏移开始的
:7C17 A5         MOVSW               ;━┛256个字到600偏移处
:7C18 EA1D060000 JMP        0000:061D;转移到61D处继续执行CS=0
:061D BEBE07     MOV        SI,07BE  ;SI=7BE指向硬盘驱动链表
:0620 B304       MOV        BL,04    ;BL=04设置读4个驱动表项的计数字节
:0622 803C80     CMP        BYTE PTR [SI],80  ;判断是否活动分区
:0625 740E       JZ        0635      ;是则转635处执行
:0627 803C00     CMP        BYTE PTR [SI],00  ;判断是否空驱动表项
:062A 751C       JNZ        0648     ;不是则转648处执行报错程序
:062C 83C610     ADD        SI,+10   ;SI=SI+10指向下一驱动表项
:062F FECB       DEC        BL       ;驱动链表的计数字节BL=BL-1
:0631 75EF       JNZ        0622     ;BL不为零则转622处执行
:0633 CD18       INT        18       ;BL寄存器为零则转入ROM BASIC
:0635 8B14       MOV        DX,[SI]  ;DX=活动分区设备号和磁头号
:0637 8B4C02     MOV        CX,[SI+02]  ;CX=活动分区起始柱面及扇区号
:063A 8BEE       MOV        BP,SI    ;BP=SI=7BE
:063C 83C610     ADD        SI,+10   ;SI=SI+10指向下一驱动表项
:063F FECB       DEC        BL       ;驱动链表的计数字节BL=BL-1
:0641 741A       JZ        065D      ;BL=0则转65D处读取磁盘引导扇
:0643 803C00     CMP        BYTE PTR [SI],00  ;比较XBE处是否为零
:0646 74F4       JZ        063C      ;为零转63C处执行
:0648 BE8B06     MOV        SI,068B  ;SI=68B指向报错字符串首字符
:064B AC         LODSB               ;装入SI=68B处的一个字节到AL
:064C 3C00       CMP        AL,00    ;比较AL=00 ?
:064E 740B       JZ        065B      ;AL=00为报错字符串结束,转65B处陷入死循环
:0650 56         PUSH        SI      ;将SI内容68B压入堆栈保存
:0651 BB0700     MOV        BX,0007  ;BX=0007设为0号显示页,黑底白字
:0654 B40E       MOV        AH,0E    ;AH=0E设为电传打字显示方式
:0656 CD10       INT        10       ;调用BIOS 10中断显示报错字符
:0658 5E         POP        SI       ;SI=68B
:0659 EBF0       JMP        064B     ;转到64B处继续执行报错字符的显示程序
:065B EBFE       JMP        065B     ;陷入死循环
:065D BF0500     MOV        DI,0005  ;DI=0005设读取磁盘引导扇的重试计数次数
:0660 BB007C     MOV        BX,7C00  ;BX=7C00设磁盘引导扇装入内存的缓冲偏移址
:0663 B80102     MOV        AX,0201  ;AX=201设INT13读1个扇区功能
:0666 57         PUSH        DI      ;DI内容压入堆栈
:0667 CD13       INT        13       ;调用INT13读磁盘引导程序
:0669 5F         POP        DI       ;恢复DI内容
:066A 730C       JNB        0678     ;INT13调用成功转678处执行
:066C 33C0       XOR        AX,AX    ;INT13调用失败,AX寄存器清零
:066E CD13       INT        13       ;调用INT13重置驱动器
:0670 4F         DEC        DI       ;DI=DI-1
:0671 75ED       JNZ        0660     ;DI寄存器非零则转660处执行
:0673 BEA306     MOV        SI,06A3  ;SI=6A3设报错字符串首字符指针
:0676 EBD3       JMP        064B     ;转移到24B处执行报错程序
:0678 BEC206     MOV        SI,06C2  ;SI=6C2预设报错字符串首字符指针
:067B BFFE7D     MOV        DI,7DFE  ;DI=7DFE
:067E 813D55AA   CMP        WORD PTR [DI],AA55  ;比较所读扇区末字是否为55AA
:0682 75C7       JNZ        064B     ;非55AA为不合法扇区,转到64B处执行报错程序
:0684 8BF5       MOV        SI,BP    ;合法则SI=BP=7BE
:0686 EA007C0000 JMP        0000:7C00;转移到07C00处执行磁盘引导程序
:068B 496E       ;─┐
   .    .           │提示各类出错
   .    .           │信息的字符串
   .    .           │
:06D8 656D       ;─┘
:06DA 0000       ;─┐
   .    .           │
   .    .           │全0
   .    .           │
:07BD 0000       ;─┘
:07BE 80         ;─┐分区活动标志
:07BF 01            │
:07C0 0100          │
:07C2 04          分│
:07C3 0F            │
:07C4 4834          │
:07C6 00000034      │
:07CA 0000EFB0      │
:07CE 0000        区│
:07D0 4A01          │
:07D2 05            │
:07D3 0F            │
:07D4 E8F4          │
:07D6 00003448    表│
:07DA 0008C4C0      │
:07DE 0000          │
   .    .           │
   .    .           │
   .    .           │
:07FD 0000       ;─┘
:07FE 55         ;─┐引导程序
:07FF AA         ;─┘合法标志
:0600  FA 33 C0 8E D0 BC 00 7C-8B F4 50 07 50 1F FB FC   .3.....|..P.P...
:0610  BF 00 06 B9 00 01 F2 A5-EA 1D 06 00 00 BE BE 07   ................
:0620  B3 04 80 3C 80 74 0E 80-3C 00 75 1C 83 C6 10 FE   ...<.t..<.u.....
:0630  CB 75 EF CD 18 8B 14 8B-4C 02 8B EE 83 C6 10 FE   .u......L.......
:0640  CB 74 1A 80 3C 00 74 F4-BE 8B 06 AC 3C 00 74 0B   .t..<.t.....<.t.
:0650  56 BB 07 00 B4 0E CD 10-5E EB F0 EB FE BF 05 00   V.......^.......
:0660  BB 00 7C B8 01 02 57 CD-13 5F 73 0C 33 C0 CD 13   ..|...W.._s.3...
:0670  4F 75 ED BE A3 06 EB D3-BE C2 06 BF FE 7D 81 3D   Ou...........}.=
:0680  55 AA 75 C7 8B F5 EA 00-7C 00 00 49 6E 76 61 6C   U.u.....|..Inval
:0690  69 64 20 70 61 72 74 69-74 69 6F 6E 20 74 61 62   id partition tab
:06A0  6C 65 00 45 72 72 6F 72-20 6C 6F 61 64 69 6E 67   le.Error loading
:06B0  20 6F 70 65 72 61 74 69-6E 67 20 73 79 73 74 65    operating syste
:06C0  6D 00 4D 69 73 73 69 6E-67 20 6F 70 65 72 61 74   m.Missing operat
:06D0  69 6E 67 20 73 79 73 74-65 6D 00 00 00 00 00 00   ing system......
:06E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:06F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0700  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0710  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0720  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0730  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0740  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0750  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0760  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0770  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0780  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:0790  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:07A0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:07B0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 80 01   ................
:07C0  01 00 04 0F 34 48 34 00-00 00 B0 EF 00 00 00 00   ....4H4.........
:07D0  01 4A 05 0F F4 E8 80 F0-00 00 C0 C4 0B 00 00 00   .J..............
:07E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
:07F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA   ..............U.


[ 本帖最后由 lvyanan 于 2010-10-22 08:59 编辑 ]
回复

使用道具 举报

6#
发表于 2010-10-22 11:22:55 | 只看该作者
实在佩服5楼的大元帅
回复

使用道具 举报

7#
发表于 2010-10-22 14:16:21 | 只看该作者

回复 #6 2010vvonline 的帖子

那个注释也是当年的心血,奠定了我研究MBR的基础。
回复

使用道具 举报

8#
发表于 2010-10-22 14:18:52 | 只看该作者
这些东西可能需要很长时间才能掌握的
很佩服的.也很想学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-3 21:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表