新四季網

基於進程監控對計算機文件進行加解密的方法

2023-04-26 10:52:16 1

專利名稱:基於進程監控對計算機文件進行加解密的方法
技術領域:
本發明屬於對計算機文件進行加解密方法領域,尤其是一種基於 進程監控對計算機文件進行加解密的方法。
背景技術:
進程是程序在計算機上的一次執行活動。當你運行一個程序,你 就啟動了一個進程。顯然,程序是死的(靜態的),進程是活的(動態 的)。 一個進程代表了一個程序運行體。智慧財產權保護一直是企業、政府、軍隊乃至個人關心的問題。一 份精心設計的圖紙、 一份重要的文檔都需要進行保護。如何保護這些 重要信息不被洩密,大部分情況下,加密是一種好的解決辦法。目前市場上出現了許多關於文件加解密產品,但這些產品的實現 方式上帶有明顯的局限性。有的是基於整個盤進行加密,有的是由用 戶對指定的文件夾或文件進行手動指定加密處理。這些實現方式的缺 點是缺乏靈活性。發明內容本發明的目的是提供一種使用方便靈活、保密效果好的基於進程監控對計算機文件進行加解密的方法。本發明旨在通過在W頂DOWS系 統核心級,採用WINDOWS內核HOOK技術對WINDOWS系統服務進行 H00K。當一個新的進程被創建時,在系統核心態會進入 NtCreateProcess或NtCreateProcessEx系統月艮務例程,而此日寸這兩 個系統服務已經被H00K,所以這個過程會進入我們H00K後的例程中, 在H00K例程中進行相應的邏輯判斷和控制,並將當前進程加入受監 控進程列表。為此,本發明是通過以下技術方案實現的1、分析WINDOWS系統服務例程,構建一個WINDOWS核心態驅動 程序對創建進程的兩個系統服務NtCreateProcess和NtCreateProcessEx進行HOOK;2、通過DeviceIoControl 將一個指定的受監控進程列表傳入到 系統核心層,在核心層將受監控進程列表保存在一個系統全局緩存 中;3、當本地用戶在當前作業系統上進行文件I/O或網絡I/O時, 在對應的處理例程中首先判斷當前的進程是否在受監控進程列表中, 如果在則對該次操作進行相應的加解密處理操作,在WriteRoutine 中對要寫入的數據加密後,執行寫入操作;在ReadRoutine中讀取數 據,然後再ReadCompleteRoutine中對讀出的加密數據解密後,將數 據返回給客戶程序。HOOK系統服務過程具體過程描如下首先,獲取 NtCreateProcess禾口 NtCreateProcessEx兩個核心態API在系統中 的地址,並將這兩個地址分別保存到定義好的兩個指針變量存保護;然後,將本發明中HOOK後的兩個函數 NtCreateProcessHook, NtCreateProcessHookEx的地址保存到系統 函數NtCreateProcess和NtCreateProcessEx中;最後,恢復內存保 護。UNHOOK系統服務過程如下首先,去掉內存保護;其次,將步 驟 1 中保存的兩個變量 p01dNtCreateProcess 和 p01dNtCreateProcessEx的地址恢復到系統函數NtCreateProcess禾口 NtCreateProcessEx的地址上,保證在本發明的驅動程序退出後,恢 復系統API NtCreateProcess禾口 NtCreateProcessEx的正常工作; 最後,恢復內存保護。NtCreateProcessHook處理流程如下首先,當一個進程創建的時候,在核心態會經過系統API NtCreateProcess進行處理;其次,在本發明中系統API NtCreateProcess被IPPS H00K,所以此時當有進程被創建則首先會 進入 HOOK 後的函數 NtCreateProcessHook ; 最後,在 NtCreateProcessHook函數中判斷當前被創建的進程是否是已經被 添加到受監控進程列表中的進程或者不是特殊進程,如果當前被創建 的進程在受監控進程列表中或者不是特殊進程,則將當前進程添加到 受監控進程列表中。NtCreateProcessExHook處理流程如下首先,當一個進程創建 的時候,在核心態會經過系統APINtCreateProcessEx進行處理;其 次,在本發明中系統API NtCreateProcessEx被IPPS H00K,所以此 時當有進程被創建則首先會進入H00K後的函數 NtCreateProcessExHook; 最後,在NtCreateProcessExHook函數中 判斷當前被創建的進程是否是已經被添加到受監控進程列表中的進 程或者不是特殊進程,如果當前被創建的進程在受監控進程列表中或 者不是特殊進程,則將當前進程添加到受監控進程列表中。本發明的效果是在windows作業系統中,核心態的截獲可以 通過編寫內核驅動程序來實現。在這種方法中,內核提供的 native APIs被截獲,核心態截獲的優點是可以監視事件的發生是由 於用戶態調用還是核心態調用而引起的。這種截獲技術的困難在於 首先是獲取傳遞給核心態的native APIs的參數,因為核心態的多數 系統服務是未文檔化的;其次,傳遞給核心態調用的參數可能和傳遞 給用戶態調用的參數不同;最後, 一個用戶態API調用的實現可能要 調用多個核心態API。在這種情況下,對核心態APIs調用的截獲實 現起來就更加困難。 一般來說,核心態的截獲實現起來更困難一些, 但是可以收到許多意想不到的效果。內核中有兩個系統服務描述符表, 一個是 KeServiceDescriptorTable(由 ntoskrnl.exe 導出),~"個是 KeServieDescriptorTableShadow(沒有導出)。兩者的區別是, KeServiceDescriptorTable 僅 有 ntoskrnel — 項 , KeServieDescriptorTableShadow包含了 ntoskrnel以及win32k。 一 般的Native API的服務地址由KeServiceDescriptorTable分派, gdi.dll/user.dll的內核API調用服務地址由 KeServieDescriptorTableShadow分派。通過上面的處理,結合基於進程監控技術和加密技術,給用戶提 供了一個靈活的進程監控和文件加密的實現方法,能夠更加有效的保 護企業的機密敏感的文件信息。


