理解文件系統。你必須要熟悉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: ? ? 結束標志
版權聲明:本文博客原創文章,博客,未經同意,不得轉載。