Linux文件系統分析之一(工具與方法)

這裏的分析有別於一般書上講的Linux文件系統分析,主要區別是:這裏的分析與其說是文件系統分析倒不如說是Linux磁盤映象的分析,

首先從獲取磁盤映象開始,然後分析磁盤映象的結構,內核文件系統部分的代碼無非就是對磁盤映象的管理罷了。
    依據讀源代碼的體會,Linux文件系統實現可以看作三個部分:用戶眼中的文件系統,內存中的文件系統,磁盤上的文件系統。用戶眼中

的文件系統是指open,read等系統調用的實現以及目錄樹狀結構的實現,內存中的文件系統是指緩衝管理,VFS等開機mount後在內存中出現的

文件系統,而磁盤上的文件系統就是指磁盤映象。這裏的分析主要着重在第三部分,即磁盤映象。
    首先就是磁盤映象的獲取,最簡單的方法就是使用dd命令:dd if=/dev/hda of=/home/lw/hda.dd bs=2k。這個命令把hda上的文件系統磁

盤映象全部複製到hda.dd文件中,這個命令執行需要的時間主要取決於hda磁盤的大小,bs參數表示每次讀些的單元大小,一般設爲2k,8k都

行,效率上會有些細微的區別。接下來就對hda.dd文件進行分析就可以了。由於這個文件一般都很大,二進制閱讀工具運行起來會很慢,所以

最好還是建立一個軟盤ext2文件系統,然後進行分析。當然還有其他的方法:直接拷貝虛擬機磁盤映象來分析。
    下面的分析是使用軟盤上建立的文件系統,然後dd倒出來的rootimage文件來分析磁盤映象。讓我們先來看看第一個扇區的內容
00000000h: EB 3C 90 4D 53 44 4F 53 35 2E 30 00 02 01 01 00 ; ?怣SDOS5.0.....
00000010h: 02 E0 00 40 0B F0 09 00 12 00 02 00 00 00 00 00 ; .?@.?.........
00000020h: 00 00 00 00 00 00 29 57 23 8D 0E 20 20 20 20 20 ; ......)W#?     
00000030h: 20 20 20 20 20 20 46 41 54 31 32 20 20 20 FA 33 ;       FAT12   ?
00000040h: C0 8E D0 BC 00 7C 16 07 BB 78 00 36 C5 37 1E 56 ; 缼屑.|..粁.6?.V
00000050h: 16 53 BF 3E 7C B9 0B 00 FC F3 A4 06 1F C6 45 FE ; .S?|?.?.艵?

00000060h: 0F 8B 0E 18 7C 88 4D F9 89 47 02 C7 07 3E 7C FB ; .?.|圡鶋G.?>|?

00000070h: CD 13 72 79 33 C0 39 06 13 7C 74 08 8B 0E 13 7C ; ?ry3?..|t.?.|
00000080h: 89 0E 20 7C A0 10 7C F7 26 16 7C 03 06 1C 7C 13 ; ? |?|?.|...|.
00000090h: 16 1E 7C 03 06 0E 7C 83 D2 00 A3 50 7C 89 16 52 ; ..|...|円.|?R
000000a0h: 7C A3 49 7C 89 16 4B 7C B8 20 00 F7 26 11 7C 8B ; ||?K|?.?.|?

000000b0h: 1E 0B 7C 03 C3 48 F7 F3 01 06 49 7C 83 16 4B 7C ; ..|.肏黧..I|?K|
000000c0h: 00 BB 00 05 8B 16 52 7C A1 50 7C E8 92 00 72 1D ; .?.?R||钂.r.
000000d0h: B0 01 E8 AC 00 72 16 8B FB B9 0B 00 BE E6 7D F3 ; ?瓔.r.孄?.炬}?

000000e0h: A6 75 0A 8D 7F 20 B9 0B 00 F3 A6 74 18 BE 9E 7D ; .? ?.螃t.緸}
000000f0h: E8 5F 00 33 C0 CD 16 5E 1F 8F 04 8F 44 02 CD 19 ; 鑏.3勞.^.?廌.?
00000100h: 58 58 58 EB E8 8B 47 1A 48 48 8A 1E 0D 7C 32 FF ; XXX腓婫.HH?.|2?BR>00000110h: F7 E3 03 06 49 7C 13 16 4B 7C BB 00 07 B9 03 00 ; 縻..I|..K|?.?.
00000120h: 50 52 51 E8 3A 00 72 D8 B0 01 E8 54 00 59 5A 58 ; PRQ?.r匕.鑄.YZX
00000130h: 72 BB 05 01 00 83 D2 00 03 1E 0B 7C E2 E2 8A 2E ; r?..円....|忖?
00000140h: 15 7C 8A 16 24 7C 8B 1E 49 7C A1 4B 7C EA 00 00 ; .|?$|?I||?.
00000150h: 70 00 AC 0A C0 74 29 B4 0E BB 07 00 CD 10 EB F2 ; p.?纓)??.?腧
00000160h: 3B 16 18 7C 73 19 F7 36 18 7C FE C2 88 16 4F 7C ; ;..|s.?.|?O|
00000170h: 33 D2 F7 36 1A 7C 88 16 25 7C A3 4D 7C F8 C3 F9 ; 3吟6.|?%||?

00000180h: C3 B4 02 8B 16 4D 7C B1 06 D2 E6 0A 36 4F 7C 8B ; 麼.?M|?益.6O|?

00000190h: CA 86 E9 8A 16 24 7C 8A 36 25 7C CD 13 C3 0D 0A ; 蕟閵.$|?%|??.
000001a0h: 4E 6F 6E 2D 53 79 73 74 65 6D 20 64 69 73 6B 20 ; Non-System disk 
000001b0h: 6F 72 20 64 69 73 6B 20 65 72 72 6F 72 0D 0A 52 ; or disk error..R
000001c0h: 65 70 6C 61 63 65 20 61 6E 64 20 70 72 65 73 73 ; eplace and press
000001d0h: 20 61 6E 79 20 6B 65 79 20 77 68 65 6E 20 72 65 ;  any key when re
000001e0h: 61 64 79 0D 0A 00 49 4F 20 20 20 20 20 20 53 59 ; ady...IO      SY
000001f0h: 53 4D 53 44 4F 53 20 20 20 53 59 53 00 00 55 AA ; SMSDOS   SYS..U
這個塊稱爲引導塊,注意最後的55AA就是許多書上講Linux啓動時所謂的引導標誌了,沒有其它的內容可以分析的了。
接下來,我將對這個磁盤映象一個扇區一個扇區地分析了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章