首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

深入探討硬碟邏輯鎖的製作與解鎖實戰

     編輯:關於C語言
 

前言

因教學需求,筆者參閱了《電腦報》98年第4期《硬碟邏輯鎖技術研究及應用》與99年第3期《解開硬碟邏輯死鎖的一種有效方法》兩篇文章,嘗試以同類方法實作,但未獲成功。又苦於手邊沒有 KV300 L++ 版工具,只能自行設計一套硬碟邏輯鎖。經多次實驗發現,單純建立循環鏈表並不足以鎖住硬碟,必須結合分區類型修改才能生效。以下總結一套經實測可行的加鎖與解鎖流程,供參考。硬碟邏輯鎖的基本原理請參考上述文章。

製作前的準備工作

首先備份硬碟的主引導記錄(MBR,即 0 磁頭 0 柱面 1 扇區)到軟碟,以便失敗時恢復。筆者使用的是 Quantum SE 3.2GB 硬碟(C 槽 2.1GB,D 槽 1.1GB),將 MBR 存放在軟碟的 0 磁頭 0 柱面 2 扇區。

C:/DOS> DEBUG
-a 100
mov ax,201
mov bx,200
mov cx,1
mov dx,80
int 13          ; 讀硬碟 MBR 到 ES:200
mov ax,301
mov bx,200
mov cx,2
mov dx,0
int 13          ; 寫入軟碟第 2 扇區
int 3

接著製作一張「啟動盤 1」,用於日後恢復 MBR:

-a 200
mov ax,201
mov bx,2000
mov cx,2
mov dx,0
int 13          ; 讀軟碟備份內容到 ES:2000
jb 200
mov ax,301
mov bx,2000
mov cx,1
mov dx,80
int 13          ; 寫回硬碟 MBR
jmp ffff:0000   ; 重啟
-w 200 0 0 1    ; 寫入軟碟 0 磁頭 0 柱面 1 扇區,成為啟動盤 1

製作硬碟邏輯鎖

先查看硬碟分區表資訊(以下為實例,實際段地址可能不同):

C:/DOS> DEBUG
-a100
1186:0100 mov ax,201
1186:0103 mov bx,200
1186:0106 mov cx,1
1186:0109 mov dx,80
1186:010C int 13
1186:010E int 3
-g=100
-d 3b0 L 50

分區表關鍵字節說明:

  • 03C2 位元組:分區類型(06 為 FAT16 >32MB,02 為 XENIX)
  • 03D0 起始扇區/柱面號

修改步驟:

  1. 將 C 槽分區類型 06 改為 02(XENIX):-e 3c2 02
  2. 將 D 槽起始扇區/柱面號改為與 C 槽相同,形成循環鏈表:-e 3d0 01 00
  3. 將修改後的分區表寫回硬碟 MBR:-a 100 / mov ax,301 / -g=100
  4. 驗證修改結果:-d 3b0 L 50 確認 03C2 已變 02,且 D 槽起始位址與 C 槽一致。

重啟後,軟碟、硬碟均無法啟動系統,鎖定成功。

症狀分析

  1. 僅修改 C 槽分區類型為 02:硬碟無法啟動,軟碟可啟動。
  2. 僅建立循環鏈表:Win95/98 無法啟動,但 DOS 6.22 可啟動,並出現 24 個相同容量的邏輯磁碟機(C 到 Z),提示「Warning: Logical drives past Z exist and will be ignored」。循環鏈表對 DOS 6.22 啟動無效,但能讓 FDISK 死機。
  3. 兩者結合:C 槽、A 槽的 DOS 6.22 均無法啟動,但可用 DOS 3.3 啟動軟碟,進入後可用 FDISK 或 DEBUG 修復分區表(不受 33MB 限制)。

結論:硬碟邏輯鎖僅針對高版本 DOS/Windows 有效,對 DOS 3.3 無效;循環鏈表對 Win95/98 的 DOS 已生效。

解鎖方法

修改 CMOS 參數無法解開此鎖,需在另一台電腦製作「啟動盤 2」:

C:/DOS> DEBUG
-a 100
mov ax,201
mov bx,2000
mov cx,1
mov dx,80
int 13          ; 讀硬碟 MBR 到 ES:2000
mov al,06
mov [21c2],al   ; 將 C 槽分區類型改回 06
mov al,0
mov [21d2],al   ; D 槽類型改 0(屏蔽)
mov [21e2],al   ; E 槽類型改 0(破壞循環鏈)
mov [21f2],al   ; F 槽類型改 0
mov ax,301
mov bx,2000
mov cx,1
mov dx,80
int 13          ; 寫回硬碟
jmp ffff:0000
-w 100 0 0 1    ; 寫入軟碟 0 扇區,成為啟動盤 2

用啟動盤 2 啟動被鎖電腦,取出軟碟後再啟動 DOS 6.22,即可用 Norton DiskEdit 或 DEBUG 修復分區表。若有啟動盤 1(備份 MBR),直接啟動即可一鍵恢復。


通訊地址:430062 湖北大學經濟學院 雷必武

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved