MBR和DBR详细分析

存储管理之MBR与DBR MBR:主引导纪录 这是x86硬件使用标准BIOS规定windows分区格式必须符合:主磁盘的第一个扇区(或者叫第0扇区,搞不清,反正就是排在最前的那个)必须包含MBR(这个磁盘指的是物理磁盘) CPU引导时,BIOS在完成自身基本配置后会读入MBR中得可执行代码来启动OS。 MBR包含一个分区表(至多只能定义4个主分区,其他靠扩展分区解决),里面有记录分区类型,如FAT32、NTFS等。 阅读详情
系统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                 org 7C00h
code:7C00                 assume es:nothing, ss:nothing, ds:code, fs:nothing, gs:nothing
code:7C00 start           proc far
code:7C00                 xor     ax, ax
code:7C02                 mov     ss, ax
code:7C04                 mov     sp, 7C00h
code:7C07                 sti
code:7C08                 push    ax
code:7C09                 pop     es
code:7C0A                 push    ax      ; es=ds=ss=0x0000
code:7C0B                 pop     ds              ; initial segment and stack                                        
code:7C0C                 cld
code:7C0D                 push    ax
code:7C0E                 mov     si, 7C00h
code:7C11                 mov     di, 600h 
code:7C14                 mov     cx, 200h 
code:7C17                 rep movsb               ; move this MBR code to 600h
code:7C19                 mov     di, 61Eh 
code:7C1C                 push    di
code:7C1D                 retf                    ; jmp 0000:61Eh
code:7C1E                 xor     bx, bx          ; ip=61Eh
code:7C20                 xor     dx, dx
code:7C22                 mov     si, 7BEh    ; partition state
code:7C25                 mov     cl, 4           ; Search DPT,and it has 4 itemes,
code:7C27 check_next_partition:   
code:7C27                 test    byte ptr [si], 80h            ; 0x80->Active 0x00->not active
code:7C2A                 jz      short search_active_partition ;  next item, size of one item is 10h
code:7C2A
code:7C2C                 mov     dx, si          ; save item base address
code:7C2E                 inc     bx              ; the sum of the active item
code:7C2F search_active_partition:             
code:7C2F                 add     si, 10h         ;  next item, size of one item is 10h
code:7C32                 loop    check_next_partition          ; 0x80->Active 0x00->not active
code:7C34                 cmp     bx, 1
code:7C37                 jz      short found_partition_active
code:7C39                 mov     si, 0C4h        ; sz_Invalid_DPT Si=lpString (Offset)
code:7C3C                 mov     cx, 17h         ; length
code:7C3F                 jmp     short Display_Error_Informatin ; add base ip
code:7C41                 nop
code:7C42 found_partition_active:                
code:7C42                 push    dx
code:7C43                 mov     ah, 41h
code:7C45                 mov     dl, 80h
code:7C47                 mov     bx, 55AAh
code:7C4A                 int     13h             ; Detect sport extend int 13h call
code:7C4C                 pop     dx
code:7C4D                 cmp     bx, 0AA55h
code:7C51                 jnz     short CHSReadMBRFormDisk
code:7C53                 test    cl, 1
code:7C56                 jz      short CHSReadMBRFormDisk
code:7C58 LBAReadMBRFormDisk:
code:7C58                 mov     ax, 4200h
code:7C5B                 mov     si, 7ADh 
code:7C5E                 mov     cl, 10h
code:7C60 init_disk_addr_pkt:                     
code:7C60                 mov     byte ptr [si], 0
code:7C63                 inc     si
code:7C64                 loop    init_disk_addr_pkt
code:7C66                 mov     si, 7ADh
code:7C69                 mov     di, dx          ; dx point to active item base address
code:7C6B                 mov     byte ptr [si], 10h ; packet_size=16 (DB must)
code:7C6E                 mov     byte ptr [si+2], 1 ; sector_count 01h (DW)
code:7C72                 mov     word ptr [si+4], 7C00h ; buffer_addr (DD)
code:7C77                 mov     bx, [di+8]      ; line address of sectors (DD RAV)
code:7C7A                 mov     [si+8], bx      ; sector_base (QD)
code:7C7D                 mov     bx, [di+0Ah]    ; line address of sectors + 2 (DD RAV)
code:7C80                 mov     [si+0Ah], bx    ; sector_base + 2 (QD)
code:7C83                 jmp     short ReadDisk
code:7C85                 nop
code:7C86 CHSReadMBRFormDisk:  
code:7C86                 mov     ax, 201h 
code:7C89                 mov     bx, 7C00h       ; offset buffer_addr (DW)
code:7C8C                 mov     si, dx          ; dx point to active item base address
code:7C8E                 mov     cx, [si+2]      ; CH = track, CL = sector
code:7C91                 mov     dh, [si+1]      ; DH = head
code:7C94 ReadDisk:     
code:7C94                 mov     dl, 80h
code:7C96                 int     13h             AH = status, AL = number of sectors read
code:7C98                 mov     si, 7DFEh
code:7C9B                 cmp     word ptr [si], 0AA55h ; chech is invalid MBR
code:7C9F                 jz      short Load_OS_MBR
code:7CA1                 mov     si, 0DBh
code:7CA4                 mov     cx, 18h
code:7CA7                 jmp     short Display_Error_Informatin ; add base ip
code:7CA9                 nop
code:7CAA Load_OS_MBR:                       
code:7CAA                 xor     ax, ax
code:7CAC                 push    ax
code:7CAD                 mov     ax, 7C00h
code:7CB0                 push    ax
code:7CB1                 retf                    ; jmp load os MBR 
code:7CB2 Display_Error_Informatin:
code:7CB2                 add     si, 600h        ; add base ip
code:7CB6 Display:       
code:7CB6                 lodsb        ; AL = character
code:7CB7                 mov     bx, 7      ; BH = display page BL = foreground color
code:7CBA                 mov     ah, 0Eh
code:7CBC                 int     10h             ; VIDEO - WRITE CHARACTER AND ADVANCE CURSOR
code:7CBE                 loop    Display
code:7CC0                 db 0B1h
code:7CC1                 db  0Fh
code:7CC2                 db 0E2h ; ?
code:7CC3                 db 0FCh ; ?
code:7CC4 sz_Invalid_DPT  db 'Invalid partition tableMissing operating system',0
code:7CF4 sz_MBR_Information db 'Master Boot Record Wrote by DiskMan Ver1.30',0
code:7D20                 db 98h dup(0)           ; not use space
code:7DB8 s_Zmzm          db 'ZmZm',0             ; not use data, can set any data if you like
code:7DBD                 db    0
code:7DBE First_Item_DPT  db  80h                 ; statue
code:7DBF                 db    1                 ; 开始头
code:7DC0                 dw 1                    ; 开始扇区
code:7DC2                 db    7                 ; 分区类型指示
code:7DC3                 db 0FEh                 ; 结束头
code:7DC4                 dw 0CCFFh               ; 结束扇
code:7DC6                 dd 3Fh                  ; 扇区在前的分区 1
code:7DCA                 dd 0EE834Eh
code:7DCE Second_Item_DPT db    0                 ; statue
code:7DCF                 db    0
code:7DD0                 dw 0CDC1h
code:7DD2                 db  0Fh
code:7DD3                 db 0FEh ; ?
code:7DD4                 dw 0FFFFh
code:7DD6                 dd 0EE838Dh
code:7DDA                 dd 3BB47F9h
code:7DDE T_Item_DPT      db 10h dup(0)
code:7DEE F_Item_DPT      db 10h dup(0)
code:7DFE MBR_Flag        db  55h ; U
code:7DFF                 db 0AAh ; ?
code:7DFF code            ends
code:7DFF                 end start
 
