Skip to main content

由於美國國安局開發的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重建。為此,我們需要:

  • 烙鐵(可選帶熱風槍);

 

  • 解鎖專用的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上都有

 

Thx Chang

Author Thx Chang

More posts by Thx Chang