發信人:Xing_Xing (星星) 版面名稱:Hacker(8604)
標 題:硬碟保護卡的破解 (轉)
發信站:中國科大BBS站 (Sun, 28 Oct 2001 15:13:24 )
標 記:普通
硬碟保護卡的破解
原勳
本來以前就要寫這一篇,的,有事耽誤了,現在寫出來濫竽充數吧!
還原卡也稱硬碟保護卡,學校等單位採用較多,可以保護硬碟資料不被惡意修改,刪除
。保護卡是一種硬體晶片,插在主機板上與硬碟的MBR協同工作。在說明原理前,我想先提
一種技術“BIOS對映地址搬移”。這種技術在前幾年,大行其道,但均秘而不喧。諸位
以前玩解密的時候可能都用過龔成賓的SIMU97吧。它能在只讀的BIOS地址區實現寫入,
因而能攔截到CALL F000:EC59等呼叫。這種呼叫在以軟盤為載體的加密方案中,有重要
意義[後來為了躲過它,王江民沒辦法使用了UPD765。不過,據我分析UPD765 照樣可以
攔截]。剛才提的那種攔截方式的原理是這樣的[跟蹤所得]:透過呼叫Int15h子功能[其
他也可以,只要能切入保護模式],切入保護模式,改掉BIOS所在段的段描述符。這種方
法可以實現BIOS段的重定位,當然就可以讓它可寫入了。用Int13H讀軟盤時Int13H會調
用F000:EC59,這是攔截Int13h 的一種高階手段。其實圍繞硬碟保護的加密解密關鍵就看
誰攔截的位置更底層。但對與硬碟保護卡來說,只要恢復Int13的BIOS級中斷向量就夠了
。具體如何破解呢?找到Int13h的BIOS解中斷向量值,填入中斷向量表。[有些部份如果
覺得簡單請跳過看 ^_^]
下面是找Int13入口的方法,我常用的幾種:
1。手工執行Debug,如下:
Debug
- a100
- xor ax,ax
- int 13
- int3
然後輸入t回車,不斷的重複,直到顯示的地址形如 F000:xxxx。 記下這一地址,按q 回
車退出。
在(0:13H*4)=0:4cH 處填入這個地址。
例如得到的地址是F000:1234
執行debug
-e 0:4c 34 12 00 F0
-q
注意:
填的時候要仔細,填錯的話會當機。有些經過針對性處理的機器,要進一步鑑別。如在
Int13內部調 用Int1ch. 如果在trace過程中發現如下程式碼 CMP DL,80,修改成
CMP DL,FF 別的都不要修改.試試 硬碟可寫嗎?如果可以的話萬事大吉。另外,
不能在Windows的虛擬DOS視窗中使用這種方法。如果在Windows的虛擬DOS視窗執行的話
,請使用下一種方法。
2。Debug
- s F000:0 ffff 80 fa 80
你可能會發現有好幾處。試驗一下: 如果U F000:xxxx地址後發現程式碼類似
-u F000:xxxx
PUSHF
CMP DL,80
JZ ....
.
.
.
的話,填入向量表試試。通常破解就完成了。
我曾經發現經過以上中斷還原後,仍不能寫盤的情況。經跟蹤發現Int8H,Int 1CH,Int1
5H等向量對
Int13H進行了向量保護。解決辦法:把Int8H,Int1cH,Int15H 也改會原始中斷點(也是
BIOS中斷)。嘗試寫盤:
copy c:\command.com test.com <Enter>
1 file Copied.
如果想獲得保護卡密碼的話,可以參考以下步驟:
1。找到Int13h原始點設回中斷向量表。
2。讀出MBR
可以分析這份MBR,找到存放加密密碼的扇區得出解密演算法。。。
--
※ 來源: 中國科大BBS站 [bbs.ustc.edu.cn]