由於美國國安局開發的EQUATION病毒會修改硬碟韌體
https://www.antiy.com/response/EQUATION_ANTIY_REPORT.html
還有市面上充斥著WD硬碟修改通電時間軟體.
WD 硬碟到後期時,就鎖住無法執行ATA Vendor Command(工廠指令).防止上述修改
但同樣的也會妨礙對硬碟做資料救援處理.就要繞過這樣保護機制.
其原理可能是
1.MCU 內microcode不同(需使用jtag修改)
2.外部EEPROM ROM 執行碼不同
翻譯此文在思考其思路.
常用字眼講解:
服務區 (Service Area) 存放硬碟碟片上的韌體區.意味者 電路版上沒有完整的韌體程式碼.
模塊(Module) 韌體區有分類好的區域.有時為匹配參數 .有時有程式碼.有在碟片上的也有在ROM上.
本原文出自於ACELab Blog
https://blog.acelaboratory.com/wd-smr-how-to-unlock-palmer-sata-pcb-and-use-it-for-future-unlocks.html
現在越來越多的 Palmer家族 SMR硬碟,都被SED鎖定(無法執行工廠指令集與安全防護),並且當服務區模塊損壞或數據不可用時,我們必須使用特殊的未鎖定SATA PCB才能訪問並修復韌體。
最簡單的方法是直接從中國購買這種PCB,但是這種解鎖的PCB的價格很高。此外,有時由於錯誤的焊接過程或太多的ROM重寫,未鎖定的PCB可能變得無法操作。有必要購買這種PCB嗎?讓我們在下面的文章中對此進行討論。
PC-3000具有製作未鎖定PCB的功能,並在將來用於解鎖其他Palmer家族硬碟,從而保持原始未鎖定PCB完整。主要思想是獲取損壞硬碟碟片服務區,保存所有服務區模塊,然後將這些模塊用於解鎖ROM重建。為此,我們需要:
- 在PC-3000便攜式 / 快速 / UDMA版本6.7或更高版本;
- 編程器設備;
- 烙鐵(可選帶熱風槍);
- 解鎖專用的PCB
第一次,我們必須將解鎖板PCB(在此步驟中保持ROM不更換為原故障資料硬碟的)鎖在到我們故障硬碟(已被SED鎖住):
並運行PC-3000 WDC Marvell Utility。該驅動器被自動檢測為Palmer系列。像通常一樣進行ROM備份。
如果嘗試上傳Module Dir跟加載LDR,會收到這錯誤:
靜態模塊讀取錯誤檢測到設備錯誤:“ VSC ERR INV FUNC CODE REQ”
首先,我們可以檢查是否可以看到模塊90。為此,我們執行 Service Area->View module 90 information(使用服務區”->“查看模塊90”信息),
如果磁頭狀況OK,我們將在主日誌中看到一條消息:
View module 90 information
Total heads……………………….. : 2
Used heads………………………… : 2
Mdl 47 version…………………….. : 1007bI72
ROM Version version………………… : 00050006 (05.06)
Mdl 11 Version…………………….. : 00050006 (05.06)
所以我們的磁頭狀況不錯。
準備重建ROM
讓我們轉到 Tools->Utility extensions->ROM build from SA data (工具”->“實用程序擴展”->“根據SA數據構建ROM”_。在這裡,我們必須按“ 從HDD ROM讀取”按鈕
並選擇代碼部分複選框。這樣,我們將從解鎖板中的供體ROM中獲得ROM程式碼。
接下來,我們按“ 從HDD SA讀取”按鈕
然後選擇ROM模塊 這樣,我們將從資料硬碟碟片上service area獲得ROM匹配。
並合成產新的完整ROM ,保存到文件
然後使用“使用ROM->寫入ROM”將新ROM寫入HDD ,然後重新啟動驅動器。下一步,我們需要將兼容的加載程序加載到HDD RAM中,以訪問模塊。
驅動器獲得部分-XYZ- ID,現在我們可以檢查是否可以通過ID訪問模塊。為此,我們轉到工具->實用程序擴展->查看和編輯硬盤資源,“模塊”選項
如果ID無法讀取模塊109(或任何其他模塊),則問題可能出在ROM 的20B 模塊被啟用,因此我們必須再建立一20B不啟用的完整ROM。
在同一ROM構建窗口中,我們按“ 從HDD SA讀取”按鈕,然後選擇20B作為不啟用
然後按一下[ 編輯]按鈕,檢查20B是否良好
再次構建ROM,保存並重新啟動驅動器
檢查模塊109再次通過ID讀取,不需要加載程序上傳。如果可讀,則需要將其保存到文件中。
因此,由於服務區現在是可讀的,並且我們選擇了正確的Flash目錄20B,因此我們可以繼續使用模塊109在ROM中重建代碼段。
請注意ROM程式碼:它現在是準備根據109 Module重建的。
寫入新的ROM並重新啟動驅動器。它以完整的ID和LBA訪問權開頭:
這意味著我們已成功恢復了正確ROM,並且可以此ROM寫入原來被鎖定的SATA PCB。
接下來,我們轉到原始的SED鎖定PCB。我們需要先拆解ROM芯片
然後,我們將故障硬碟芯片放入編程器設備並讀取以進行備份。DUMP保存到bin文件中。
現在是時候將新的患者ROM寫入原始的患者PCB了。因此,我們使用先前保存的BIN文件做ROM寫入。
將具有恢復後的ROM的患者PCB連接到PC-3000,啟動WDC Marvell實用程序,然後檢查硬碟是否具有完整ID跟資料訪問權限。從這一刻起,我們不需要解鎖PCB。
但是,如何使用我們新的未鎖定SATA PCB來解鎖另一個SED鎖定的Palmer驅動器?
- 將之前獲得的未鎖定SATA PCB連接到新的已鎖定Palmer HDA。
- 像我們第一次進行ROM恢復一樣,從備份還原ROM。
- 解開病人的ROM芯片,進行備份,並使用編程器設備寫入新的恢復的ROM。
- 將ROM焊接到其先前鎖定的原始PCB上,將驅動器連接到PC-3000,從而可以完全訪問服務區和數據。
請注意,此過程僅適用於Palmer驅動器。其他鎖定驅動器具有另一種ROM結構以及出廠時設置的其他模塊,因此該ROM恢復技巧不起作用。
OSSLab結語:
1.此法太複雜 .所以正常資料救援建議還是買解鎖板直接換ROM就可
2.無修改過的EEPROM ROM.只能搭配MCU解鎖的電路板才可執行工廠指令
3.若PCB上MCU無解鎖,則電路的上ROM要從原碟片上109模塊做 code 跟匹配一起提取,才可執行工廠指令
4.從這篇可看出WD對於工廠指令控制在MCU上跟ROM上都有