精华内容
下载资源
问答
  • MBR

    2018-11-18 12:22:00
    MBR posted @ 2018-11-18 12:22 酸奶加绿茶 阅读(...) 评论(...) 编辑 收藏

    MBR

     

    posted @ 2018-11-18 12:22 酸奶加绿茶 阅读(...) 评论(...) 编辑 收藏
    展开全文
  • mbr

    2017-08-04 22:23:09
    主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生...

    主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。
    通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBR)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。

    主引导扇区由三个部分组成(共占用512个字节):
    1.主引导程序即主引导记录(MBR)(占446个字节)
    可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。
    2.磁盘分区表项(DPT,Disk Partition Table)
    由四个分区表项构成(每个16个字节)。
    负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。(具体内容略)
    3.结束标志(占2个字节)
    其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。

    主引导扇区的读取流程
    系统开机或者重启时主引导扇区的读取流程如下所述。
    1.BIOS 加电自检 ( Power On Self Test – POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
    2.读取主引导记录(MBR)。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
    3.检查0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示“NO ROM BASIC”然后死机。
    4.当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处,然后继续执行。
    5.根据MBR中的引导代码启动引导程序。
    事实上,BIOS不仅检查0000:7CFEH-0000:7CFFH(MBR的结束标志位)是否等于55AAH,往往还对磁盘是否有写保护、主引导扇区中是否存在活动分区等进行检查。如果发现磁盘有写保护,则显示磁盘写保护出错信息;如果发现磁盘中不存在活动分区,则显示类似如下的信息“Remove disk or other media Press any key to restart”。

    展开全文
  • MBR AMBR

    千次阅读 2014-07-08 09:43:32
    EPS系统中,承载级QoS参数包括QCI、分配与保持优先级(ARP)、GBR、最大比特速率(MBR)和聚合最大比特速率(AMBR)。其中,QCI与AMBR两个参数是EPS系统新增加的,其余参数则都沿用于现有的UMTS系统。  无论是GBR...

    EPS系统中,承载级QoS参数包括QCI、分配与保持优先级(ARP)、GBR、最大比特速率(MBR)和聚合最大比特速率(AMBR)。其中,QCI与AMBR两个参数是EPS系统新增加的,其余参数则都沿用于现有的UMTS系统。

        无论是GBR承载还是Non-GBR承载,都包含与QCI和ARP两个参数。QCI是一个数量等级,用来表示控制承载级别的数据包传输处理的接入点参数,例如调度权重、接入门限、队列管理门限、链路层协议配置等等。ARP的主要目的是在资源限制的情况下决定接受还是拒绝承载的建立或修改请求。同时,ARP用于特殊的资源限制时(例如在切换时),决定丢弃哪个承载。一旦承载成功建立后,ARP将对承载级别的数据包传输处理没有任何影响。

        除QCI与APR两个参数外,每个GBR承载还与GBR和MBR参数相关联。GBR承载主要用于语音、视频、实时游戏等业务,采用专用承载和静态调度的方式进行承载。参数GBR代表了预期能够由GBR承载提供的比特速率,参数MBR则限制了GBR承载能提供的比特速率,它表示了GBR承载提供期望数据速率的上限。

        Non-GBR承载则主要用于各种数据业务的承载,为了尽可能提高系统的带宽利用率,EPS系统引入了汇聚的概念,并定义了AMBR参数。AMBR是到每个PDN连接的IP-CAN会话级QoS参数,相同PDN连接的多个EPS承载可以共享相同的AMBR值。当其他EPS承载不传送任何业务时,这些Non-GBR承载中的每一个承载都能够潜在地利用整个AMBR。因此,AMBR参数实际上限制了共享这一AMBR的所有承载能所能提供的总速率

    展开全文
  • Winhex查看MBR以及MBR内容结构的介绍.对于初学者还是比较有大的帮助的。Winhex查看MBR以及MBR内容结构的介绍.对于初学者还是比较有大的帮助的。
  • MBR分析笔记

    千次阅读 2016-08-26 10:24:33
    MBR

    关于MBR介绍,网上已经有很多了这里分享下自己xp的mbr分析笔记

    什么是MBR?
    也叫主引导记录(Master Boot Record,简称MBR) MBR位于整个硬盘的0柱面0磁头1扇区的位置处
    主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区Master Boot Sector
    它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)

    MBR组成
    MBR可以分为五个部分(512字节)
    1、引导程序(440字节)
    2、Windows磁盘签名(4个字节)
    3、保留位(2个字节)
    4、硬盘分区表(Disk Partition Table 简称DPT) 64个字节
    5、结束标志 (2个字节)

    也可以分成3部分(1.引导程序 2.分区表 3.结束标志)
    分区表
    一个分区表项为0x10大小字节,所以存在4个分区表项
    当然,也就只能有四个主分区或者3个主分区+1个扩展分区,但是平时看到有的电脑分成CDEFGH等盘,这是为什么呢?
    因为此时,一般只有C盘是主分区,DEFGH盘一般是扩展分区细分出来的逻辑分区。也就是说扩展分区只能有一个,然后可以再细分为多个逻辑分区。

    扩展分区也是主分区的一种,但它与主分区的不同在于理论上可以划分为无数个逻辑分区。

    调试之前先要了解windows系统启动过程
    1、开机
    2、BIOS加点自检(Power On Self Test,即POST),此时电源稳定后,CPU从内存地址0fff:0000处开始执行
    3、将硬盘第一个扇区(0磁头0柱面1扇区)读取内存地址0000:7c00处
    4、检测(WORD)0000:7dfe是否等于0xaa55,若不等于则转去尝试其他启动介质,如果没有其他启动介质则显示”No ROM BASIC”
    5、跳转到0000:7c00处执行MBR中的程序

    6、MBR首先将自己复制到0000:0600处,然后继续执行
    7、在主分区表中搜索标志为活动的分区。如果发现没有活动分区或有不止一个活动分区,则显示“Invalid partiton table”
    8、将活动分区的第一个扇区读入内存地址0000:7c00处
    9、检测(WORD)000:7dfe是否等于0xaa55,若不等于则显示”Miss Operating System”,然后停止,或尝试软盘启动
    10、跳转到0000:7c00处继续执行DBR
    11、启动系统

    以上步骤中2,3,4,5步由BIOS的引导程序完成,6、7、8、9、10步由MBR中的引导程序完成。
    知道了过程,调试就简单多了,所以过程是分析一个很关键的步骤。

    关于MBR的调试看willJ大大的文章吧~

    最好先用IDA动态跟下自己的mbr,接着静态分析(每个系统的mbr都不会是一模一样的)。

    IDA静态分析代码

    seg000:7C00 seg000          segment byte public 'CODE' use16[/size]
    seg000:7C00                 assume cs:seg000
    seg000:7C00                 ;org 7C00h
    seg000:7C00                 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
    seg000:7C00                 xor     ax, ax          ; ax = 0
    seg000:7C02                 mov     ss, ax          ; ss = 0
    seg000:7C04                 mov     sp, 7C00h       ; sp = 0x7c00
    seg000:7C07                 sti                     ; 开起段中断
    seg000:7C08                 push    ax
    seg000:7C09                 pop     es              ; es = 0
    seg000:7C0A                 push    ax
    seg000:7C0B                 pop     ds              ; ds = 0
    seg000:7C0C                 cld                     ; 关闭段中断
    seg000:7C0D                 push    ax
    seg000:7C0E                 mov     si, 7C00h
    seg000:7C11                 mov     di, 600h
    seg000:7C14                 mov     cx, 200h        ; 循环次数,512次,也就是mbr的大小
    seg000:7C17                 rep movsb               ; rep movsb将ds:si拷贝到es:di处,长度为cx
    seg000:7C17                                         ; 即将mbr从0x7c00拷贝到0x600处
    seg000:7C19                 mov     di, 61Eh
    seg000:7C1C                 push    di
    seg000:7C1D                 retf                    ; jmp到0x61E
    seg000:7C1D                                         ; 也就是继续执行下一条指令(可以用IDA动态调试看)
    seg000:7C1E ; ---------------------------------------------------------------------------
    seg000:7C1E                 xor     bx, bx          ; 这里本来是7c1E,因为静态调试,就把它当成61E
    seg000:7C20                 xor     dx, dx
    seg000:7C22                 mov     si, 7BEh        ; 0x600+0x1BE  偏移0x1BE为分区表起始位置
    seg000:7C25                 mov     cl, 4           ; 4个分区表项
    seg000:7C27
    seg000:7C27 loc_7C27:                               ; CODE XREF: seg000:7C32j
    seg000:7C27                 test    byte ptr [si], 80h ; 判断是否是活动分区,0x80为活动分区,由于[si]是2个字节,我测试的[si]为0x180
    seg000:7C2A                 jz      short loc_7C2F  ; 是活动分区的时候不跳转,否则跳转
    seg000:7C2C                 mov     dx, si
    seg000:7C2E                 inc     bx              ; bx=1,接着之前的0
    seg000:7C2F
    seg000:7C2F loc_7C2F:                               ; CODE XREF: seg000:7C2Aj
    seg000:7C2F                 add     si, 10h         ; 活动分区表指向下一个
    seg000:7C32                 loop    loc_7C27        ; 判断是否是活动分区,0x80为活动分区,由于[si]是2个字节,我测试的[si]为0x180
    seg000:7C34                 cmp     bx, 1           ; 判断是否只有一个活动分区表
    seg000:7C37                 jz      short Find_Partition ; 只有一个就跳转
    seg000:7C39                 mov     si, 0C4h        ; 如果活动分区表为0或者大于1,则错误,si = C4h
    seg000:7C3C                 mov     cx, 17h         ; cx = 17h 十进制的23(Invalid partition table的长度)
    seg000:7C3F                 jmp     short Print_Error ; si = C4h + 600h = 6C4h,指向Invalid partition table字符串
    seg000:7C41 ; ---------------------------------------------------------------------------
    seg000:7C41                 nop
    seg000:7C42
    seg000:7C42 Find_Partition:                         ; CODE XREF: seg000:7C37j
    seg000:7C43                 mov     ah, 41h         ; int13 41号功能,检测特定驱动器是否有扩展功能
    seg000:7C45                 mov     dl, 80h
    seg000:7C47                 mov     bx, 55AAh       ; 如果存在扩展13H功能,执行完int13,bx = AA55h,CL = 5
    seg000:7C4A                 int     13h             ; DISK - Check for INT 13h Extensions
    seg000:7C4A                                         ; BX = 55AAh, DL = drive number
    seg000:7C4A                                         ; Return: CF set if not supported
    seg000:7C4A                                         ; AH = extensions version
    seg000:7C4A                                         ; BX = AA55h
    seg000:7C4A                                         ; CX = Interface support bit map
    seg000:7C4C                 pop     dx
    seg000:7C4D                 cmp     bx, 0AA55h      ; 判断是否存在扩展INT13功能
    seg000:7C51                 jnz     short loc_7C86  ; 调用int13的02号读扇区功能
    seg000:7C53                 test    cl, 1           ; 此时CL = 5
    seg000:7C56                 jz      short loc_7C86  ; 调用int13的02号读扇区功能
    seg000:7C58                 mov     ax, 4200h
    seg000:7C5B                 mov     si, 7ADh        ; si = 7ADh
    seg000:7C5E                 mov     cl, 10h         ; 循环次数
    seg000:7C60
    seg000:7C60 loc_7C60:                               ; CODE XREF: seg000:7C64j
    seg000:7C60                 mov     byte ptr [si], 0 ; 7ADh到7BDh之间这0x10全部赋值为0
    seg000:7C63                 inc     si
    seg000:7C64                 loop    loc_7C60        ; 7ADh到7BDh之间这0x10全部赋值为0
    seg000:7C66                 mov     si, 7ADh
    seg000:7C69                 mov     di, dx          ; dx = 0x7BE
    seg000:7C6B                 mov     byte ptr [si], 10h ; 设置7AD到7BD之间的值分别为
    seg000:7C6B                                         ; 10 00 01 00 00 7C 00 00  3F 00 00 00 00 00 00 00
    seg000:7C6E                 mov     byte ptr [si+2], 1
    seg000:7C72                 mov     word ptr [si+4], 7C00h
    seg000:7C77                 mov     bx, [di+8]
    seg000:7C7A                 mov     [si+8], bx
    seg000:7C7D                 mov     bx, [di+0Ah]
    seg000:7C80                 mov     [si+0Ah], bx
    seg000:7C83                 jmp     short loc_7C94  ; 此时ax = 4200h,
    seg000:7C83                                         ; 继续利用int 13检测驱动器的扩展性
    seg000:7C83 ; ---------------------------------------------------------------------------
    seg000:7C85                 db  90h ; 
    seg000:7C86 ; ---------------------------------------------------------------------------
    seg000:7C86
    seg000:7C86 loc_7C86:                               ; CODE XREF: seg000:7C51j
    seg000:7C86                                         ; seg000:7C56j
    seg000:7C86                 mov     ax, 201h        ; 调用int13的02号读扇区功能
    seg000:7C89                 mov     bx, 7C00h
    seg000:7C8C                 mov     si, dx
    seg000:7C8E                 mov     cx, [si+2]
    seg000:7C91                 mov     dh, [si+1]      ; 将活动分区的第一个扇区读入到内存地址0000:7c00
    seg000:7C94
    seg000:7C94 loc_7C94:                               ; CODE XREF: seg000:7C83j
    seg000:7C94                 mov     dl, 80h         ; 此时ax = 4200h,
    seg000:7C94                                         ; 继续利用int 13检测驱动器的扩展性
    seg000:7C96                 int     13h             ; DISK - READ SECTORS INTO MEMORY
    seg000:7C96                                         ; AL = number of sectors to read, CH = track, CL = sector
    seg000:7C96                                         ; DH = head, DL = drive, ES:BX -> buffer to fill
    seg000:7C96                                         ; Return: CF set on error, AH = status, AL = number of sectors read
    seg000:7C98                 mov     si, 7DFEh
    seg000:7C9B                 cmp     word ptr [si], 0AA55h ; 检测0000:7dfe是否等于0xaa55,若不等于则显示"Missing Operating System"
    seg000:7C9F                 jz      short DBR       ; 相等就跳到DBR执行
    seg000:7CA1                 mov     si, 0DBh
    seg000:7CA4                 mov     cx, 18h         ; 循环次数十进制24,Missing Operating System长度为24
    seg000:7CA7                 jmp     short Print_Error ; si = C4h + 600h = 6C4h,指向Invalid partition table字符串
    seg000:7CA7 ; ---------------------------------------------------------------------------
    seg000:7CA9                 db  90h ; 
    seg000:7CAA ; ---------------------------------------------------------------------------
    seg000:7CAA
    seg000:7CAA DBR:                                    ; CODE XREF: seg000:7C9Fj
    seg000:7CAA                 xor     ax, ax
    seg000:7CAC                 push    ax
    seg000:7CAD                 mov     ax, 7C00h
    seg000:7CB0                 push    ax
    seg000:7CB1                 retf                    ; jmp到0000:7c00处,将控制权交给DBR
    seg000:7CB2 ; ---------------------------------------------------------------------------
    seg000:7CB2
    seg000:7CB2 Print_Error:                            ; CODE XREF: seg000:7C3Fj
    seg000:7CB2                                         ; seg000:7CA7j
    seg000:7CB2                 add     si, 600h        ; si = C4h + 600h = 6C4h,指向Invalid partition table字符串
    seg000:7CB6
    seg000:7CB6 loc_7CB6:                               ; CODE XREF: seg000:7CBEj
    seg000:7CB6                 lodsb                   ; 块装入指令,ds:si的值赋给al
    seg000:7CB6                                         ; cx = 23为循环变量(loop的循环结束条件cx = 0)
    seg000:7CB6                                         ; 一次显示一个al字符
    seg000:7CB7                 mov     bx, 7
    seg000:7CBA                 mov     ah, 0Eh
    seg000:7CBC                 int     10h             ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE)
    seg000:7CBC                                         ; AL = character, BH = display page (alpha modes)
    seg000:7CBC                                         ; BL = foreground color (graphics modes)
    seg000:7CBE                 loop    loc_7CB6        ; 块装入指令,ds:si的值赋给al
    seg000:7CBE                                         ; cx = 23为循环变量(loop的循环结束条件cx = 0)
    seg000:7CBE                                         ; 一次显示一个al字符
    seg000:7CC0
    seg000:7CC0 loc_7CC0:                               ; CODE XREF: seg000:7CC2j
    seg000:7CC0                 mov     cl, 0Fh
    seg000:7CC2                 loop    loc_7CC0
    seg000:7CC2 ; ---------------------------------------------------------------------------
    seg000:7CC4 aInvalidPartitionTa db 'Invalid partition tableMissing operating system',0
    
    

    PS:
    我动态跟的时候,不知道为什么,没有看到“将活动分区的第一个扇区读入到内存地址0000:7c00”这个步骤,
    而是直接进行了两次int13 41功能号函数,最后跳到了DBR执行,然后启动。

    慢慢分析,觉得还是蛮简单,贵在坚持。如果有分析得错误的地方,忘指点交流

    展开全文
  • MBR详解

    2013-03-21 09:25:52
    MBR详解
  • dsm61mbr 1.02b MBR.img

    2020-01-01 11:08:40
    用于不支持UEFI (只支持BIOS)启动的主板 Jun's loader v1.02b DS3617xs with MBR partition (For older boards. Try if the above refuses to boot)
  • GPT gpt 转MBR mbr

    2014-10-31 13:22:25
    现在很多电脑的磁盘格式是GPT格式,所以导致许多非原装系统装上去用不了,这时候就要修改电脑磁盘格式了,用MBR格式的磁盘可以更好的用激活的系统,何乐而不为呢。
  • Legacy和UEFI,MBR和GPT的区别

    万次阅读 多人点赞 2018-10-09 01:15:07
    Legacy和UEFI指的是系统引导方式(Legacy为传统BIOS,UEFI为新式BIOS),MBR和GPT指的是磁盘分区表类型。 一般情况下都是Legacy+MBR, UEFI+GPT这两种组合。但Legacy+GPT,UEFI+MBR也可以实现。 Legacy用的是8086...
  • MBR功能 MBR

    2020-05-12 20:21:59
    MBR是主引导记录,它存在于整个磁盘的最开始的那个扇区,地址为0号扇区,此扇区一般为512字节大小。 MBR扇区的内容是: 内容 说明 前446字节 引导程序及参数 中间64字节 分区表 最后2字节 0x55,0...
  • FAT 文件系统 - MBR

    2019-11-04 22:16:53
    MBR
  • MBR简介

    2019-09-14 02:58:49
    概述 本文档介绍磁盘MBR相关概念和引导操作系统流程。 MBR MBR简介 MBR(Main Boot Record),是位于磁盘最前面的一段引导代码,存在于整个磁盘最开始的那个扇区,即0盘0道1扇区(该处用CHS方式表示MBR引导扇区...
  • mbr mysql_什么是MBR

    2021-01-21 01:06:17
    MBR的定义MBR(Main Boot Record)主引导记录是位于磁盘最前边的一段引导代码,由磁盘操作系统(DOS)在对磁盘初始化时产生,负责磁盘操作系统(DOS)对磁盘进行读写时磁盘分区合法性的检查以及磁盘分区引导信息的定位。...
  • 模拟MBR故障 备份MBR

    2018-06-12 13:11:28
    新挂载一块硬盘 并查看物理路径 创建分区并格式化 挂载到/hehedd if=/dev/sda of=/hehe/mbr.bak bs=512 count=1 备份mbr信息到 呵呵路径下名为mbr.bak dd if=/dev/zero of=/dev/sda bs=512 count=1 模拟故障 从zero...
  • mbr mysql_mbr是什么?

    2021-02-01 11:22:25
    MBR即主引导记录,全称Main Boot Record,是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时...
  • 易语言mbr查看源码

    2020-07-16 13:00:21
    易语言mbr查看源码,mbr查看,读扇区,写扇区,字节集到十六进制,字节集到十进制,字节集到文本,完善数据,GetByteAddress,CreateFile,SetFilePointer,ReadFile,CloseHandle,Mbr,Bbr,WriteFile
  • MBR 修复

    2019-08-07 20:40:00
    首先创建一个分区放备份文件,将MBR扇区备份至此 partprobe /dev/sdb mkfs.ext4 /dev/sdb1 创一个挂载点 mkdir /backup 挂载 mount /dev/sdb1 /backup 备份 dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 ...
  • GPT转MBR GPT转MBR

    2013-12-02 09:13:16
    朋友新买的X230i,预装的是win8系统。用着不习惯,让我和重做一下win7系统,我随口就答应了。真正装的时候差点晚节不保,下面把找到的GPT转 MBR的资料分享一下
  • rhel7.0MBR

    2017-06-21 11:11:25
    主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)。在深入讨论主引导扇区内部结构的...
  • MBR修复

    2015-09-28 17:28:39
    MBR修复
  • MBR结构

    2020-08-30 01:56:00
    1.MBR结构图: 表1 64 Byte 就只能划分 4 个主分区。每个分区的 16 字节的规划如下表 2 所示。 表 2 分区表内容 存储字节 数据内容及含义 第 1 字节 引导标志 第 2 字节 本分区的起始磁道号 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,584
精华内容 6,633
关键字:

mbr