文章目錄
- 1.技術應用背景
- 2.效果展示
- 3.功能代碼實作
- 4.知識背景清單
- 5.WMI相關概念
- 6.WMI相關函式
- 7.WMI架構決議
1.技術應用背景
目前已知在殺毒廠商以及游戲廠商的安全對抗程序中,常常需要準確的監控收集并進行檢測用戶創建打開的EXE應用程式是否是安全的,同時也可以將此技術應用于其他應用的安全對抗方案中,那么如何去準確的監控和收集用戶每次點擊打開的EXE應用程式資訊呢?接下來我就進行還原實作下如何準確的監控并收集用戶每次點擊打開EXE應用程式技術,
2.效果展示
下圖展示的是開啟監控程式,這是進行監控電腦上包括系統自啟動EXE程式以及用戶主動點擊啟動應用程式的資訊,

3.功能代碼實作
實作監控用戶所有創建打開EXE程式的資料需要以下幾個步驟:
1.通過呼叫CoInitializeEx函式,進行對COM初始化,
2.通過呼叫 CoCreateInstance函式, 獲得WMI的定位器,
3.通過呼叫IWbemLocator::ConnectServer函式,并指定函式的引數 strNetworkResource 的值為 “root\cimv2”, 從而實作連接到 "IWbemServices"服務器,
- 通過呼叫CoSetProxyBlanket函式,進行設定 IWbemServices的代理,目的是為了WMI 服務能夠模擬客戶端角色,
5.通過呼叫 ExecNotificationQuery函式, 來進行查詢接收事件,
下圖這部分代碼主要的目的是為了初始化COM和WMI的設定,

下面代碼主要實作查詢接收事件,也就是通過ExecNotificationQuery查詢來回圈獲取用戶所創建打開的所有EXE的資料,

4.知識背景清單
概述:WMI技術算得上是一個很古老的技術,它是由微軟提供的,同時也是一種非常可靠的解決方案,WMI它還有一個非常大的優勢,可以進行訪問遠程電腦,它是Windows作業系統中管理資料和操作的基礎模塊,它提供了一個通過作業系統、網路和企業環境去管理本地或遠程計算機的統一介面集,
WMI技術可以應用于:
1.查詢獲取正在運行行程資訊;
2.查詢獲取正在運行執行緒資訊;
3.查詢獲取桌面資訊;
4.查詢獲取環境變數資訊;
5.查詢獲取驅動資訊;
6.查詢獲取檔案夾資訊;
7.查詢獲取系統資訊和系統服務;
8.查詢獲取硬體資訊;
9.查詢獲取磁盤相關資訊,
5.WMI相關概念
1.WBEM它的全稱:Web Based Enterprise Management(基于web的企業管理),它是一種行業規范,建立在企業網路中訪問和共享管理資訊的標準,
2.WMI它的全稱:Windows Management Instrumentation(Windows管理工具),它是WBEM的Windows實作,也就是它要遵守WBEM規則,通過WMI,我們可以獲取關于硬體和軟體的相關資料,也可以提供關于硬體或軟體服務的資料給WMI,
3.COM 它的全稱:Component Object Model(組件物件模型),它是由微軟推出的一套介面規范,通過設定不同組件之間需要遵守的標準與協議,主要用來跨語言、跨行程之間的模塊通信,
6.WMI相關函式
1.CoInitializeEx函式詳解

- CoCreateInstance函式詳解

- ConnectServer函式詳解

- CoSetProxyBlanket函式詳解

5.ExecNotificationQuery函式詳解

7.WMI架構決議
下圖的WMI架構圖來源于MSDN,我們可以從架構圖中很清晰的看到WMI主要分為3的層結構,

1.WMI providersand Managed object(WMI提供者和管理物件)
WMI提供者是一個監控一個或者多個的托管物件的COM介面,
托管物件是指邏輯或者物理組件,例如硬碟驅動器、網路配接器、資料庫系統、作業系統、行程或者服務,
WMI提供者通過托管物件提供的資料向WMI服務提供資料,同時將WMI服務的請求傳遞給托管物件,
WMI提供者是由實作邏輯的DLL和承載著描述資料和操作的類的托管物件格式MOF(Managed Object Format)檔案組成,其中這個兩個檔案都保存在\Windows\System32\wbem目錄下,

2.WMI Infrastructure(WMI基礎結構)
WMI的基礎結構是Windows系統的系統組件,它主要包含兩個模塊:包含WMI Core(WMI核心)的WMI Service(WMI服務)和WMI Repository(WMI存盤庫),
WMI存盤庫是通過WMI Namespace(WMI命名空間)組織起來的,在系統啟動時,WMI服務會創建例如root\cimv2、root\default、root\subscription等等命名空間,
WMI服務扮演著WMi提供者、管理應用和WMI存盤庫之間的協調者角色,一般來說,它是通過一個共享的服務行程svchost來實施作業的,當第一個管理應用向WMI命名空間發起連接時,WMI服務將會啟動,當管理應用不再呼叫WMI時,WMI服務將會關倍訓者進入低記憶體狀態,
3.WMI Consumers(WMI使用者)
它位于WMI構架的最頂層,它是WMI技術使用的載體,對于使用C++代碼實作我們就可以直接通過COM技術直接與下層進行通信,對于.net平臺語言,則要使用System.Management域相關功能與下層進行通信,WMI的使用者,可以進行查詢、列舉資料,也可以運行Provider的方法,還可以向WMI訂閱訊息,其中這些資料操作都是要有相應的Provider來提供,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/265379.html
標籤:其他
上一篇:【Spring Cloud實戰:Eureka】服務注冊與發現
下一篇:大人,時代變了