圖1為創建一個進程時NtCreateProcess/NtCreateProcessEx處理流程示意圖;圖2為基於進程監控的加解密過程示意圖。具體實現方式下面結合附圖和實施例對本發明做進一步的說明。1. Windows中所有的進程創建在系統核心層都會經過 NtCreateProcess禾口 NtCreateProcessEx兩個系統月艮務中的其中一 個.2. 通過DeviceIoControl在用戶態將一個維護有白名單的列表傳 入核心態驅動程序;3. 當用戶啟動一個應用或一個進程被創建時,在WINDOWS系 統核心層對應的NtCreateProcess或NtCreateProcessEx服務便會感 知到這個過程,並且創建進程的過程會經過這兩個系統服務進行處 理,本發明通過HOOK這兩個系統服務來監控進程的創建過程,並且根據當前進程是否在受監控進程列表中來決定其創建的子進程是否 應該受監控,如果確定子進程應該受監控,則將新創建的子進程也加 入到受監控的進程列表中,這樣,新創建的進程的讀寫操作也就會自 動加解密了;4. 當一個進程被創建,在HOOK例程NtCreateProcessHook 或NtCreateProcessExHook中判斷是否是系統進程或是白名單中的 進程,如果既不是系統進程也不是白名單中的進程,則將當前進程加 入受監控進程列表中,該受監控的進程列表被保存在一個全局的系統 緩存中;5. 當一個本地的文件I/0或網絡I/0請求發生時,首先判斷當 前的進程是否在受監控進程列表中,如果在監控進程列表,則進行相 應的加解密處理;6. 在本發明中,所有對進程攔截是通過windows內核驅動實現 的,用戶態通過DeviceloControl將一個受監控的進程列表傳入到核 心態驅動程序中,在驅動程序中維護有一個全局的鍊表,該鍊表中保 存有所有受監控的進程,最後驅動導出一個函數 IsProcessWatched,本函數有一個參數,用來指定需要判定的進程 的進程對象的地址,該函數可以被其他驅動程序調用,從而判斷當前進程是否在受監控進程之中,並對受監控進程發出的I/O請求進行加 解密處理。下面對上述過程進行詳細描述 1、對相關的兩個系統服務例程NtCreateProcess和 NtCreateProcessEx進行HOOK。 〃定義全局系統服務函數PNT—CREATE—PROCESS p01dNtCreateProcess = NULL;PNT—CREATE—PROCESS—EX pOldNtCreateProcessEx = NULL;1) HOOK系統服務過程具體過程描述如下具體實現過程如下首先,獲取NtCreateProcess和NtCreateProcessEx兩個核心態API在系 統中的地址,並將這兩個地址分別保存到定義好的兩個指針變量 p01dNtCreateProcess禾口 pOldNtCreateProcessEx中; 其次,去掉內存保護;然後,將本發明中HOOK後的兩個函數NtCreateProcessHook , NtCreateProcessHookEx 的地址保存到系統函數NtCreateProcess禾口 NtCreateProcessEx中;最後,恢復內存保護;經過上面的步驟後,當WINDOWS系統創建進程時,在內核態會首先進入本發 明中定義的兩個 HOOK 後的函數 NtCreateProcessHook 和 NtCreateProcessHookEx中,在這兩個函數中對創建進程的動作進行處理。偽代碼描述如下Beginp01dNtCreateProcess=(PNT—CREATE—PROCESS) ( GetSystemServiceByld (g一CreateProcessServiceld )); if( g—LocalSystem. Version>=0x0501 ) then p01dNtCreateProcessEx=(PNT—CREATE—PROCESS—EX) (GetSystemServiceByl d(g—CreateProcessExServiceld)); endif —asmclimov eax, CROand eax, not 0x10000mov CR0, eax(GetSystemServiceByld(g—CreateProcessServiceld))二DWORD)緒tCreateProcessHook;if( g—LocalSystem. Version〉二0x0501 ) then(GetSystemServiceByld(g—CreateProcessExServiceld))二 (DWORD) endif —ssmMOV EAX, CRO OR EAX, 10000H MOV CRO, EAX STIEnd2) UNHOOK系統服務過程具體描述如下 具體實現過程如下-首先,去掉內存保護;其次,將步驟1中保存的兩個變量p01dNtCreateProcess和 p01dNtCreateProcessEx 的地址恢復到系統函數NtCreateProcess和 NtCreateProcessEx的地址上,保證在本發明的驅動程序退出後,恢復系統API NtCreateProcess禾口 NtCreateProcessEx的正常工作;最後,恢復內存保護;UNHOOK過程是在驅動退出時在本發明的驅動程序的UnLoad歷程中調用,確 保在本發明的驅動程序退出後,恢復系統API NtCreateProcess和 NtCreateProcessEx的正常工作。偽代碼描述如下Begin —aismclimov esx, CROand eax, not 0x10000mov CRO, eax9//move CRO register into EAX〃enable WP bit //write register back //enable interrupt(GetSystemServiceByld(g—CreateProcessServiceld)) (DWORD)pOldNtCreateProcess; if( g—LocalSystem. Version〉=0x0501 ) then(GetSystemServiceByld(g—CreateProcessExServiceld))=(DWORD) p01dNtCreateProcessEx; Endif asmMOV EAX' CR0 OR EAX, 10000H MOV CRO, EAX STIEnd2、 NtCreateProcessHook處理流程如下 具體實現過程如下首先,當一個進程創建的時候,在核心態會經過系統API NtCreateProcess 進行處理;其次,在本發明中系統API NtCreateProcess被IPPS H00K,所以此時當有 進程被創建則首先會進入HOOK後的函數NtCreateProcessHook;最後,在NtCreateProcessHook函數中判斷當前被創建的進程是否是已經被 添加到受監控進程列表中的進程或者不是特殊進程,如果當前被創建的進程在受 監控進程列表中或者不是特殊進程,則將當前進程添加到受監控進程列表中;經過上面的步驟後,在系統中維護有一個全局的受監控進程列表,並且在本 發明的驅動中導出一個IsProcessWatched函數,在該函數中通過傳入的進程標 志在受監控進程列表中查找當前進程是否在列表中,如果在則返回TRUE,否則 返回FALSE,該函數能夠被其他驅動程序調用,當判斷IsProcessWatched返回 TRUE則判斷當前進程是受監控進程,從而對當前進程所有1/0操作進行加解密 處理,否則,則不進行任何額外的處理,所有的讀寫操作和常規讀寫操作完全相 同。偽代碼描述如下Begin〃即使受監控進程啟動explorer, exe,也不把explorer, exe納入監控 if( (IsProcessWatched( 飢0NG) PsGetCurrentProcess )1 1//move CRO register into EAX〃enable WP bit //write register back //enable interruptIsSpecialProcessAndNotlnWhiteList( CurProcessName,FileObject ))&&!IsProcessObjectSpecial( Process )) then〃將當前進程加入受監控進程列表中AddWatchedProcess( (ULONG)Process );endifEnd3、 NtCreateProcessExHook處理流程如下 具體實現過程如下-首先,當一個進程創建的時候,在核心態會經過系統API NtCreateProcessEx 進行處理;其次,在本發明中系統API NtCreateProcessEx被IPPS H00K,所以此時當 有進程被創建則首先會進入HOOK後的函數NtCreateProcessExHook;最後,在NtCreateProcessExHook函數中判斷當前被創建的進程是否是已經 被添加到受監控進程列表中的進程或者不是特殊進程,如果當前被創建的進程在 受監控進程列表中或者不是特殊進程,則將當前進程添加到受監控進程列表中;經過上面的步驟後,在系統中維護有一個全局的受監控進程列表,並且在本 發明的驅動中導出一個IsProcessWatched函數,在該函數中通過傳入的進程標 志在受監控進程列表中査找當前進程是否在列表中,如果在則返回TRUE,否則 返回FALSE,該函數能夠被其他驅動程序調用,當判斷IsProcessWatched返回 TRUE則判斷當前進程是受監控進程,從而對當前進程所有I/O操作進行加解密 處理,否則,則不進行任何額外的處理。偽代碼描述如下Begin〃即使受監控進程啟動explorer.exe,也不把explorer, exe納入監控 if( (IsProcessWatched ( (ULONG)PsGetCurrentProcess ) IIIsSpecialProcessAndNotlnWhiteList( CurProcessName, File0bject ))&&!IsProcessObjectSpecial( Process )) then〃將當前進程加入受監控進程列表中AddWatchedProcess ( (ULONG) Process )■;endifEnd
權利要求
1、基於進程監控對計算機文件進行加解密的方法,其特徵是包括下列步驟---構建一個WINDOWS核心態驅動程序,對創建進程的兩個系統服務NtCreateProcess和NtCreateProcessEx進行HOOK;---通過DeviceIoControl命令將一個指定的受監控進程列表傳入到系統核心層,在核心層將受監控進程列表保存在一個系統全局緩存中;---當本地用戶在當前作業系統上進行文件I/O或網絡I/O時,在對應的處理例程中首先判斷當前的進程是否在受監控進程列表中,如果在則對該次操作進行相應的加解密處理操作,在WriteRoutine中對要寫入的數據加密後,執行寫入操作;在ReadRoutine中讀取數據,然後再ReadCompleteRoutine中對讀出的加密數據解密後,將數據返回給客戶程序。
2、 根據權利要求1所述的基於進程監控對計算機文件進行加解 密的方法,其特徵是H00K系統服務過程具體過程描如下首先,獲取NtCreateProcess禾口 NtCreateProcessEx兩個核心 態API在系統中的地址,並將這兩個地址分別保存到定義好的兩個其次,去掉內存保護;然後,將本發明中HOOK後的兩個函數NtCreateProcessHook, NtCreateProcessHookEx的地址保存到系統函數NtCreateProcess和 NtCreateProcessEx中; 最後,恢復內存保護。
3、 根據權利要求2所述的基於進程監控對計算機文件進行加解 密的方法,其特徵是UNHOOK系統服務過程如下首先,去掉內存保護;其次,將保存的兩個變量p01dNtCreateProcess 和 pOldNtCreateProcessEx的地址恢復到系統函數NtCreateProcess和 NtCreateProcessEx的地址上,保證在本發明的驅動程序退出後,恢 復系統API NtCreateProcess和NtCreateProcessEx的正常工作;最後,恢復內存保護。
4、 根據權利要求1所述的基於進程監控對計算機文件進行加解密的方法,其特徵是NtCreateProcessHook處理流程如下首先,當一個進程創建的時候,在核心態會經過系統APINtCreateProcess進行處理;其次,在本發明中系統API NtCreateProcess被IPPS H00K,所以此時當有進程被創建則首先會進入HOOK後的函數NtCreateProcessHook;最後,在NtCreateProcessHook函數中判斷當前被創建的進程是否是已經被添加到受監控進程列表中的進程或者不是特殊進程,如果當前被創建的進程在受監控進程列表中或者不是特殊進程,則將當前進程添加到受監控進程列表中。
5、 根據權利要求1所述的基於進程監控對計算機文件進行加解 密的方法,其特徵是NtCreateProcessExHook處理流程如下首先,當一個進程創建的時候,在核心態會經過系統API NtCreateProcessEx進行處理;其次,API NtCreateProcessEx被IPPS H00K,當有進程被創建則 首先會進入HOOK後的函數NtCreateProcessExHook;最後,在NtCreateProcessExHook函數中判斷當前被創建的進程 是否是已經被添加到受監控進程列表中的進程或者不是特殊進程,如 果當前被創建的進程在受監控進程列表中或者不是特殊進程,則將當 前進程添加到受監控進程列表中。
全文摘要
一種使用方便靈活、保密效果好的基於進程監控對計算機文件進行加解密的方法。其特徵是包括下列步驟構建一個WINDOWS核心態驅動程序對創建進程的兩個系統服務NtCreateProcess和NtCreateProcessEx進行HOOK;通過DeviceIoControl將一個指定的受監控進程列表傳入到系統核心層,在核心層將受監控進程列表保存在一個系統全局緩存中;當本地用戶在當前作業系統上進行文件I/O或網絡I/O時,在對應的處理例程中首先判斷當前的進程是否在受監控進程列表中,如果在則對該次操作進行相應的加解密處理操作,在WriteRoutine中對要寫入的數據加密後,執行寫入操作;在ReadRoutine中讀取數據,然後再ReadCompleteRoutine中對讀出的加密數據解密後,將數據返回給客戶程序。
文檔編號G06F21/00GK101246536SQ20081010140
公開日2008年8月20日 申請日期2008年3月6日 優先權日2008年3月6日
發明者斌 姜 申請人:北京鼎信高科信息技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