談?wù)凴EFS文件系統(tǒng)恢復(fù)研發(fā)經(jīng)歷(1)

作為80后技術(shù)員, 我一直很喜歡李玟, 是我們那個(gè)時(shí)代的偶像, 一直也很喜歡聽他的歌, 看到她的噩耗, 還是很那么的無法理解, 一個(gè)那么好的人怎么會(huì)得抑郁癥呢, 心里多少還是無法接受. 不過聯(lián)想到自己的工作,多少次也都是在被技術(shù)難題折磨的快要到抑郁癥犯的邊緣上.?
作為數(shù)據(jù)恢復(fù)行業(yè)的從業(yè)者, 行業(yè)的技術(shù)發(fā)展實(shí)在是太快了, 幾乎每年都會(huì)有新的技術(shù)出現(xiàn), 無論是文件系統(tǒng)還是數(shù)據(jù)庫等等, 每年都在推陳出新, 老舊的技術(shù)會(huì)被直接拋棄, 絕非是在原有技術(shù)上進(jìn)行改良, 作為數(shù)據(jù)恢復(fù)產(chǎn)品作者, 你必須得更上這種升級(jí)速度, 而且前面對(duì)所有老舊技術(shù)的付出基本上算是白搞, 因?yàn)殡S著時(shí)間的發(fā)展, 這些老舊的技術(shù)會(huì)類似winxp系統(tǒng)一樣淹沒在歷史的潮流中.
在現(xiàn)如今的三大操作系統(tǒng)windows, linux, mac os現(xiàn)在分別對(duì)應(yīng)的最新的文件系統(tǒng)有refs, zfs, btrfs, apfs, 這些我都在產(chǎn)品中做了支持, 底層技術(shù)在我看來基本大同小異.? 做這幾個(gè)文件系統(tǒng)的恢復(fù)以及解析結(jié)束讓我吃盡苦頭,? 他們與上一代文件系統(tǒng)存儲(chǔ)技術(shù)是如此的不同, 上一代的文件系統(tǒng)結(jié)構(gòu)例如fat, ntfs, ext234, ufs等等, 他們是如此的百花齊放, 個(gè)性分明, 你不太容易找到他們的共同點(diǎn), 他們充斥著各種奇怪的結(jié)構(gòu)和設(shè)計(jì)理念.
但是新一代的文件系統(tǒng)我能夠明顯的感覺到他們?cè)絹碓酵|(zhì)化發(fā)展, 我雖然不敢保證他們彼此之間有互相抄襲, 但是我覺得至少在架構(gòu)思路上互相彼此都在借鑒.?

?這次讓我吃盡苦頭的文件系統(tǒng)是refs, 作為新一代的桌面系統(tǒng)的文件系統(tǒng), 我本以為他會(huì)跟apfs更加類似, 因此在查閱相關(guān)資料后, 我很就對(duì)refs的結(jié)構(gòu)進(jìn)行解析, 并且對(duì)相關(guān)數(shù)據(jù)進(jìn)行定位, 剛開始的途中一直沒有發(fā)現(xiàn)有什么問題. 并且說實(shí)話, 因?yàn)樽隽颂嗟臄?shù)據(jù)庫結(jié)構(gòu)分析, 我很明顯感覺到了, 他的MSB+ page結(jié)構(gòu)是如此的類似于sql 的頁面結(jié)構(gòu). 所以剛開始的時(shí)候, 我輕車熟路的一路分析下去. MSB+ page結(jié)構(gòu)大致如圖:
根據(jù)下圖的結(jié)構(gòu), 可以從data area結(jié)構(gòu)中提取到數(shù)據(jù)或者是REF參數(shù)跳轉(zhuǎn)到子頁面中提取數(shù)據(jù).
?

根據(jù)下圖的結(jié)構(gòu), 解析當(dāng)我分析到checkpointer為止, 我都沒有遇到問題. 直到到了object id table結(jié)構(gòu), 我遇到了前所未有的障礙. 居然找不到正確結(jié)構(gòu)的MSB+了.?

未完待續(xù)...