專(zhuān)利名稱(chēng):一種借助光盤(pán)啟動(dòng)在Windows操作系統(tǒng)中嵌入內(nèi)核驅(qū)動(dòng)程序的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)安全領(lǐng)域,具體的說(shuō)是提供了一種在Windows操作系統(tǒng)中 嵌入內(nèi)核驅(qū)動(dòng)程序的方法。
背景技術(shù):
將內(nèi)核驅(qū)動(dòng)程序嵌入Windows操作系統(tǒng)的普遍做法是通過(guò)安裝程序把內(nèi)核驅(qū) 動(dòng)程序拷貝到系統(tǒng)目錄下并且修改注冊(cè)表。這種方法修改了注冊(cè)表和文件系統(tǒng), 即使以后從注冊(cè)表中和文件系統(tǒng)中刪除這些修改,但是本地硬盤(pán)仍然會(huì)保留修改 過(guò)的痕跡;拷貝驅(qū)動(dòng)程序和修改注冊(cè)表會(huì)覆蓋硬盤(pán)上原有扇區(qū)中的數(shù)據(jù),造成硬 盤(pán)上數(shù)據(jù)的改變。在計(jì)算機(jī)犯罪取證等應(yīng)用場(chǎng)合,需要把內(nèi)核驅(qū)動(dòng)程序嵌入 Windows操作系統(tǒng)中以完成某些特定功能,但硬盤(pán)上的數(shù)據(jù)不允許被修改。所以, 我們需要一種不用修改硬盤(pán)扇區(qū)數(shù)據(jù)就能把內(nèi)核驅(qū)動(dòng)程序嵌入Windows操作系 統(tǒng)的方法。發(fā)明內(nèi)容本發(fā)明的目的在于提供一種在Windows操作系統(tǒng)中嵌入內(nèi)核驅(qū)動(dòng)程序的方法。本發(fā)明的技術(shù)方案是包括一張光盤(pán), 一段存放在光盤(pán)0xA000到0xA7FF存儲(chǔ)空間的加載程序,一 段存放在光盤(pán)0x0000到0x7FFF存儲(chǔ)空間的用于示范的內(nèi)核驅(qū)動(dòng)程序;當(dāng)計(jì)算機(jī) 從光盤(pán)啟動(dòng)時(shí),BIOS將加載程序讀入內(nèi)存執(zhí)行。加載程序通過(guò)修改INT13H的中 斷服務(wù)程序來(lái)監(jiān)控計(jì)算機(jī)對(duì)硬盤(pán)的讀寫(xiě);當(dāng)Windows操作系統(tǒng)通過(guò)INT13H來(lái)讀 取注冊(cè)表時(shí),加載程序調(diào)用原始的INT13H中斷服務(wù)程序讀取硬盤(pán)上的注冊(cè)表到 內(nèi)存,并在內(nèi)存中修改讀取的內(nèi)容,讓W(xué)indows操作系統(tǒng)加載一個(gè)硬盤(pán)上并不存 在的內(nèi)核驅(qū)動(dòng)程序;當(dāng)Windows操作系統(tǒng)通過(guò)INT13H來(lái)讀取該內(nèi)核驅(qū)動(dòng)程序時(shí), 加載程序把讀操作重定向到光盤(pán),讀取存放在光盤(pán)0x0000到0x7FFF存儲(chǔ)空間的用于示范的內(nèi)核驅(qū)動(dòng)程序,從而把用于示范的內(nèi)核驅(qū)動(dòng)程序嵌入Windows操作系 統(tǒng)。加載程序通過(guò)修改內(nèi)存中的數(shù)據(jù)將用于示范的內(nèi)核驅(qū)動(dòng)程序嵌入Windows 操作系統(tǒng),不需要改動(dòng)硬盤(pán)上的數(shù)據(jù)。用于示范的內(nèi)核驅(qū)動(dòng)程序的功能可以根據(jù)具體需求而改變。 當(dāng)計(jì)算機(jī)從光盤(pán)啟動(dòng)時(shí),BIOS把存放在光盤(pán)0xA000到0xA7FF存儲(chǔ)空間的加載 程序讀入內(nèi)存0000: 7C00并執(zhí)行。加載程序通過(guò)修改INT13H的中斷服務(wù)程序來(lái)監(jiān) 控計(jì)算機(jī)對(duì)硬盤(pán)的讀寫(xiě)。加載程序完成修改后,把硬盤(pán)O扇區(qū)的內(nèi)容讀入內(nèi)存 0000: 7C00并執(zhí)行,從硬盤(pán)上啟動(dòng)Windows操作系統(tǒng)。在隨后的啟動(dòng)過(guò)程中,硬 盤(pán)上的Windows引導(dǎo)程序(Osloader. exe)通過(guò)INT13H讀取注冊(cè)表信息和文件系統(tǒng) 信息。加載程序監(jiān)測(cè)到引導(dǎo)程序?qū)ψ?cè)表的讀寫(xiě),調(diào)用原始的INT13H中斷服務(wù)程 序讀取硬盤(pán)上的注冊(cè)表到內(nèi)存,并在內(nèi)存中修改讀取的內(nèi)容,讓引導(dǎo)程序加載一 個(gè)硬盤(pán)上并不存在的內(nèi)核驅(qū)動(dòng)程序。當(dāng)引導(dǎo)程序通過(guò)INT13H來(lái)讀取該內(nèi)核驅(qū)動(dòng)程 序時(shí),加載程序把讀操作重定向到光盤(pán),讀取存放在光盤(pán)0x0000到0x7FFF存儲(chǔ)空 間的用于示范的內(nèi)核驅(qū)動(dòng)程序。至此,引導(dǎo)程序獲得了用于示范的內(nèi)核驅(qū)動(dòng)程序 的內(nèi)容,并根據(jù)注冊(cè)表的指示將它裝入Windows操作系統(tǒng)。用于示范的內(nèi)核驅(qū)動(dòng) 程序工作在Windows操作系統(tǒng)內(nèi)核比一般的應(yīng)用程序擁有更高的權(quán)限,其功能可 以根據(jù)具體需求而改變。例如,用于示范的內(nèi)核驅(qū)動(dòng)程序嵌入網(wǎng)絡(luò)驅(qū)動(dòng)層次監(jiān)控該計(jì)算機(jī)處理的網(wǎng)絡(luò)數(shù)據(jù),或者嵌入文件系統(tǒng)對(duì)某類(lèi)型的文件進(jìn)行加密和解密等 等。本發(fā)明的有益效果是1) 設(shè)計(jì)新穎。在啟動(dòng)過(guò)程中將內(nèi)核驅(qū)動(dòng)程序嵌入Windows操作系統(tǒng),不需要 復(fù)制內(nèi)核驅(qū)動(dòng)程序到硬盤(pán)上,也不需要修改硬盤(pán)上的注冊(cè)表。2) 具有隱蔽性。不需要在硬盤(pán)上保存內(nèi)核驅(qū)動(dòng)程序。
圖l一光盤(pán)存儲(chǔ)空間的使用示意圖。 圖2—從光盤(pán)啟動(dòng)的工作流程圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。本發(fā)明不僅限于 以下實(shí)施例,凡是利用本發(fā)明的設(shè)計(jì)思路,做一些簡(jiǎn)單變化的設(shè)計(jì)都應(yīng)進(jìn)入本發(fā) 明的保護(hù)范圍之內(nèi)。光盤(pán)作為加載程序和用于示范的內(nèi)核驅(qū)動(dòng)程序的載體,如圖1。加載程序存 放在光盤(pán)0xA000到0xA7FF的存儲(chǔ)空間,用于示范的內(nèi)核驅(qū)動(dòng)程序存放在光盤(pán) 0x0000到0x7FFF的存儲(chǔ)空間。Windows操作系統(tǒng)的內(nèi)核驅(qū)動(dòng)程序分為總線(xiàn)驅(qū)動(dòng)程序,功能驅(qū)動(dòng)程序,過(guò)濾 驅(qū)動(dòng)程序幾類(lèi)??偩€(xiàn)驅(qū)動(dòng)程序具有負(fù)責(zé)枚舉總線(xiàn)上連接設(shè)備,如USB總線(xiàn)驅(qū)動(dòng)程 序(usbhub. sys) , PCI總線(xiàn)驅(qū)動(dòng)程序(pci. sys); Windows也支持虛擬總線(xiàn)驅(qū)動(dòng)程 序用于管理虛擬設(shè)備。功能驅(qū)動(dòng)程序完成某類(lèi)設(shè)備的功能,如磁盤(pán)驅(qū)動(dòng)程序 (disk.sys)等。過(guò)濾驅(qū)動(dòng)程序一般輔助功能驅(qū)動(dòng)程序完成某些特殊的功能,比如 分區(qū)管理程序(partragr. sys)等。前兩類(lèi)驅(qū)動(dòng)程序一般由Windows操作系統(tǒng)提供, 在Windows操作系統(tǒng)源代碼沒(méi)有公開(kāi)的情況下很難被修改;然而,Windows操作 系統(tǒng)允許開(kāi)發(fā)者嵌入過(guò)濾驅(qū)動(dòng)程序來(lái)該變功能驅(qū)動(dòng)程序的某些行為。以下示范把 內(nèi)核驅(qū)動(dòng)程序(demon, sys)作為磁盤(pán)存儲(chǔ)過(guò)濾驅(qū)動(dòng)程序嵌入Windows操作系統(tǒng)。Windwos操作系統(tǒng)啟動(dòng)時(shí)需要很多初始化數(shù)據(jù),這些數(shù)據(jù)保存在注冊(cè)表中。 系統(tǒng)啟動(dòng)時(shí),引導(dǎo)程序讀取注冊(cè)表來(lái)完成初始化操作。加載程序監(jiān)控引導(dǎo)程序?qū)?注冊(cè)表和文件系統(tǒng)的讀操作,在內(nèi)存中修改引導(dǎo)程序讀取的數(shù)據(jù)。HKEY—LOCAL—MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318!中U卯erFilters鍵指示磁盤(pán)存儲(chǔ)驅(qū)動(dòng)程序 的層次順序PartMgr. sys, Diskperf. sys。其中Diskperf- sys為Windows 2000 獨(dú)有。這里我們需要將內(nèi)存中的UpperFilters鍵值進(jìn)行修改,層次順序變?yōu)?Demon, sys, PartMgr. sys, Diskperf. sys。除此之夕卜,我們還需要在內(nèi)存中的 HKEY—LOCAL—MACHINE\SYSTEM\CurrentControlSet\Services鍵下面增加Demon 鍵,且在HKEY—LOCAL—MACHINE\SYSTEM\CurrentControlSet\Services\Demon鍵 下增加Start, Group等鍵值并且賦予相應(yīng)的值。其中Start:0表示Demon, sys 在計(jì)算機(jī)啟動(dòng)時(shí)裝入。對(duì)內(nèi)存中注冊(cè)表數(shù)據(jù)的修改生效后,引導(dǎo)程序需要從文件 系統(tǒng)獲取Demon, sys文件的信息。加載程序截獲引導(dǎo)程序?qū)YSTEM32\DRIVERS目錄信息的訪(fǎng)問(wèn),在內(nèi)存中增加Demon, sys的信息,如文件大小、文件位置等。 當(dāng)引導(dǎo)程序根據(jù)這些信息來(lái)讀取Demon, sys (Demon, sys在硬盤(pán)上并不存在)時(shí), 加載程序把讀操作且重定向到光盤(pán),讀取存放在光盤(pán)0x0000到0x7FFF存儲(chǔ)空間 的用于示范的內(nèi)核驅(qū)動(dòng)程序。至此,引導(dǎo)程序獲得了 Demon, sys的內(nèi)容,并根據(jù) 注冊(cè)表的指示將Demon, sys裝入Windows操作系統(tǒng),如圖2所示。
權(quán)利要求
1. 一種借助光盤(pán)啟動(dòng)在Windows操作系統(tǒng)中嵌入內(nèi)核驅(qū)動(dòng)程序的方法,其特征在于包括一張光盤(pán),一段存放在光盤(pán)0xA000到0xA7FF存儲(chǔ)空間的加載程序,一段存放在光盤(pán)0x0000到0x7FFF存儲(chǔ)空間的用于示范的內(nèi)核驅(qū)動(dòng)程序;當(dāng)計(jì)算機(jī)從光盤(pán)啟動(dòng)時(shí),BIOS將加載程序讀入內(nèi)存執(zhí)行。加載程序通過(guò)修改INT13H的中斷服務(wù)程序來(lái)監(jiān)控計(jì)算機(jī)對(duì)硬盤(pán)的讀寫(xiě);當(dāng)Windows操作系統(tǒng)通過(guò)INT13H來(lái)讀取注冊(cè)表時(shí),加載程序調(diào)用原始的INT13H中斷服務(wù)程序讀取硬盤(pán)上的注冊(cè)表到內(nèi)存,并在內(nèi)存中修改讀取的內(nèi)容,讓W(xué)indows操作系統(tǒng)加載一個(gè)硬盤(pán)上并不存在的內(nèi)核驅(qū)動(dòng)程序;當(dāng)Windows操作系統(tǒng)通過(guò)INT13H來(lái)讀取該內(nèi)核驅(qū)動(dòng)程序時(shí),加載程序把讀操作重定向到光盤(pán),讀取存放在光盤(pán)0x0000到0x7FFF存儲(chǔ)空間的用于示范的內(nèi)核驅(qū)動(dòng)程序,從而把用于示范的內(nèi)核驅(qū)動(dòng)程序嵌入Windows操作系統(tǒng)。
2. 如權(quán)利要求1所述的一種借助光盤(pán)啟動(dòng)在Windows操作系統(tǒng)中嵌入內(nèi)核 驅(qū)動(dòng)程序的方法,其特征在于加載程序通過(guò)修改內(nèi)存中的數(shù)據(jù)將用于示范的內(nèi) 核驅(qū)動(dòng)程序嵌入Windows操作系統(tǒng),不需要改動(dòng)硬盤(pán)上的數(shù)據(jù)。
3. 如權(quán)利要求1所述的一種借助光盤(pán)啟動(dòng)在Windows操作系統(tǒng)中嵌入內(nèi)核 驅(qū)動(dòng)程序的方法,其特征在于用于示范的內(nèi)核驅(qū)動(dòng)程序的功能可以根據(jù)具體需 求而改變。
全文摘要
本發(fā)明涉及計(jì)算機(jī)安全領(lǐng)域,具體的說(shuō)是提供了一種在Windows操作系統(tǒng)中嵌入內(nèi)核驅(qū)動(dòng)程序的方法。本發(fā)明包括一張光盤(pán),一段存放在光盤(pán)0xA000到0xA7FF的存儲(chǔ)空間的加載程序,一段存放在光盤(pán)0x0000到0x7FFF存儲(chǔ)空間的用于示范的內(nèi)核驅(qū)動(dòng)程序;當(dāng)計(jì)算機(jī)從光盤(pán)啟動(dòng)時(shí),BIOS將加載程序讀入內(nèi)存執(zhí)行。加載程序通過(guò)修改內(nèi)存中的數(shù)據(jù)把用于示范的內(nèi)核驅(qū)動(dòng)程序嵌入Windows操作系統(tǒng)。用于示范的內(nèi)核驅(qū)動(dòng)程序的功能可以根據(jù)具體需求而改變。本發(fā)明設(shè)計(jì)新穎,在啟動(dòng)過(guò)程中將內(nèi)核驅(qū)動(dòng)程序嵌入Windows操作系統(tǒng),不需要復(fù)制內(nèi)核驅(qū)動(dòng)程序到硬盤(pán)上,也不需要修改硬盤(pán)上的注冊(cè)表;具有隱蔽性,不需要在硬盤(pán)上保存內(nèi)核驅(qū)動(dòng)程序。
文檔編號(hào)G06F21/00GK101236500SQ20071011981
公開(kāi)日2008年8月6日 申請(qǐng)日期2007年7月31日 優(yōu)先權(quán)日2007年7月31日
發(fā)明者佐 王, 譚毓安 申請(qǐng)人:北京理工大學(xué)