理解文件系统。你必须要熟悉DBR,下面我们就来看看文件系统解析DBR数据。

Dos Boot Record(DBR)操作系统引导记录是由操作系统的格式化程序建立的。在文件系统驱动操作不论什么一个磁盘卷时,这一部分的信息将被读取并作为文件系统在这个磁盘卷上的參数被使用。它包括了有效的引导程序、厂商标志、BPB数据块等。

1.那么怎么得到DBR呢?它位于分区的第一个扇区。而分区的地址能够从磁盘的第一个分区的分区表项中获得。

详细可參考http://blog.csdn.net/liyun123gx/article/details/38420665

2.分析本扇区数据

以下是一个FAT文件系统的DBR的信息

(注意 数据以小端格式存储的)

0x01~0x02:      3个字节。跳转指令。

跳转到DBR后面一点的引导程序处。引导程序是一段用来载入真正操作系统的程序。

0x03~0xA:        8个字节,OEM串。本例中是MSDOC5.0

0X0B~0X0C:     2个字节,每扇区的字节数。

本例是0X0200,512

0X0D                1个字节,每簇的扇区数。

本例是0x8

0X0E~0X0F:     2个字节,保留扇区数。本例是0x0026

0X10:             1个字节,FAT表个数。本例是0x02

0X11~0X12:   2个字节。根文件夹最多可容纳的文件夹项数。FAT12和FAT16通常为512,FAT32不使用此值,为0.本例中是FAT32,所以为0.

0X13~0X14:   2个字节,扇区总数。

小于32MB时使用该处存放,超过32MB的使用偏移0x20~-x23字节处的4字节存放。

本例中磁盘为7G多,故为0.

0X15:            1个字节,介质描写叙述。

本例中0XF8表示本地硬盘。

0X16~0X17:   2个字节。每一个FAT表的扇区数。相同。FAT32不使用,为0.

0X18~0X19:   2个字节,每一个磁道的扇区数。

本例是0X3F,63

0X1A~0X1B:     2个字节,磁头数。本例是0XFF,255

0X1C~0X1F:     4个字节。分区前已经使用的扇区数,隐藏扇区数。本例是 0X 00 00 00 3F,63

0X20~0X23:   4个字节,文件系统扇区数。本例是 0X00 EA 58 78,15358072

0X24~0X27:   4个字节,每一个FAT表的扇区数。本例是 0X00 00 3A 79。14969

0X28~0X29:   2个字节,标记。

0x2A~0x2B:    2个字节,版本。

0x2C~0x2F:    4个字节。根文件夹簇号,2。(尽管在FAT32文件系统下。根文件夹能够存放在数据区的不论什么位置,可是通常情况下还是起始于2号簇)

0x30~0x31:     2个字节,FSINFO(文件系统信息扇区)扇区号。1。该扇区为操作系统提供关于空簇总数及下一可用簇的信息。

0x32~0x33:     2个字节,备份引导扇区的位置。6。

备份引导扇区总是位于文件系统的6号扇区。

0x34~0x3F:     12个字节。未使用。

0x40~0x40:     1个字节,BIOS INT 13H 设备号,0x80。

0x41~0x41:     1个字节,未用。

0x42~0x42:     1个字节。扩展引导标志。0x29。

0x43~0x46:     1个字节,卷序列号。通常为一个随机值。

0x47~0x51:     11个字节,卷标(ASCII码)。假设建立文件系统的时候指定了卷标,会保存在此。本例中是NO NAME

0x52~0x59:     8个字节。文件系统格式的ASCII码,FAT32。

0x5A~0x1FD:  410个字节,未使用。

该部分没有明白的用途。

0x1FE~0x1FF: 签名标志“55 AA”。

3.FSINFO信息扇区

FSINFO一般位于文件系统的1号扇区。就是DBR的下一个扇区。它用来记录文件系统中空暇簇的数量以及下一可用簇的簇号等信息。

以下介绍一下FSINFO的结构

0x00~0x03:          4个字节,扩展引导标志“52526141”。

0x04~0x1E3:    480个字节,未使用,所有置0。

0x1E4~0x1E7: 4个字节,FSINFO签名“72724161”。

0x1E8~0x1EB: 4个字节,文件系统的空簇数。41207688(0x00 12 6D 88)。

0x1EC~0x1EF: 4个字节。下一可用簇号,663(0x00 00 02 97)。

0x1F0~0x1FD: 14个字节,未使用。

0x1FE~0x1FF: 2个字节,“55 AA”标志。

注意:通常情况下,文件系统的2号扇区结尾也会被设置“55 AA”标志。6号扇区也会有一个引导扇区的备份,对应的,7号扇区应该是一个备份FSINFO信息扇区。8号扇区能够看做是2号扇区的备份,它的结尾也会有一个“55 AA”标志。

4.以下是一个NTFS文件系统的DBR

0x01~0x02:      3个字节。跳转指令。

0x03~0xA:        8个字节。文件系统的字符串。

本例中是NTFS

0X0B~0X0C:     2个字节,每扇区的字节数。本例是0X0200,512

0X0D                1个字节,每簇的扇区数。本例是0x8

0X0E~0X0F:      2个字节。保留扇区数。本例是0x0000

0X10~0X13:   4个字节。未使用

0X15:            1个字节,介质描写叙述。本例中0XF8表示本地硬盘。

0X16~0X17:   2个字节,总为0.

0X18~0X19:   2个字节,每一个磁道的扇区数。本例是0X3F,63

0X1A~0X1B:     2个字节。每一个柱面的磁头数。

