倍可親

回復: 2
列印 上一主題 下一主題

超專業:常見硬碟加密解密的方法

[複製鏈接]

1萬

主題

1萬

帖子

1萬

積分

八級貝殼核心

倍可親終生會員(廿一級)

Rank: 5Rank: 5

積分
18033
跳轉到指定樓層
樓主
kent 發表於 2007-7-21 09:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 一、修改硬碟分區表信息

  硬碟分區表信息對硬碟的啟動至關重要,如果找不到有效的分區表,將不能從硬碟啟動或即使從軟盤啟動也找不到硬碟。 通常,第一個分區表項的第0子節為80H,表示C盤為活動DOS分區,硬碟能否自舉就依*它。若將該位元組改為00H,則不能從硬碟啟動,但從軟盤啟動后,硬碟仍然可以訪問。分區表的第4位元組是分區類型標誌,第一分區的此處通常為06H,表示C盤為活動DOS分區,若對第一分區的此處進行修改可對硬碟起到一定加密作用。

  具體表現在:

  1.若將該位元組改為0,則表示該分區未使用,當然不能再從C盤啟動了。從軟盤啟動后,原來的C盤不見了,你看到的C盤是原來的D盤,D盤是原來的E盤,依此類推。

  2.若將此處位元組改為05H,則不但不能從硬碟啟動,即使從軟盤啟動,硬碟的每個邏輯盤都不可訪問,這樣等於整個硬碟被加密了。另外,硬碟主引導記錄的有效標誌是該扇區的最後兩位元組為55AAH。若將這兩位元組變為0,也可以實現對整個硬碟加鎖而不能被訪問。硬碟分區表在物理0柱面0磁頭1扇區,可以用Norton中的Diskedit直接將該扇區調出並修改後存檔。或者在Debug下用INT 13H的02H子功能將0柱面0磁頭1扇區讀到內存,在相應位置進行修改,再用INT 13H的03H子功能寫入0柱面0磁頭1扇區就可以了。

  上面的加密處理,對一般用戶來講已足夠了。但對有經驗的用戶,即使硬碟不可訪問,也可以用INT 13H的02H子功能將0柱面0磁頭1扇區讀出,根據經驗將相應位置數據進行修改,可以實現對硬碟解鎖,因為這些位置的數據通常是固定的或有限的幾種情形。另外一種保險但顯得笨拙的方法是將硬碟的分區表項備份起來,然後將其全部變為0,這樣別人由於不知道分區信息,就無法對硬碟解鎖和訪問硬碟了。

  二、對硬碟啟動加口令

  我們知道,在CMOS中可以設置系統口令,使非法用戶無法啟動計算機,當然也就無法使用硬碟了。但這並未真正鎖住硬碟,因為只要將硬碟掛在別的計算機上,硬碟上的數據和軟體仍可使用。要對硬碟啟動加口令,可以首先將硬碟0柱面0磁頭1扇區的主引導記錄和分區信息都儲存在硬碟並不使用的隱含扇區,比如0柱面0磁頭3扇區。然後用Debug重寫一個不超過512位元組的程序(實際上100多位元組足矣)裝載到硬碟0柱面0磁頭1扇區。該程序的功能是執行它時首先需要輸入口令,若口令不對則進入死循環;若口令正確則讀取硬碟上存有主引導記錄和分區信息的隱含扇區(0柱面0磁頭3扇區),並轉去執行主引導記錄。

  由於硬碟啟動時首先是BIOS調用自舉程序INT 19H將主硬碟的0柱面0磁頭1扇區的主引導記錄讀入內存0000:7C00H處執行,而我們已經偷梁換柱,將0柱面0磁頭1扇區變為我們自己設計的程序。這樣從硬碟啟動時,首先執行的不是主引導程序,而是我們設計的程序。在執行我們設計的程序時,口令若不對則無法繼續執行,也就無法啟動了。即使從軟盤啟動,由於0柱面0磁頭1扇區不再有分區信息,硬碟也不能被訪問了。當然還可以將我們設計的程序像病毒一樣,將其中一部分駐留在高端內存,監視INT 13H的使用,防止0柱面0磁頭1扇區被改寫。

  三、對硬碟實現用戶加密管理

  UNIX操作系統可以實現多用戶管理,在DOS系統下,將硬碟管理系統進行改進,也可實現類似功能的多用戶管理。該管理系統可以滿足這樣一些要求: 1.將硬碟分為公用分區C和若干專用分區D。其中「超級用戶」來管理C區,可以對C區進行讀寫和更新系統;「特別用戶」(如機房內部人員)通過口令使用自己的分區,以保護自己的文件和數據;「一般用戶」(如到機房上機的普通人員)任意使用劃定的公用分區。后兩種用戶都不能對C盤進行寫操作,這樣如果把操作系統和大量應用軟體裝在C盤,就能防止在公共機房中其他人有意或無意地對系統和軟體的破壞,保證了系統的安全性和穩定性。 2.在系統啟動時,需要使用軟盤鑰匙盤才能啟動系統,否則硬碟被鎖住,不能被使用。 此方法的實現可通過利用硬碟分區表中各邏輯盤的分區鏈表結構,採用彙編編程來實現。

  四、對某個邏輯盤實現防寫

  我們知道,軟盤上有防寫缺口,在對軟盤進行寫操作前,BIOS要檢查軟盤狀態,如果防寫缺口被封住,則不能進行寫操作。而防寫功能對硬碟而言,在硬體上無法進行,但可通過軟體來實現。 在DOS系統下,磁碟的寫操作包括幾種情況:①在COMMAND.COM支持下的寫操作,如MD、RD、COPY等;②在DOS功能調用中的一些子功能如功能號為10H、13H、3EH、5BH等可以對硬碟進行寫操作;③通過INT 26H將邏輯扇區轉換為絕對扇區進行寫;④通過INT 13H的子功能號03H、05H等對磁碟進行寫操作。 但每一種寫操作最後都要調用INT 13H的子功能去實現。

  因此,如果對INT 13H進行攔截,可以實現禁止對硬碟特定邏輯盤的寫操作。由於磁碟上文件的寫操作是通過INT 13H的03H子功能進行寫,調用此子功能時,寄存器CL表示起始扇區號(實際上只用到低6位);CH表示磁軌號,在硬碟即為柱面號,該柱面號用10位表示,其最高兩位放在CL的最高兩位。對硬碟進行分區時可以將硬碟分為多個邏輯驅動器,而每個邏輯驅動器都是從某一個完整的柱面開始。如筆者的硬碟分為C、D、E、F、G五個盤。其中C盤起始柱面號為00H,D盤起始柱面號為66H,E盤起始柱面號為E5H,F盤起始柱面號為164H,G盤起始柱面號為26BH。如果對INT 13H進行攔截,當AH=03H,並且由CL高兩位和CH共同表示的柱面號大於E4H並小於164H,就什麼也不做就返回,這樣就可以實現對E盤禁止寫。

156

主題

4240

帖子

1011

積分

一星貝殼精英

倍可親終生會員(天子級)

Rank: 4

積分
1011
沙發
天子 發表於 2007-7-21 13:12 | 只看該作者
沒試過哈
回復 支持 反對

使用道具 舉報

0

主題

74

帖子

15

積分

註冊會員

Rank: 1

積分
15
3
晨豐123 發表於 2007-7-23 12:00 | 只看該作者
試試看再說
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 註冊

本版積分規則

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2025-8-16 09:46

快速回復 返回頂部 返回列表