對硬碟的一種簡單加密----在分割槽表上做手腳. (轉)
//以下適用平臺為/,或者更高版本不支援對直接讀寫操作。
我們都有知道硬碟的分割槽表位於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
-e150 "Unlock Succesully!$"
-e165 "Lock Successfully!$"
-e180 "HardDisk I/O Error!$"
-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-992470/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PG的非分割槽表線上轉分割槽表
- SSD固態硬碟要分割槽嗎?SSD固態硬碟分割槽與不分割槽的效能對比硬碟
- MySQL線上轉分割槽表(以及TiDB)MySqlTiDB
- 對一條基於分割槽的簡單SQL的優化SQL優化
- 非分割槽錶轉換成分割槽表
- 電腦硬碟分割槽表損壞怎麼修復?電腦硬碟分割槽表損壞的修復方法硬碟
- win10硬碟分割槽怎麼分_win10系統如何對硬碟分割槽Win10硬碟
- linux硬碟分割槽Linux硬碟
- split 分割槽的簡單研究
- Oracle 12C新特性-線上把非分割槽錶轉為分割槽表Oracle
- zabbix上對mysql資料庫做分割槽表MySql資料庫
- 對oracle分割槽表的理解整理Oracle
- 電腦硬碟分割槽要注意什麼,刪除硬碟分割槽的注意事項硬碟
- oracle分割槽表和分割槽表exchangeOracle
- win10無損分割槽的步驟_win10如何對硬碟無損分割槽Win10硬碟
- 非分割槽錶轉換成分割槽表以及注意事項
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- linux之硬碟分割槽管理Linux硬碟
- DiskGenius分割槽行動硬碟硬碟
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- 3tb硬碟怎麼分割槽_利用DiskGenius給3tb硬碟分割槽的方法硬碟
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- oracle分割槽表和非分割槽表exchangeOracle
- ghost win10如何分割槽硬碟_ghost win10怎麼分割槽硬碟Win10硬碟
- 硬碟空間的管理和分割槽硬碟
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- 移動分割槽表和分割槽索引的表空間索引
- 為linux新增一塊新硬碟並分割槽Linux硬碟
- 在分割槽表上使用正確的索引來提高效能索引
- win10系統硬碟如何分割槽_win10主硬碟怎麼分割槽Win10硬碟
- AppBoxFuture: 大資料表分割槽的3種策略APP大資料
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- SSD固態硬碟要分割槽嗎?不同容量SSD固態硬碟分割槽方案建議硬碟
- win10新增硬碟分割槽怎麼操作 win10硬碟如何增加新分割槽Win10硬碟
- windows11怎麼分割槽硬碟 win11硬碟分割槽大小方法介紹Windows硬碟
- LightDB 22.4 新特性之相容Oracle線上轉換普通表為分割槽表Oracle
- win10系統硬碟分割槽表損壞的修復方法Win10硬碟
- 【MYSQL】 分割槽表MySql
- win10系統硬碟分割槽怎麼分 win10硬碟分割槽教程圖解Win10硬碟圖解