摘 要:本文基于Hook技術,運用面向對象的分析方法,并結合軟件工程思想,分析設計一個具有安全監測功能的文件監測器,為在網絡環境下的文件傳輸給出一個安全性監測的方案。
關鍵詞:Hook;軟件工程;文件監測
中圖分類號:TP277 文獻標識碼:A 文章編號:1674-7712 (2014) 22-0000-01
一、Hook技術概述
Windows系統是建立在事件驅動的機制上的,整個系統都是通過消息的傳遞來實現的。Hook,也稱“鉤子”,是一種特殊的消息處理機制,鉤子可以監視系統或進程中的各種事件消息,截獲發往目標窗口的消息并進行處理。這樣,就可以在系統中安裝自定義的鉤子,監視系統中特定事件的發生,完成特定的功能,比如截獲鍵盤、鼠標的輸入,屏幕取詞,日志監視等等。
簡而言之,Hook就是一個Windows消息的攔截機制,可以攔截單個進程的消息(線程鉤子),也可以攔截所有進程的消息(系統鉤子),對攔截的消息進行自定義的處理。Windows消息帶了一些程序有用的信息,比如Mouse類信息,就帶有鼠標所在窗體句柄、鼠標位置等信息。
與Hook技術相關的幾個重要函數:(1)Hook(鉤子)函數。鉤子函數指鉤子在攔截了消息后,進行對應消息處理的函數,可以通過返回TRUE直接拋棄消息,其原型為:LRESULT CALLBACK HookProcName(int nCode,WPARAM wParam,LPARAM lParam);(2)創建鉤子函數。創建新的鉤子函數加入到鉤子鏈中,一般在鉤子程序初始化時使用:HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,INSTANCE hMod,DWORD dwThreadId)。返回值:HHOOK--鉤子句柄,不使用鉤子時通過UnhookWindowsHookEx函數卸載鉤子;(3)卸載鉤子函數。當不再使用鉤子時,必須及時卸載。簡單地調用函數 BOOL UnhookWindowsHookEx(HHOOK hhk)即可。
二、文件監測器的分析與設計
(一)功能需求分析。(1)創建一個hook應用程序框架,其中主要包括對Hook的定義,這是文件監測器的入口;(2)定義Hook函數,它是在攔截了消息后,對消息進行處理的函數,這些函數可能不止一個,需要放入到一個DLL類型的文件中來實現;(3)主程序filemonitor.app由啟動和注入構成,包括各種遠程的注入和進程模塊的通信;(4)啟動模塊,將被操作的可執行文件進程掛起,創建filemonitor.app需要的進程,進一步對DLL進行操作,從而對可執行文件獲取信息;(5)分析模塊,向被操作的可執行文件中注入DLL,執行所需要的代碼,獲取想要獲取的信息,并在獲取之后顯示出相關的信息;(6)清空模塊,將主程序filemonitor.app中listbox對象中的內容清空;(7)退出模塊,退出主程序filemonitor.app。
(二)系統結構設計。根據文件監測器功能需求分析,可以得出如圖1所示的文件監測器軟件結構圖,該圖對后續的軟件模塊詳細設計具有重要指導意義。
(三)模塊詳細設計
1.DLL模塊的實現
主要功能:獲取可疑文件的主要信息,讓可疑文件的進程還原。
輸入:響應分析按鈕的消息機制。
三、結束語
該監測器能夠準確地定位可疑文件的路徑,并獲取相應的參數,將之顯示在主窗口中,供專業的計算機人員使用。用戶針對不同的參數,對可疑的文件操作進行審查,從源頭上避免可能危險的文件操作行為。該案例提供了一個Hook應用框架,在實際應用中,還有很大的擴展空間。
參考文獻:
[1]Hoglund,G. Butler,J(美).韓智文,譯.ROOTKITS—Windows內核的安全防護[M].北京:清華大學出版社,2007.
[作者簡介]王智超(1979-),男,湖北人,講師,碩士,研究方向:現代軟件工程理論及其與計算機網絡技術的綜合應用。