「邏輯鎖」並非硬體加密,而是惡意修改主引導記錄 (MBR) 分區表指標,導致 DOS/Windows 9x 啟動時陷入邏輯分區遞迴死循環。本文深度剖析其運作機制,提供 **DEBUG 手動修復分區表(保留數據)** 與 **DM 工具繞過 BIOS 重分區(數據全失)** 兩種解鎖方案,並附完整指令碼。
標準 MBR 結構(LBA 0,偏移 0x1BE 起 64 位元組):
邏輯鎖手法:將第 2 項「擴展分區起始 LBA」指向**自身 EBR 位址**,並將該 EBR 的「下一個邏輯分區指標」同樣指向自己。系統啟動時遍歷分區鏈表:讀取主分區 → 讀取擴展分區 EBR → 發現下一個 EBR 指向自己 → 死循環 → 無法掛載任何邏輯磁碟機,甚至軟碟/光碟啟動後仍無法存取硬碟(INT 13h 掃描流程同樣受阻)。
IO.SYS 啟動時會掃描所有邏輯磁碟機,陷入死循環。修改法:
A:\>DEBUG -A 100 xxxx:0100 MOV AX, 0201 ; 讀取 1 扇區 xxxx:0103 MOV BX, 0500 ; 緩衝區段:偏移 0500:0000 xxxx:0106 MOV CX, 0001 ; 扇區數 xxxx:0109 MOV DX, 0080 ; 驅動器 0 (第一顆硬碟) xxxx:010C INT 13 ; BIOS 磁碟服務 xxxx:010E INT 20 ; 返回 DOS xxxx:0110 -G ; 執行 -D 500 ; 查看 0500:0000 緩衝區內容
在 0500:01BE (即 06BE) 起查看 4 項分區記錄。尋找「類型 0x05/0x0F」且「起始 LBA 指向自身 EBR」的項目——即為邏輯鎖植入點。
-E 6BE ; 進入編輯模式,地址 06BE (第一分區項)
06BE: 80 01 01 00 06 ... (按空格跳過正常主分區項)
06CE: 00 01 01 00 05 XX YY ZZ WW ... (第二項:擴展分區)
^^^^^^^^^^^^^^^^^ 起始 CHS / 類型 / 結束 CHS / 起始 LBA (4 bytes) / 扇區數 (4 bytes)
將該項「起始 LBA」四位元組(XX YY ZZ WW)全部改為 `00 00 00 00`,**或改為正確的 EBR 真實 LBA**(需先用 PTEDIT/PQMAGIC 掃描得知真實位置)。保留結尾 `55 AA`(偏移 0x1FE)。
-A 100 xxxx:0100 MOV AX, 0301 ; 寫入 1 扇區 xxxx:0103 MOV BX, 0500 xxxx:0106 MOV CX, 0001 xxxx:0109 MOV DX, 0080 xxxx:010C INT 13 xxxx:010E INT 20 -G -Q
退出 DEBUG,執行 `FDISK /MBR` 重寫啟動代碼區(不動分區表),重開機即可恢復正常掛載。
適用於不需保留數據、或方案一失敗時的終極手段。原理:DM (Disk Manager) 為 Ontrack 開發的磁碟管理工具,**不依賴 BIOS INT 13h 掃描**,直接透過 I/O 埠操作硬碟控制器,故能識別被 BIOS 設為 NONE 或邏輯鎖干擾的硬碟。
邏輯鎖看似棘手,實則是利用 DOS 時代分區掃描演算法的缺陷。掌握 MBR 結構與 DEBUG/工具操作,即可從容化解。但切記:**任何磁碟結構修改前,務必先完整備份重要數據**——這才是永遠不敗的鐵律。