3.DBR详细分析
代码:
code:7C00 ; File Name   : D:/DBR.COM
code:7C00 ; Format      : MS-DOS COM-file
code:7C00 ; Base Address: 1000h Range: 10100h-10300h Loaded length: 200h
code:7C00
code:7C00                 .686p
code:7C00                 .mmx
code:7C00                 .model tiny
code:7C00
code:7C00 ; ###########################################################################
code:7C00
code:7C00 ; Segment type: Pure code
code:7C00 code          segment byte public 'CODE' use16
code:7C00                 assume cs:code
code:7C00                 org 7C00h
code:7C00                 assume es:nothing, ss:nothing, ds:code, fs:nothing, gs:nothing
code:7C00
code:7C00 ; =============== S U B R O U T I N E =======================================
code:7C00
code:7C00                 public start
code:7C00 start           proc far
code:7C00                 jmp     short begin
code:7C00
code:7C02 ; ---------------------------------------------------------------------------
code:7C02                 nop
code:7C02
code:7C02 ; ---------------------------------------------------------------------------
code:7C03 sz_Ntfs         db 'NTFS    ',0
code:7C0C                 db 2, 8, 7 dup(0), 0F8h, 2 dup(0), 3Fh, 0, 0FFh, 0, 3Fh, 7 dup(0), 80h, 0, 80h, 0, 4Dh
code:7C0C                 db 83h, 0EEh, 7 dup(0), 0Ch, 5 dup(0), 10h, 7 dup(0), 0F6h, 3 dup(0), 1, 3 dup(0), 61h
code:7C0C                 db 0F5h, 0B9h, 0B3h, 2Fh, 0F6h, 33h, 13h, 4 dup(0)
code:7C54 ; ---------------------------------------------------------------------------
code:7C54
code:7C54 begin:           
code:7C54                 cli
code:7C55                 xor     ax, ax
code:7C57                 mov     ss, ax
code:7C59                 mov     sp, 7C00h
code:7C5C                 sti
code:7C5D                 mov     ax, 7C0h 
code:7C60                 mov     ds, ax
code:7C62                 assume ds:nothing
code:7C62                 call    GetCurrentDriveParaments
code:7C62
code:7C65                 mov     ax, 0D00h 
code:7C68                 mov     es, ax
code:7C6A                 xor     bx, bx
code:7C6C                 mov     byte ptr ds:0Eh, 10h
code:7C71                 call    ReadDiskSectors
code:7C71
code:7C74                 push    0D00h 
code:7C77                 push    26Ah 
code:7C7A                 retf
code:7C7A
code:7C7A start           endp 
code:7C7A
code:7C7B ; =============== S U B R O U T I N E =======================================
code:7C7B
code:7C7B GetCurrentDriveParaments proc near      
code:7C7B                 mov     dl, ds:24h      ; DL = drive number,Why must use ds:24h Memory?
code:7C7F                 mov     ah, 8
code:7C81                 int     13h
code:7C83                 jnb     short success   
code:7C83
code:7C85                 mov     cx, 0FFFFh
code:7C88                 mov     dh, cl
code:7C88
code:7C8A success:                              
code:7C8A                 movzx   eax, dh         ; why now can use 'EAX' register,but it in use 16?
code:7C8E                 inc     ax
code:7C8F                 movzx   edx, cl         
code:7C93                 and     dl, 3Fh
code:7C96                 mul     dx
code:7C98                 xchg    cl, ch
code:7C9A                 shr     ch, 6
code:7C9D                 inc     cx
code:7C9E                 movzx   ecx, cx
code:7CA2                 mul     ecx
code:7CA5                 mov     ds:20h, eax
code:7CA9                 retn
code:7CA9
code:7CA9 GetCurrentDriveParaments endp
code:7CA9
code:7CAA ; =============== S U B R O U T I N E =======================================
code:7CAA
code:7CAA CheckExtenInt13 proc near               
code:7CAA                 mov     ah, 41h
code:7CAC                 mov     bx, 55AAh
code:7CAF                 mov     dl, ds:24h
code:7CB3                 int     13h
code:7CB5                 jb      short exit
code:7CB5
code:7CB7                 cmp     bx, 0AA55h
code:7CBB                 jnz     short exit
code:7CBB
code:7CBD                 test    cl, 1
code:7CC0                 jz      short exit
code:7CC0
code:7CC2                 inc     byte ptr ds:14h ; set a flage
code:7CC6 exit:                                  
code:7CC6                 retn
code:7CC6
code:7CC6 CheckExtenInt13 endp
code:7CC6
code:7CC7 ; =============== S U B R O U T I N E =======================================
code:7CC7
code:7CC7 ReadDiskSectors proc near               
code:7CC7                 pushad
code:7CC9                 push    ds
code:7CCA                 push    es
code:7CCB continue_work:                     
code:7CCB                 mov     eax, ds:10h
code:7CCF                 add     eax, ds:1Ch
code:7CD4                 cmp     eax, ds:20h
code:7CD9                 jb      read_disk_sectors
code:7CD9
code:7CDD                 push    ds
code:7CDE                 push    large 0
code:7CE1                 push    eax
code:7CE3                 push    es
code:7CE4                 push    bx
code:7CE5                 push    large 10010h
code:7CEB                 cmp     byte ptr ds:14h, 0 ; check a flage
code:7CF0                 jnz     continue
code:7CF0
code:7CF4                 call    CheckExtenInt13
code:7CF4
code:7CF7                 cmp     byte ptr ds:14h, 0 ; check a flage
code:7CFC                 jz      cant_continue
code:7D00 continue:                           
code:7D00                 mov     ah, 42h
code:7D02                 mov     dl, ds:24h
code:7D06                 push    ss
code:7D07                 pop     ds
code:7D08                 mov     si, sp
code:7D0A                 int     13h
code:7D0C                 pop     eax
code:7D0E                 pop     bx
code:7D0F                 pop     es
code:7D10                 pop     eax
code:7D12                 pop     eax
code:7D14                 pop     ds
code:7D15                 jmp     short exit
code:7D15
code:7D17 ; ---------------------------------------------------------------------------
code:7D17 read_disk_sectors:                    
code:7D17                 xor     edx, edx
code:7D1A                 movzx   ecx, word ptr ds:18h
code:7D20                 div     ecx
code:7D23                 inc     dl
code:7D25                 mov     cl, dl
code:7D27                 mov     edx, eax
code:7D2A                 shr     edx, 10h
code:7D2E                 div     word ptr ds:1Ah
code:7D32                 xchg    dl, dh          ; DH = head
code:7D34                 mov     dl, ds:24h      ; ES:BX -> buffer to fill
code:7D38                 mov     ch, al          ; CH = track
code:7D3A                 shl     ah, 6           ; DL = drive
code:7D3D                 or      cl, ah          ; CL = sector
code:7D3F                 mov     ax, 201h        ; AL = number of sectors to read
code:7D42                 int     13h
code:7D42
code:7D44 exit:   
code:7D44                 jb      cant_continue
code:7D44
code:7D48                 mov     ax, es
code:7D4A                 add     ax, 20h
code:7D4D                 mov     es, ax
code:7D4F                 inc     dword ptr ds:10h
code:7D54                 dec     word ptr ds:0Eh
code:7D58                 jnz     continue_work
code:7D58
code:7D5C                 pop     es
code:7D5D                 pop     ds
code:7D5E                 popad
code:7D60                 retn
code:7D60
code:7D61 ; ---------------------------------------------------------------------------
code:7D61
code:7D61 cant_continue:                    
code:7D61                                        
code:7D61                 mov     al, ds:1F8h
code:7D64                 call    PrintErrorMessage
code:7D64
code:7D67                 mov     al, ds:1FBh
code:7D6A                 call    PrintErrorMessage
code:7D6A
code:7D6D                 sti
code:7D6D
code:7D6E no_end:                                
code:7D6E                 jmp     short no_end
code:7D6E
code:7D6E ReadDiskSectors endp
code:7D6E
code:7D70 ; =============== S U B R O U T I N E =======================================
code:7D70
code:7D70 PrintErrorMessage proc near           
code:7D70                                       
code:7D70                 mov     ah, 1
code:7D72                 mov     si, ax
code:7D72
code:7D74
code:7D74 continue:                           
code:7D74                 lodsb
code:7D75                 cmp     al, 0
code:7D77                 jz      short exit
code:7D77
code:7D79                 mov     ah, 0Eh
code:7D7B                 mov     bx, 7
code:7D7E                 int     10h             
code:7D7E                                         
code:7D80                 jmp     short continue
code:7D80
code:7D82 ; ---------------------------------------------------------------------------
code:7D82 exit:                                 
code:7D82                 retn
code:7D82
code:7D82 PrintErrorMessage endp
code:7D82
code:7D82 ; ---------------------------------------------------------------------------
code:7D83                 db 0Dh, 0Ah
code:7D85 sz_DiskReadError db 'A disk read error occurred',0
code:7DA0                 db 0Dh, 0Ah
code:7DA2 sz_NtldrIsMissing db 'NTLDR is missing',0
code:7DB3                 db 0Dh, 0Ah
code:7DB5 sz_NtldrIsCompressed db 'NTLDR is compressed',0
code:7DC9                 db 0Dh, 0Ah
code:7DCB sz_PressCtrlAltDel db 'Press Ctrl+Alt+Del to restart',0Dh,0Ah,0
code:7DEB                 db 0Dh dup(0), 83h, 0A0h, 0B3h, 0C9h, 2 dup(0), 55h, 0AAh
code:7DEB code          ends
code:7DEB
code:7DEB                 end start
利用winhex查看文件系统裸数据 以及FAT32文件系统:引导扇区(MBR和DBR)、FAT1和FAT2、根目录(即数据区)winhex用于分析文件系统和裸数据(Hex Editor & Disk Editor)工具 --> 打开磁盘 --> 选择磁盘打开。查看 --> 显示 --> 目录浏览器。可以显示SD全部sector的数据。引导扇区(MBR和DBR) 阅读详情

