硬碟簡單加密. (轉)
//以下適用平臺為/,或者更高版本不支援對直接讀寫操作。
我們都有知道硬碟的分割槽表位於0柱0面1扇區,在偏移地址1BE至1FD處就是硬碟的分割槽表內容,通常我們看硬碟分割槽表,只需用DE即可,即是說:
C:>DEBUG
-A100
MOV AX,0201
MOV BX,0200
MOV CX,0001
MOV DX,0080
INT 13
INT 20
-G=100
-D3BE 3FF
//SAVE PARTITION DATA INTO FILE AKING.DAT
-N AKING.DAT
-RCX
:200
-W200
完上述指令,我們將會看到66個位元組,其中最後兩個位元組必定為55AA,這是硬碟的主引導標誌(也稱自舉標誌),如果這兩個位元組不為55AA,那麼你的硬碟將不能啟動,因為識別不了硬碟。而且在偏移地址1BE處一定是80H,否則在啟動時會提示操作丟失。除去硬碟的自舉標誌,總共剩下達64個位元組,每個硬碟佔用16個位元組,主機上的口或EIDE口總共可以掛4個硬碟(外掛的不算),通常為起見我們可以將硬碟這重要的66個位元組資訊或多或少512個位元組資訊儲存到一箇中。每一個硬碟分割槽表的16個位元組都有其對應的含義:
第一個位元組:如果是引導分割槽,就是80H,如果不是,就是00H
第二個位元組到第四個位元組:是該分割槽的起始扇區號
第五個位元組:標誌位元組,比如05表示擴充套件分割槽
第六個位元組到第八個位元組:該分割槽的終止扇區號
第九個位元組到第十二個位元組:該分割槽使用的扇區數
第十三個字到第十六個位元組:該分割槽總共使用的扇區數
在瞭解完上述架構後,寫出簡單的程式就很簡單了,比如說我對硬碟的自舉標誌55AA作一個異或XOR運算,第一次執行程式時硬碟被鎖起,第二次執行時硬碟又被解鎖,第三次執行時硬碟又被鎖起。。。。除了對自舉標誌之外,我還可以對其它重要標誌作異或運算,比如說對引導分割槽的標誌位元組80作異或運算,比如說隱藏某個擴充套件分等都可以實現。下面我用DEBUG寫出匯序,在這裡我以加鎖/解鎖自舉標誌來寫程式。以上我已經宣告如果你要使用我的這個程式請注意先做一張啟動盤,將硬碟分割槽表先以一個檔案的形式儲存到FLOPPY DISK中,以防萬一,請看程式:
C:>DEBUG
-A100
MOV AX,0201
MOV BX,0200
MOV CX,0001
MOV DX,0080
INT 13
JB ERROR
MOV SI,03FE
MOV BP,AA55
XOR [SI],BP
MOV AX,0301
MOV BX,0200
MOV CX,0001
MOV DX,0080
INT 13
JB ERROR
CMP [SI],BP
JNZ LOCK
MOV DX,0150
MOV AH,9
INT 21
JMP END
LOCK:
MOV DX,0165
MOV AH,9
INT 21
JMP END
ERROR:
MOV DX,0180
MOV AH,9
INT 21
END:
MOV AH,4CH
INT 21H
-N AKING.COM
-RCX
:200
-W100
-Q
至此,我們已將上述程式碼存成檔案AKING.COM。你可以將AKING.COM這個檔案COPY到,從軟盤啟動,第一次執行AKING.COM硬碟被鎖住,再一次執行硬碟解鎖。
以前讀書時就對以及如何用匯編對硬碟程式設計就很感興趣,前兩天偶然聽到朋友問如何對硬碟加密,我想這是一種較為簡單的方法,而且NT和2000以及XP均不去支援對硬碟的直接讀寫操作,在這種情況下,如果要對硬碟某一扇區進行讀寫操作,就需要用來進行程式設計,如CreateFile,ReadFile,WriteFile等API。
再有一點我要宣告的是:上面的程式碼是隨手寫出來的,其中LOCK,ERROR,END這三處在實際應用中應該換成偏移地址,這裡為了敘述方便用LABEL。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992471/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 對硬碟的一種簡單加密----在分割槽表上做手腳. (轉)硬碟加密
- 硬碟加密--解析二 (轉)硬碟加密
- 硬碟加密----解析三 (轉)硬碟加密
- 簡單加密加密
- 一個簡單的愷撒加密程式 (轉)加密
- 呼叫類庫函式的簡單加密(轉的)函式加密
- 硬碟結構簡介 (轉)硬碟
- "簡單"的加密簽名加密
- javascript加密簡單介紹JavaScript加密
- sql 簡單加密函式SQL加密函式
- Solaris硬碟分割槽簡介(轉)硬碟
- 【原創】簡單替換加密加密
- linux 下增加硬碟簡單介紹Linux硬碟
- 超級簡單的Centos硬碟安裝CentOS硬碟
- 一個簡單實用的 vb 加密/解密演算法 (轉)加密解密演算法
- 一些簡單的JavaScript加密/解密JavaScript加密解密
- 簡單快捷給u盤加密的方法加密
- RSA加密演算法的簡單案例加密演算法
- 簡單加密/解密方法包裝, 含encode(),decode(),md5() (轉)加密解密
- 簡單編譯升級核心2.6.6,啟用FC1上的USB硬碟(轉)編譯硬碟
- win10家庭版硬碟加密方法是什麼 硬碟加密怎麼解除的方法Win10硬碟加密
- 自己用CUDA做的簡單的加密程式加密
- 簡介ManDrake Linux系統硬碟安裝(轉)Linux硬碟
- 硬碟介面簡介硬碟
- Blowfish 加密演算法 Java 版簡單實現加密演算法Java
- MySQL密碼加密認證的簡單指令碼MySql密碼加密指令碼
- MD5加密演算法簡介 (轉)加密演算法
- ORACLE簡單應用 (轉)Oracle
- Linux下實現 OpenSSL 簡單加密與解密字串Linux加密解密字串
- 一個非常簡單的私有加密演算法加密演算法
- 每天學一點flash flash簡單加密講解(1)加密
- pdf轉換word,超簡單!
- SqlDataAdapter簡單介紹 (轉)SQLLDAAPT
- 簡單管理的核心真理(轉)
- Oracle 鎖簡單介紹(轉)Oracle
- Oracle鎖簡單介紹(轉)Oracle
- C語言實現MD5加密,竟如此簡單!C語言加密
- [20150629]簡單的加密連線.txt加密