一、修改硬盤(pán)分區表信息 
硬盤(pán)分區表信息對硬盤(pán)的啟動(dòng)至關(guān)重要,如果找不到有效的分區表,將不能從硬盤(pán)啟動(dòng)或即使從軟盤(pán)啟動(dòng)也找不到硬盤(pán)。 通常,*個(gè)分區表項的第0子節為80H,表示C盤(pán)為活動(dòng)DOS分區,硬盤(pán)能否自舉就依靠它。若將該字節改為00H,則不能從硬盤(pán)啟動(dòng),但從軟盤(pán)啟動(dòng)后,硬盤(pán)仍然可以訪(fǎng)問(wèn)。分區表的第4字節是分區類(lèi)型標志,*分區的此處通常為06H,表示C盤(pán)為活動(dòng)DOS分區,若對*分區的此處進(jìn)行修改可對硬盤(pán)起到一定加密作用。 
具體表現在: 
1.若將該字節改為0,則表示該分區未使用,當然不能再從C盤(pán)啟動(dòng)了。從軟盤(pán)啟動(dòng)后,原來(lái)的C盤(pán)不見(jiàn)了,你看到的C盤(pán)是原來(lái)的D盤(pán),D盤(pán)是原來(lái)的E盤(pán),依此類(lèi)推。 
2.若將此處字節改為05H,則不但不能從硬盤(pán)啟動(dòng),即使從軟盤(pán)啟動(dòng),硬盤(pán)的每個(gè)邏輯盤(pán)都不可訪(fǎng)問(wèn),這樣等于整個(gè)硬盤(pán)被加密了。另外,硬盤(pán)主引導記錄的有效標志是該扇區的*兩字節為55AAH。若將這兩字節變?yōu)?,也可以實(shí)現對整個(gè)硬盤(pán)加鎖而不能被訪(fǎng)問(wèn)。 硬盤(pán)分區表在物理0柱面0磁頭1扇區,可以用Norton for Win95中的Diskedit直接將該扇區調出并修改后存盤(pán)?;蛘咴贒ebug下用INT 13H的02H子功能將0柱面0磁頭1扇區讀到內存,在相應位置進(jìn)行修改,再用INT 13H的03H子功能寫(xiě)入0柱面0磁頭1扇區就可以了。 上面的加密處理,對一般用戶(hù)來(lái)講已足夠了。但對有經(jīng)驗的用戶(hù),即使硬盤(pán)不可訪(fǎng)問(wèn),也可以用INT 13H的02H子功能將0柱面0磁頭1扇區讀出,根據經(jīng)驗將相應位置數據進(jìn)行修改,可以實(shí)現對硬盤(pán)解鎖,因為這些位置的數據通常是固定的或有限的幾種情形。另外一種保險但顯得笨拙的方法是將硬盤(pán)的分區表項備份起來(lái),然后將其全部變?yōu)?,這樣別人由于不知道分區信息,就無(wú)法對硬盤(pán)解鎖和訪(fǎng)問(wèn)硬盤(pán)了。 
二、對硬盤(pán)啟動(dòng)加口令 
我們知道,在CMOS中可以設置系統口令,使非法用戶(hù)無(wú)法啟動(dòng)計算機,當然也就無(wú)法使用硬盤(pán)了。但這并未真正鎖住硬盤(pán),因為只要將硬盤(pán)掛在別的計算機上,硬盤(pán)上的數據和軟件仍可使用。要對硬盤(pán)啟動(dòng)加口令,可以首先將硬盤(pán)0柱面0磁頭1扇區的主引導記錄和分區信息都儲存在硬盤(pán)并不使用的隱含扇區,比如0柱面0磁頭3扇區。然后用Debug重寫(xiě)一個(gè)不超過(guò)512字節的程序(實(shí)際上100多字節足矣)裝載到硬盤(pán)0柱面0磁頭1扇區。該程序的功能是執行它時(shí)首先需要輸入口令,若口令不對則進(jìn)入死循環(huán);若口令正確則讀取硬盤(pán)上存有主引導記錄和分區信息的隱含扇區(0柱面0磁頭3扇區),并轉去執行主引導記錄。 由于硬盤(pán)啟動(dòng)時(shí)首先是BIOS調用自舉程序INT 19H將主硬盤(pán)的0柱面0磁頭1扇區的主引導記錄讀入內存0000:7C00H處執行,而我們已經(jīng)偷梁換柱,將0柱面0磁頭1扇區變?yōu)槲覀冏约涸O計的程序。這樣從硬盤(pán)啟動(dòng)時(shí),首先執行的不是主引導程序,而是我們設計的程序。在執行我們設計的程序時(shí),口令若不對則無(wú)法繼續執行,也就無(wú)法啟動(dòng)了。即使從軟盤(pán)啟動(dòng),由于0柱面0磁頭1扇區不再有分區信息,硬盤(pán)也不能被訪(fǎng)問(wèn)了。當然還可以將我們設計的程序像病毒一樣,將其中一部分駐留在高端內存,監視INT 13H的使用,防止0柱面0磁頭1扇區被改寫(xiě)。 
三、對硬盤(pán)實(shí)現用戶(hù)加密管理 
UNIX操作系統可以實(shí)現多用戶(hù)管理,在DOS系統下,將硬盤(pán)管理系統進(jìn)行改進(jìn),也可實(shí)現類(lèi)似功能的多用戶(hù)管理。該管理系統可以滿(mǎn)足這樣一些要求: 1.將硬盤(pán)分為公用分區C和若干專(zhuān)用分區D。其中“超級用戶(hù)”來(lái)管理C區,可以對C區進(jìn)行讀寫(xiě)和更新系統;“特別用戶(hù)”(如機房?jì)炔咳藛T)通過(guò)口令使用自己的分區,以保護自己的文件和數據;“一般用戶(hù)”(如到機房上機的普通人員)任意使用劃定的公用分區。后兩種用戶(hù)都不能對C盤(pán)進(jìn)行寫(xiě)操作,這樣如果把操作系統和大量應用軟件裝在C盤(pán),就能防止在公共機房中其他人有意或無(wú)意地對系統和軟件的破壞,保證了系統的安全性和穩定性。 2.在系統啟動(dòng)時(shí),需要使用軟盤(pán)鑰匙盤(pán)才能啟動(dòng)系統,否則硬盤(pán)被鎖住,不能被使用。 此方法的實(shí)現可通過(guò)利用硬盤(pán)分區表中各邏輯盤(pán)的分區鏈表結構,采用匯編編程來(lái)實(shí)現。 
四、對某個(gè)邏輯盤(pán)實(shí)現寫(xiě)保護 
我們知道,軟盤(pán)上有寫(xiě)保護缺口,在對軟盤(pán)進(jìn)行寫(xiě)操作前,BIOS要檢查軟盤(pán)狀態(tài),如果寫(xiě)保護缺口被封住,則不能進(jìn)行寫(xiě)操作。而寫(xiě)保護功能對硬盤(pán)而言,在硬件上無(wú)法進(jìn)行,但可通過(guò)軟件來(lái)實(shí)現。 在DOS系統下,磁盤(pán)的寫(xiě)操作包括幾種情況:①在COMMAND.COM支持下的寫(xiě)操作,如MD、RD、COPY等;②在DOS功能調用中的一些子功能如功能號為10H、13H、3EH、5BH等可以對硬盤(pán)進(jìn)行寫(xiě)操作;③通過(guò)INT 26H將邏輯扇區轉換為絕對扇區進(jìn)行寫(xiě);④通過(guò)INT 13H的子功能號03H、05H等對磁盤(pán)進(jìn)行寫(xiě)操作。 但每一種寫(xiě)操作*都要調用INT 13H的子功能去實(shí)現。因此,如果對INT 13H進(jìn)行攔截,可以實(shí)現禁止對硬盤(pán)特定邏輯盤(pán)的寫(xiě)操作。由于磁盤(pán)上文件的寫(xiě)操作是通過(guò)INT 13H的03H子功能進(jìn)行寫(xiě),調用此子功能時(shí),寄存器CL表示起始扇區號(實(shí)際上只用到低6位);CH表示磁道號,在硬盤(pán)即為柱面號,該柱面號用10位表示,其*兩位放在CL的*兩位。對硬盤(pán)進(jìn)行分區時(shí)可以將硬盤(pán)分為多個(gè)邏輯驅動(dòng)器,而每個(gè)邏輯驅動(dòng)器都是從某一個(gè)完整的柱面開(kāi)始。如筆者的硬盤(pán)為2.5GB,分為C、D、E、F、G五個(gè)盤(pán)。其中C盤(pán)起始柱面號為00H,D盤(pán)起始柱面號為66H,E盤(pán)起始柱面號為E5H,F盤(pán)起始柱面號為164H,G盤(pán)起始柱面號為26BH。如果對INT 13H進(jìn)行攔截,當AH=03H,并且由CL高兩位和CH共同表示的柱面號大于E4H并小于164H,就什么也不做就返回,這樣就可以實(shí)現對E盤(pán)禁止寫(xiě)。
硬盤(pán)分區表信息對硬盤(pán)的啟動(dòng)至關(guān)重要,如果找不到有效的分區表,將不能從硬盤(pán)啟動(dòng)或即使從軟盤(pán)啟動(dòng)也找不到硬盤(pán)。 通常,*個(gè)分區表項的第0子節為80H,表示C盤(pán)為活動(dòng)DOS分區,硬盤(pán)能否自舉就依靠它。若將該字節改為00H,則不能從硬盤(pán)啟動(dòng),但從軟盤(pán)啟動(dòng)后,硬盤(pán)仍然可以訪(fǎng)問(wèn)。分區表的第4字節是分區類(lèi)型標志,*分區的此處通常為06H,表示C盤(pán)為活動(dòng)DOS分區,若對*分區的此處進(jìn)行修改可對硬盤(pán)起到一定加密作用。 
具體表現在: 
1.若將該字節改為0,則表示該分區未使用,當然不能再從C盤(pán)啟動(dòng)了。從軟盤(pán)啟動(dòng)后,原來(lái)的C盤(pán)不見(jiàn)了,你看到的C盤(pán)是原來(lái)的D盤(pán),D盤(pán)是原來(lái)的E盤(pán),依此類(lèi)推。 
2.若將此處字節改為05H,則不但不能從硬盤(pán)啟動(dòng),即使從軟盤(pán)啟動(dòng),硬盤(pán)的每個(gè)邏輯盤(pán)都不可訪(fǎng)問(wèn),這樣等于整個(gè)硬盤(pán)被加密了。另外,硬盤(pán)主引導記錄的有效標志是該扇區的*兩字節為55AAH。若將這兩字節變?yōu)?,也可以實(shí)現對整個(gè)硬盤(pán)加鎖而不能被訪(fǎng)問(wèn)。 硬盤(pán)分區表在物理0柱面0磁頭1扇區,可以用Norton for Win95中的Diskedit直接將該扇區調出并修改后存盤(pán)?;蛘咴贒ebug下用INT 13H的02H子功能將0柱面0磁頭1扇區讀到內存,在相應位置進(jìn)行修改,再用INT 13H的03H子功能寫(xiě)入0柱面0磁頭1扇區就可以了。 上面的加密處理,對一般用戶(hù)來(lái)講已足夠了。但對有經(jīng)驗的用戶(hù),即使硬盤(pán)不可訪(fǎng)問(wèn),也可以用INT 13H的02H子功能將0柱面0磁頭1扇區讀出,根據經(jīng)驗將相應位置數據進(jìn)行修改,可以實(shí)現對硬盤(pán)解鎖,因為這些位置的數據通常是固定的或有限的幾種情形。另外一種保險但顯得笨拙的方法是將硬盤(pán)的分區表項備份起來(lái),然后將其全部變?yōu)?,這樣別人由于不知道分區信息,就無(wú)法對硬盤(pán)解鎖和訪(fǎng)問(wèn)硬盤(pán)了。 
二、對硬盤(pán)啟動(dòng)加口令 
我們知道,在CMOS中可以設置系統口令,使非法用戶(hù)無(wú)法啟動(dòng)計算機,當然也就無(wú)法使用硬盤(pán)了。但這并未真正鎖住硬盤(pán),因為只要將硬盤(pán)掛在別的計算機上,硬盤(pán)上的數據和軟件仍可使用。要對硬盤(pán)啟動(dòng)加口令,可以首先將硬盤(pán)0柱面0磁頭1扇區的主引導記錄和分區信息都儲存在硬盤(pán)并不使用的隱含扇區,比如0柱面0磁頭3扇區。然后用Debug重寫(xiě)一個(gè)不超過(guò)512字節的程序(實(shí)際上100多字節足矣)裝載到硬盤(pán)0柱面0磁頭1扇區。該程序的功能是執行它時(shí)首先需要輸入口令,若口令不對則進(jìn)入死循環(huán);若口令正確則讀取硬盤(pán)上存有主引導記錄和分區信息的隱含扇區(0柱面0磁頭3扇區),并轉去執行主引導記錄。 由于硬盤(pán)啟動(dòng)時(shí)首先是BIOS調用自舉程序INT 19H將主硬盤(pán)的0柱面0磁頭1扇區的主引導記錄讀入內存0000:7C00H處執行,而我們已經(jīng)偷梁換柱,將0柱面0磁頭1扇區變?yōu)槲覀冏约涸O計的程序。這樣從硬盤(pán)啟動(dòng)時(shí),首先執行的不是主引導程序,而是我們設計的程序。在執行我們設計的程序時(shí),口令若不對則無(wú)法繼續執行,也就無(wú)法啟動(dòng)了。即使從軟盤(pán)啟動(dòng),由于0柱面0磁頭1扇區不再有分區信息,硬盤(pán)也不能被訪(fǎng)問(wèn)了。當然還可以將我們設計的程序像病毒一樣,將其中一部分駐留在高端內存,監視INT 13H的使用,防止0柱面0磁頭1扇區被改寫(xiě)。 
三、對硬盤(pán)實(shí)現用戶(hù)加密管理 
UNIX操作系統可以實(shí)現多用戶(hù)管理,在DOS系統下,將硬盤(pán)管理系統進(jìn)行改進(jìn),也可實(shí)現類(lèi)似功能的多用戶(hù)管理。該管理系統可以滿(mǎn)足這樣一些要求: 1.將硬盤(pán)分為公用分區C和若干專(zhuān)用分區D。其中“超級用戶(hù)”來(lái)管理C區,可以對C區進(jìn)行讀寫(xiě)和更新系統;“特別用戶(hù)”(如機房?jì)炔咳藛T)通過(guò)口令使用自己的分區,以保護自己的文件和數據;“一般用戶(hù)”(如到機房上機的普通人員)任意使用劃定的公用分區。后兩種用戶(hù)都不能對C盤(pán)進(jìn)行寫(xiě)操作,這樣如果把操作系統和大量應用軟件裝在C盤(pán),就能防止在公共機房中其他人有意或無(wú)意地對系統和軟件的破壞,保證了系統的安全性和穩定性。 2.在系統啟動(dòng)時(shí),需要使用軟盤(pán)鑰匙盤(pán)才能啟動(dòng)系統,否則硬盤(pán)被鎖住,不能被使用。 此方法的實(shí)現可通過(guò)利用硬盤(pán)分區表中各邏輯盤(pán)的分區鏈表結構,采用匯編編程來(lái)實(shí)現。 
四、對某個(gè)邏輯盤(pán)實(shí)現寫(xiě)保護 
我們知道,軟盤(pán)上有寫(xiě)保護缺口,在對軟盤(pán)進(jìn)行寫(xiě)操作前,BIOS要檢查軟盤(pán)狀態(tài),如果寫(xiě)保護缺口被封住,則不能進(jìn)行寫(xiě)操作。而寫(xiě)保護功能對硬盤(pán)而言,在硬件上無(wú)法進(jìn)行,但可通過(guò)軟件來(lái)實(shí)現。 在DOS系統下,磁盤(pán)的寫(xiě)操作包括幾種情況:①在COMMAND.COM支持下的寫(xiě)操作,如MD、RD、COPY等;②在DOS功能調用中的一些子功能如功能號為10H、13H、3EH、5BH等可以對硬盤(pán)進(jìn)行寫(xiě)操作;③通過(guò)INT 26H將邏輯扇區轉換為絕對扇區進(jìn)行寫(xiě);④通過(guò)INT 13H的子功能號03H、05H等對磁盤(pán)進(jìn)行寫(xiě)操作。 但每一種寫(xiě)操作*都要調用INT 13H的子功能去實(shí)現。因此,如果對INT 13H進(jìn)行攔截,可以實(shí)現禁止對硬盤(pán)特定邏輯盤(pán)的寫(xiě)操作。由于磁盤(pán)上文件的寫(xiě)操作是通過(guò)INT 13H的03H子功能進(jìn)行寫(xiě),調用此子功能時(shí),寄存器CL表示起始扇區號(實(shí)際上只用到低6位);CH表示磁道號,在硬盤(pán)即為柱面號,該柱面號用10位表示,其*兩位放在CL的*兩位。對硬盤(pán)進(jìn)行分區時(shí)可以將硬盤(pán)分為多個(gè)邏輯驅動(dòng)器,而每個(gè)邏輯驅動(dòng)器都是從某一個(gè)完整的柱面開(kāi)始。如筆者的硬盤(pán)為2.5GB,分為C、D、E、F、G五個(gè)盤(pán)。其中C盤(pán)起始柱面號為00H,D盤(pán)起始柱面號為66H,E盤(pán)起始柱面號為E5H,F盤(pán)起始柱面號為164H,G盤(pán)起始柱面號為26BH。如果對INT 13H進(jìn)行攔截,當AH=03H,并且由CL高兩位和CH共同表示的柱面號大于E4H并小于164H,就什么也不做就返回,這樣就可以實(shí)現對E盤(pán)禁止寫(xiě)。