相关推荐

Winhex数据恢复图解教程:MBR与DBR恢复技巧

在IT领域,尤其是在数据恢复和数字取证方面,Winhex是一款功能强大的十六进制编辑器。本章将带您熟悉Winhex的基本界面布局,并对主要功能进行初步的介绍。Winhex的核心功能十分丰富,包括但不限于:- 数据查看:支持查看和编辑硬盘、闪存等存储介质中的数据。- 文件恢复:可以从已删除文件的扇区中恢复数据。- 数据分析:提供多种工具对数据进行分析、校验和搜索。为了演示这些功能,本章接下来将详细介绍如何使用Winhex打开文件、进行基本的编辑操作以及数据的查找和替换。

weixin_31620365的博客 1221

MBR和DBR区分

1. MBR(Main Boot Record  主引导扇区)一图说明一切~~~(●'◡'●)~~~MBR(512B)主引导程序(136B)从活动分区中装载运行系统引导程序出错信息数据区(310B)出错信息全0填充DPT(64B)分区1 (16B)分区2(16B)分区3(16B)分区4(16B)结束标志55 AAPS:MBR大部分时候都在0扇区,但是有时候也不在。2. DBR(分区引导扇区)(1)...

桃子好好吃的博客 6605

winhex中判断 MBR DBR EBR方法

