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