freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于行為監(jiān)控的木馬查殺技術(shù)設(shè)計方案-資料下載頁

2025-05-03 22:35本頁面
  

【正文】 定義中出現(xiàn)的順序不同。,使其與非托管程序的約定相同。CharSet參數(shù)指定了數(shù)據(jù)結(jié)構(gòu)中字符串的編碼方式,可為Unicode或ANSI。,字符串的內(nèi)存布局也有所不同,因此需要使用MarshalAs屬性進(jìn)行標(biāo)記。UnmanagedType指定了字符串的類型,,其大小由SizeConst決定。 關(guān)于行為合法性的判斷盜號木馬不是等應(yīng)用程序的一部分,因此盜號木馬與應(yīng)用程序必定運行于兩個不同的進(jìn)程或木馬需要將其代碼遠(yuǎn)程注入到目標(biāo)進(jìn)程。對于遠(yuǎn)程線程注入,本軟件的重點進(jìn)程保護(hù)功能可以阻止對含有用戶重要信息的進(jìn)程進(jìn)行注入。若木馬未使用遠(yuǎn)程線程注入技術(shù),則木馬對目標(biāo)進(jìn)程的操作必定是跨進(jìn)程的。因此,本軟件所監(jiān)控的函數(shù)調(diào)用,若是進(jìn)程內(nèi)的操作,則允許執(zhí)行,這樣可以避免對大部分系統(tǒng)合法調(diào)用的攔截,給用戶過多的提示。系統(tǒng)消息過濾與注冊表監(jiān)控功能也只過濾部分關(guān)鍵的消息與注冊表鍵,如只過濾跨進(jìn)程發(fā)送的WM_GETTEXT消息而允許其它消息發(fā)送。經(jīng)過上述判斷,已可以識別大部分合法調(diào)用,對于小部分系統(tǒng)跨進(jìn)程操作,本軟件通過在行為規(guī)則庫中的規(guī)則進(jìn)行判斷。行為規(guī)則庫中的規(guī)則并非完全固定不變的,用戶可以根據(jù)自己的情況進(jìn)行自定義,提高行為合法性判斷的準(zhǔn)確性。 借助I/O管理器訪問內(nèi)核數(shù)據(jù)與功能LPC機(jī)制實現(xiàn)了核心態(tài)程序與用戶態(tài)程序間通訊的一種方式,使用LPC時,只能將用戶態(tài)程序作為服務(wù)端,核心態(tài)程序作為客戶端。此種方式對實現(xiàn)核心態(tài)程序調(diào)用用戶態(tài)程序的功能很容易,但實現(xiàn)反方向的調(diào)用卻相對困難。因此,本程序借助I/O管理器來解決這個問題。在用戶態(tài)程序調(diào)用I/O函數(shù)(如:ReadFile、WriteFile、DeviceIoControl等)對文件進(jìn)行操作時,I/O管理器將操作打包成I/O請求包(IRP)發(fā)送給磁盤驅(qū)動程序,磁盤驅(qū)動程序完成操作后,將結(jié)果返回。類似的,我們也可以讓用戶態(tài)程序調(diào)用I/O函數(shù),但在我們的驅(qū)動程序中,不操作硬件,只完成我們需要的功能,再將結(jié)果返回,以此實現(xiàn)用戶態(tài)程序?qū)诵膽B(tài)程序功能的調(diào)用。I/O函數(shù)需要有操作對象,這樣I/O管理器才能將I/O請求包發(fā)送至正確的驅(qū)動程序,因此,驅(qū)動程序需要創(chuàng)建一個設(shè)備對象來接收用戶態(tài)程序的請求。IoCreateDevice創(chuàng)建一個設(shè)備對象,其定義如下:NTSTATUS IoCreateDevice( IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName OPTIONAL, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject )。DriverObject:驅(qū)動對象的指針DeviceName:要創(chuàng)建設(shè)備的名稱(為指向UNICODE_STRING結(jié)構(gòu)的指針)DevIceType:要創(chuàng)建設(shè)備的類型DeviceCharacteristics:設(shè)備的特性DeviceObject:返回設(shè)備對象的指針本程序創(chuàng)建的設(shè)備名為“\Device\GlobalHook”,創(chuàng)建成功后,可在WinObj中觀察到此設(shè)備。圖 Win32 API不能訪問全部的命名空間,只能訪問命名空間中的\??\部分,因此還需要在\??\中創(chuàng)建一個符號鏈接,鏈接到該設(shè)備。IoCreateSymbolLink函數(shù)的定義如下:NTSTATUS IoCreateSymbolicLink( IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName )。SymbolicLinkName:符號鏈接名DeviceName:設(shè)備名創(chuàng)建完成后,我們需要通過修改DRIVER_OBJECT結(jié)構(gòu)設(shè)置一些重要的回調(diào)函數(shù)來處理用戶態(tài)程序的請求。成員名對應(yīng)的請求[IRP_MJ_CREATE*(sizeof PVOID)]CreateFile[IRP_MJ_WRITE*(sizeof PVOID)]WriteFile[IRP_MJ_CLOSE*(sizeof PVOID)]CloseHandle[IRP_MJ_DEVICEIOCONTROL*(sizeof PVOID)]DeviceIoControl 重要的請求處理函數(shù)至此,設(shè)備對象已創(chuàng)建完成,用戶態(tài)程序可以使用CreateFile獲取設(shè)備對象的句柄并使用I/O函數(shù)與其進(jìn)行通訊。 枚舉全局鉤子本程序使用DeviceIoControl這一I/O函數(shù)進(jìn)行通訊,因此枚舉全局鉤子等相應(yīng)代碼位于其對應(yīng)的請求處理函數(shù)DrvDeviceControl中。獲取全局鉤子的途徑如圖 :THREADINFO結(jié)構(gòu)TebTlsArrayAlertableStackBase……KTHREAD結(jié)構(gòu)Win32Threadptlppipctirpdesk……pDeskInfopvDesktopBasepvDesktopLimitspwndShell……DESKTOPINFO結(jié)構(gòu)aphkStart[16]鉤子1鉤子2鉤子NWH_MSGFILTER型鉤子鏈……鉤子1鉤子2鉤子NWH_JOURNALRECORD型鉤子鏈……………………圖 通過KTHREAD結(jié)構(gòu)、THREADINFO結(jié)構(gòu)依次找到DESKTOPINFO結(jié)構(gòu),DESKTOPINFO結(jié)構(gòu)的aphkStart數(shù)組為各類型全局鉤子首個元素的指針,其索引與類型對應(yīng)。Windows中的全局鉤子鏈為單向鏈表,每個鉤子使用Hook結(jié)構(gòu)進(jìn)行表示,Hook結(jié)構(gòu)的定義如下:Hook STRUCT h HANDLE ? 。鉤子句柄 cLockObj DWORD ? pti PVOID ? 。設(shè)置鉤子的線程(THREADINFO結(jié)構(gòu)的指針) rpdesk PVOID ? 。PDESTOP pSelf PVOID ? 。KPBYTE phkNext PVOID ? 。下一個鉤子的指針 iHook WORD ? 。鉤子類型(WH_XXX) offPfn DWORD ? 。鉤子的消息處理函數(shù)地址 flags WORD ? 。鉤子標(biāo)志(如鉤子是否已銷毀等) ihmod WORD ? ptiHooked PVOID ? 。鉤子所監(jiān)視的線程(THREADINFO結(jié)鉤的指針) rpdesk PVOID ? Hook ENDS通過pti成員可以獲取鉤子設(shè)置者的信息,h表示鉤子的句柄,通過UnhookWindowsHookEx可以刪除該鉤子。 枚舉類型的本地化.NET的PropertyGrid控件提供了一個修改對象屬性的界面,本程序也使用該控件實現(xiàn)對行為規(guī)則的修改,但由于枚舉類型不包含任何本地化信息,因此在PropertyGrid控件中默認(rèn)以其英文名稱顯示出來。本節(jié)講述了通過向枚舉類型添加自定義標(biāo)記與構(gòu)建轉(zhuǎn)換類,使其在PropertyGrid控件中能以中文顯示出來,實現(xiàn)本地化。圖 默認(rèn)情況下,屬性的名稱直接以定義中的英文名顯示,若想自定義為中文,以及顯示描述信息,就需要添加各種屬性來實現(xiàn)。[(typeof(), typeof()), (文件名), (常規(guī))]public string FileName{get { return strFileName。 } set { strFileName = value。 }} ,如FileNameEditor。在顯示枚舉值時,我們也希望能像屬性一樣自定義其顯示名稱,但DisplayName屬性并不能使用在枚舉值上,因此,我們需要自己為枚舉值定義一個屬性。 [AttributeUsage()] public class EnumValueDisplayNameAttribute : Attribute { private string strDisplayName。 public EnumValueDisplayNameAttribute(string DisplayName) { strDisplayName = DisplayName。 } public string ValueDisplayName { get { return strDisplayName。} } }首先,應(yīng)該創(chuàng)建一個屬性類。屬性類應(yīng)直接或間接的繼承自Attribute。AttributeUsage的AttributeTargets標(biāo)記了該屬性類的使用范圍,如屬性、方法或事件等。此處是用在枚舉值上。在屬性類的構(gòu)造函數(shù)中,應(yīng)收集要保存的信息。同時屬性類也應(yīng)有相信的屬性對這些信息進(jìn)行訪問。 創(chuàng)建完屬性類后,便可以將屬性應(yīng)用到枚舉值上。 internal enum RulePermit { [EnumValueDisplayName(提示)]Tip, [EnumValueDisplayName(允許)]Allow, [EnumValueDisplayName(禁止)]Forbid }在PropertyGrid顯示枚舉值時,需要在枚舉值與字符串間轉(zhuǎn)換,因此還需要自定義枚舉轉(zhuǎn)換類。,只對ConvertTo與ConvertFrom函數(shù)進(jìn)行重載。,返回相應(yīng)的字符串,工作過程如圖 :檢查輸入類型是否為枚舉類型執(zhí)行默認(rèn)轉(zhuǎn)換()從標(biāo)記類中讀取相應(yīng)字符串并返回遍歷枚舉值并檢測是否包含標(biāo)記類是否否是圖 ConvertTo方法的工作流程ConvertFrom方法根據(jù)指定的字符串,在EnumValueDisplayName中查找并返回相應(yīng)的枚舉值,其工作流程與ConvertTo相似。最后,只需將該轉(zhuǎn)換類應(yīng)用到相應(yīng)屬性上,PropertyGrid在處理枚舉值時即可自動顯示我們通過EnumValueDisplayName自定義的字符串。 [(行為), (結(jié)束其他進(jìn)程), //此處將類型轉(zhuǎn)換類指定為EnumConverterWithValueName (typeof(EnumConverterWithValueName))] public RulePermit TerminateProcess { get { return blnTerminateProcess。 } set { blnTerminateProcess = value。 } } 3 本軟件的優(yōu)勢本軟件的行為監(jiān)控完全通過直接修改系統(tǒng)內(nèi)核實現(xiàn),有別于傳統(tǒng)的通過系統(tǒng)提供的回調(diào)函數(shù)實現(xiàn),具有更廣的監(jiān)控范圍、更準(zhǔn)的信息獲取、更靈敏的反應(yīng)速度等特性,同時自我保護(hù)功能特點也使得軟件本身更加安全、可靠。 更廣的監(jiān)控范圍傳統(tǒng)的行為監(jiān)控方法是通過調(diào)用Windows提供的通知函數(shù)(函數(shù)名通常為xxxNotifyChangeyyy)設(shè)置回調(diào)函數(shù)對某些操作進(jìn)行監(jiān)控。這種方法有很大的局限,若Windows沒有提供相應(yīng)的通知函數(shù),就無法監(jiān)控。Windows僅提供了兩個通知函數(shù)RegNotifyChangeKeyValue、FindFirstChangeNotification用以監(jiān)控注冊表與文件系統(tǒng),因此使用此種方法的行為監(jiān)控軟件也只能監(jiān)控這兩種行為。這也是為什么我們在互聯(lián)網(wǎng)上搜索注冊表監(jiān)控程序或文件系統(tǒng)監(jiān)控程序時可以得到很多的搜索結(jié)果,而在搜索對其他行為的監(jiān)控程序時,結(jié)果卻寥寥無幾。例如,用百度搜索“注冊表監(jiān)控”,我們可以搜索到1,820,000篇有關(guān)網(wǎng)頁,而如果搜索“結(jié)束進(jìn)程監(jiān)控”,得到的搜索結(jié)果大多為“進(jìn)程結(jié)束”,很少有符合“結(jié)束進(jìn)程監(jiān)控”搜索條件的網(wǎng)頁。而本軟件通過修改系統(tǒng)內(nèi)核,不受限于Windows,提供對全局鉤子設(shè)置、遠(yuǎn)程線程注入等行為的監(jiān)控,而且可以在以后的版本中隨時加入對其他行為的監(jiān)控。 更準(zhǔn)的信息獲取Windows提供的通知函數(shù)僅能在某個進(jìn)程進(jìn)行特定操作時通知監(jiān)控軟件該行為發(fā)生了,卻沒有提供與各種行為發(fā)出者的信息,因此,將通知函數(shù)作為行為監(jiān)控基礎(chǔ)的軟件也就不能提供與行為發(fā)出者有關(guān)的各種信息。MJRegWatcher即是這樣一款注冊表監(jiān)控軟件,在修改注冊表后,軟件能給出相應(yīng)提示,但沒有提供有關(guān)操作的發(fā)出者等信息。圖 MJRegWatcher給出的注冊表修改提示本軟件在檢測各種行為的同時,能同時獲取操作的發(fā)出者、操作對象等有關(guān)信息,為用戶識別和清理木馬提供有用信息。圖 、目標(biāo)、處理等信息 更靈敏的反應(yīng)速度不論的通過用戶命令進(jìn)行掃描還是定期進(jìn)行掃描來檢測木馬,都不能在木馬入侵的第一時間發(fā)現(xiàn)木馬。當(dāng)進(jìn)行掃描時,木馬可能已經(jīng)運行了一段時間并造成了損失。同時,定期的后臺掃描也會消耗一定的系統(tǒng)資源,降低系統(tǒng)的運行速度。本軟件使用行為監(jiān)控作為檢測基礎(chǔ),木馬進(jìn)行函數(shù)調(diào)用時會自動的觸發(fā)行為驗證步驟,因此能立即作出反應(yīng),不會出現(xiàn)漏檢,也不會像后臺掃描那樣占用過多的系統(tǒng)資源。 自我保護(hù)功能作為一款防木馬軟件,首先是
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1