搜索DBR的标志;查找DBR 可以通过搜索本分区的EBR去找DBR

MBR、EBR与DBR详解

demo:https://github.com/Hilaver/NtfsResolution/ 先看一张硬盘图片(一个盘面): MBR 主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。...

Nero Zhang的博客 5万+

STM32Cubemx+CanFestival:从零到一的CANopen移植实战

本文详细介绍了如何使用STM32CubeMX和CanFestival实现CANopen协议栈的移植,从开发环境搭建到核心配置步骤,再到调试与问题排查。通过实战经验分享,帮助开发者快速掌握STM32与CANopen的结合应用,提升嵌入式系统开发效率。

weixin_42558093的博客 421

从零开始的机械臂yolov5抓取gazebo仿真(一)

本文介绍了如何将机械臂模型导出为URDF

qq_48427527的博客 1万+

硬盘(U盘、移动硬盘)MBR、DBR简介

http://819671119.blog.163.com/blog/static/128457552200982433422268/  一、几个概念BIOS(Basic Input/Output System)基本输入输出系统,全称是ROM-BIOS,是只读存储器基本输入/输出系统的简写,它实际是一组被固化到电脑中,为电脑提供最低级最直接的硬件控制的程序。CMOS(Complem

her0z的专栏 3672

GD32F4 Freertos实战:YT8512以太网PHY驱动移植与RMII模式配置详解