本例是0XFF,255

0X1C~0X1F:      4个字节,隐含扇区数。本例是 0X 0C 81 98 00,209819648

0X20~0X23:    4个字节,未使用

0X24~0X27:    4个字节,未使用。一般都为0X80 00 80 00

0X28~0X2F:    8个字节,该分区的扇区数。

本例为0X00 00 00 00 19 01 8F FF,419532799

0x30~0x37:     8个字节,$MFT的起始逻辑簇号。本例为0X00 00 00 00 00 0C 00 00

0x38~0x3F:     8个字节。$MFTMirr(MFT文件的镜像文件)的起始逻辑簇号。本例为0X00 00 00 00 00 00 00 02

0x40~0x43:     4个字节。每一个MFT记录所占的簇数。

本例中为0XF6 00 00 00

0x44~0x47:     4个字节,每索引簇数,通常每索引簇数为1个簇。

本例为0X00 00 00 01

0x48~0x4F:     8个字节。分区的逻辑序列号。这个序列号是硬盘格式化时随机产生的。本例为0X14 A2 8F A3 A2 8F 87 C6

0x50~0x53:     4个字节,校验和。

为0X00 00 00 00 00

0x54~0x1FD:   426个字节,自举代码

0x1FE~0x1FF:     结束标志

版权声明:本文博客原创文章,博客,未经同意,不得转载。

解析DBR操作系统引导记录数据的更多相关文章

  1. Gson解析复杂的json数据

    最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的json解析方法即JsonObject ...

  2. Fresco源码解析 - DataSource怎样存储数据

    Fresco源码解析 - DataSource怎样存储数据 datasource是一个独立的 package,与FB导入的guava包都在同一个工程内 - fbcore. datasource的类关系 ...

  3. 【翻译】《深入解析windows操作系统第6版下册》第10章:内存管理

    [翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第一部分) [翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第二部分) [翻译] ...

  4. 使用Gson解析复杂的json数据

    Gson解析复杂的json数据 最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的jso ...

  5. C#解析json和xml数据

    C#解析json和xml数据 // 用到的包using Newtonsoft.Json; // using Newtonsoft.Json.Linq; const string value = &qu ...

  6. Gson解析第三方提供Json数据(天气预报,新闻等)

    之前都是自己写后台,自己的server提供数据给client. 近期在看第三方的数据接口,訪问其它站点提供的信息.比方.我们可能自己收集的数据相当有限.可是网上提供了非常多关于天气预报.新闻.星座运势 ...

  7. 解析Linux操作系统文件目录

    解析Linux操作系统文件目录 随着Linux的不断发展,越来越多的人开始使用Linux,对于那些刚刚接触的人来说,恐怕最先感到困惑的就是那些“不明不白”的目录了.如果想熟练使用Linux,让Linu ...

  8. 解析form表单数据

    //解析form表单数据 function parseFormData(params) { var args = new Object(); for(var key in params){ if(!p ...

  9. 【H.264/AVC视频编解码技术具体解释】十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据

    <H.264/AVC视频编解码技术具体解释>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战project的形式对H.2 ...

随机推荐

  1. TestComplete实测Flex

    1.TestComplete提供了已经编译好的Flex界面,可以直接使用: http://support.smartbear.com/samples/testcomplete9/flex/orders ...

  2. JavaScript 中的事件类型4(读书笔记思维导图)

    Web 浏览器中可能发生的事件有很多类型.如前所述,不同的事件类型具有不同的信息,而“ DOM3级事件”规定了以下几类事件. UI(User Interface,用户界面)事件:当用户与页面上的元素交 ...

  3. Android架构设计和软硬整合完整训练

    Android架构设计和软硬整合完整训练 Android架构设计和软硬整合完整训练:HAL&Framework&Native Service&Android Service&a ...

  4. 2014最新SSH框架面试题大收集

    (1)Hibernate工作原理及为什么要用? 原理:  1.读取并解析配置文件  2.读取并解析映射信息,创建SessionFactory  3.打开Sesssion  4.创建事务Transati ...

  5. ImportError: No module named _sqlite3 - 代码分享

    ImportError: No module named _sqlite3 - 代码分享 ImportError: No module named _sqlite3 作者:86市场网       点击 ...

  6. OC -- 第一个类

    OC -- 第一个类 类名:Car 属性:轮胎个数.时速 行为:跑 完整写一个类:类的声明和实现 1.    类的声明 代码: // NSObject 再Foundation框架中 #import & ...

  7. HttpMime 处理 多部件 POST 请求

    HttpMime 处理 多部件 POST 请求 在有的场合例如我们要用到上传文件的时候,就不能使用基本的GET请求和POST 请求了,我们要使用多部件的POST请求.由于Android 附带的 Htt ...

  8. HDU 1164 Eddy&#39;s research I【素数筛选法】

    思路:将输入的这个数分成n个素数的相乘的结果,用一个数组存储起来.之后再输出就能够了 Eddy's research I Time Limit: 2000/1000 MS (Java/Others)  ...

  9. Unity3D开发一个2D横版射击游戏

    教程基于http://pixelnest.io/tutorials/2d-game-unity/ , 这个例子感觉还是比较经典的, 网上转载的也比较多. 刚好最近也在学习U3D, 做的过程中自己又修改 ...

  10. linux查看某个进程CPU消耗较高的具体线程或程序的方法

      目前我们的监控,可以发现消耗较高CPU的进程(阀值为3个CPU),通过监控我们可以找到消耗较高CPU的进程号: 通过进程号pid,我们在linux上可以通过top –H –p <pid> ...