本文详细讲解了在GD32F470微控制器上,基于FreeRTOS系统移植YT8512以太网PHY驱动的实战过程。文章重点剖析了RMII时钟模式的选择与配置、PHY地址的正确设置,并针对YT8512芯片的寄存器差异,提供了核心驱动代码的适配方法与调试技巧,帮助开发者顺利完成从官方例程到特定硬件的驱动移植。

weixin_29162439的博客 609

MBR区、DBR区、FAT区、DIR区和DATA区的区别

磁盘上的数据按照其不同的特点和作用大致可分为5部分:MBR区、DBR区、FAT区、DIR区和DATA区。我们来分别介绍一下: (1)MBR区(主引导扇区) MBR(Main Boot Record),按其字面上的理解即为主引导记录区,位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节(偏移0--偏移1BD...

weixin_34295316的博客 385

Keil MDK 5.37及之后版本 安装AC5(ARMCC)编译器详细步骤

由于Keil 5.37及之后版本不再默认安装AC5(ARMCC)编译器,这就会导致由AC5编译的工程无法正常编译,往往输出窗口会提示以下信息:*** Target ‘STM32xxxx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available.

s_Modesto的博客 1万+

OpenOCD入门到精通:第28章 综合实战:RISC-V 调试

RISC-V调试实战摘要 本文介绍了RISC-V调试规范及其在OpenOCD中的实现。主要内容包括: RISC-V Debug规范的两个版本(0.11和0.13)及其差异,OpenOCD通过自动检测DTMCS寄存器版本号选择对应驱动实现。 RISC-V调试架构的分层设计,包含DTM、Debug Module、Program Buffer等核心组件,以及三种内存访问方式(progbuf、sysbus、abstract)。 以GD32VF103为例的实战调试配置,包括硬件连接、OpenOCD配置文件编写和GDB

从事嵌入式linux android驱动开发,拥有全栈能力 285

与NTFS文件系统相关的MBR和DBR的简但分析

<br />本文描述windows系统下已经确定文件系统下的磁盘主引导扇区,文件系统为NTFS。其他操作系统下是否完全相同,暂时不知。<br />MBR以及DBR扇区分析1 MBR<br />MBR全称为Master Boot Record ,俗称为主引导扇区。它是系统运行时第一块加载到内存中的扇区,其结构为:引导程序、磁盘签名、主分区信息和结束标记。每一部分在MBR中所占的位置如下图:<br /><br /><br />图1 MBR扇区结构<br />黑框内为引导程序,绿色框内为磁盘签名,红色框内为结束标

小兔子的专栏 7891

comsol如何实现五厚度的单元模拟?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 471

fat32分析一

日子还是一天一天过,东西还是一点一点学,今天研究了一下fat32,一下为总结 一、简介FAT         FAT及file allocate table,文件分配表,是文件在存储设备上的一种组织形式。 有什么FAT12 、FAT16、FAT32,所谓12 , 16 , 32 指的是表示簇的地址的大小, 好吧,这里可能遇到个问题,啥叫簇,我解释下,一块存储设备,分为n簇,每簇里 有包含

xxu0123456789的专栏 1782

Android功耗系列专题理论之六:外设功耗问题分析方法

本文介绍了移动设备功耗问题的分析方法,重点针对传感器和GPU两大模块。传感器部分详细讲解了通过ADB命令获取日志、状态差异分析和单传感器隔离测试的排查方法,并给出优化建议。GPU部分从基础功耗测量、场景测试到功能模块拆解进行多维度分析。同时阐述了GNSS/GPS功耗的测试方法,包括前后台对比、星座双频拆解及SAP/DPO等特殊功能的电流分析,为移动设备功耗优化提供系统性的诊断思路。

375

C#里使用NModbus来创建一个TCP从站服务

摘要:本文介绍了一个用C#实现的Modbus TCP从站服务器,基于.NET Framework 4.6.1开发。代码使用NModbus库创建TcpListener和ModbusSlaveNetwork,支持设置IP地址、端口号和从站ID。服务器实现了数据存储初始化功能(包括线圈和保持寄存器),并提供了启动/停止操作的UI界面和日志记录功能。该解决方案适用于需要调试Modbus TCP协议的场景,特别适合无法升级到更高版本.NET Framework的环境。

大坡3D软件开发 480

MBR、EBR、DBR是什么

通常情况下可以这样描述这几个概念: MBR:为计算机启动后从可启动介质上首先装入内存并且执行的代码,通常用来解释分区结构。以硬盘为例,通常为LBA的0扇区。 EBR:自MICROSOFT推出扩展分区的概念后,扩展分区就沿用了基本分区所采用的DPT结构,为了加以区别,人们通常把扩展分区的分区表所在的扇区称为EBR、EMBR、扩展MBR或虚拟MBR. DBR:为操作系统进入文件系统以后可以访问的

1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

MBR、DBR、FAT、FAT 各部分简单介绍

文章目录MBR:主引导记录DBR:操作系统引导记录扇区FDT:文件 目录表FAT:文件系统中的文件分配表 MBR:主引导记录 创建时间:由分区软件(Fdisk/PartitionMagic/Windows 2000/Windows XP安装 工具等)给 硬盘分区时建立的。 功能 :存放硬盘分区信息和引导系统时检查分区。 作用范围:MBR和虚拟MBR控制着整个硬盘的所有分区信息,可定义1~4个不等的分区,作用范围是全局性的。 所占硬盘空间大小:占1个扇区 512字节 位于 :硬盘的0柱面,0磁道,1扇区

流楚丶格念的博客 4616

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MBR、DBR、FAT32基础小知识

MBR-------主引导记录 1.创建时间:由分区软件(Fdisk/PartitionMagic/Windows 2000/Windows XP安装 工具等)给 硬盘分区时建立的。 2.功能 :存放硬盘分区信息和引导系统时检查分区。 3.作用范围:MBR和虚拟MBR控制着整个硬盘的所有分区信息,可定义1~4个不等的分区,作用范围是全局性的。 4.所占硬盘空间大小:占1个扇区 512字节 5.位于 :硬盘的0柱面,0磁道,1扇区 6.组成结构:偏移:0~138 引导程序(139字节),检测所有分区。 1

水枂的博客 2064

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

我对硬盘MBR、DBR、BPB、FAT和FDT的理解

 文章来源: http://gliethttp.cublog.cn[转载请声明出处]<br /><br />   硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。<br /> 硬 盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中 “写数据”电流产生磁场使盘片表面磁性物质状

风随影动的专栏 6813

转:MBR、DBR、FAT32基础小知识

MBR-------主引导记录 1.创建时间:由分区软件(Fdisk/PartitionMagic/Windows 2000/Windows XP安装工具等)给硬盘分区时建立的。 2.功能 :存放硬盘分区信息和引导系统时检查分区。 3.作用范围:MBR和虚拟MBR控制着整个硬盘的所有分区信息,可定义1~4个不等的分区,作用范围是全局性的。 4.所占硬盘空间大小:占1个扇区 512字节 5

zhuo_zhibin的专栏 8953

MBR、EBR、DBR

概念:    MBR:为计算机启动后从可启动介质上首先装入内存并且执行的代码,通常用来解释分区结构。以硬盘为例,通常为LBA的0扇区。MBR是主引导记录(Master Boot Record)的缩写。    EBR:自MICROSOFT推出扩展分区的概念后,扩展分区就沿用了基本分区所采用的DPT结构,为了加以区别,人们通常把扩展分区的分区表所在的扇区称为EBR、EMBR、扩展MBR或虚

Rogues的专栏 1964

硬盘MBR,DBR,等数据结构的详细参数

硬盘MBR,DBR,等数据结构的详细参数硬盘主引导扇区 = 硬盘主引导记录(MBR)+ 硬盘分区表(DPT)--------------------------------------------------------------物理位置:0面0道1扇区(clindyer 0, side 0, sector 1)大小: 512字节其中:MBR 446字节(0000

menuconfig的专栏 1377

MBR详解

MBR详解 本文转自:https://yacki.iteye.com/blog/2151006 MBR(Master Boot Record),中文意为主引导区记录,位于整个硬盘的0柱面0磁道1扇区,共占用了63个扇区,但实际只使用了1个扇区(512字节)。 在总共512字节的主引导记录中,MBR又可分为三部分:第一部分为pre-boot区(BOOTLOADER引导程序),占446字节...

知识搜集 5232

主引导扇区(MBR),分区表(DPT)及活动分区(DBR)

主引导扇区:硬盘的0柱面、0磁头、1扇区(也叫主引导记录MBR),大小为512Byte。 分区表(DPT):位于主引导分区,从偏移01BEH开始到偏移01FDH结束的64字节。 活动分区DBR:DBR(DOS BOOT RECORD,原意为DOS引导记录),位于柱面0,磁

Yes_life的专栏 4889
上一篇: 注释PEMaker6源代码(一)
下一篇: 注释PEMaker6源代码(三)
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值