中的Pandex的分析文章中,我已經閱讀了以下內容:IRP_MJ_DEVICE_CONTROL隱藏進程?
"The driver export its device object to user mode through symbolic link
path \\.\Runtime.
It implements functionality to hide a process through its IRP_MJ_DEVICE_CONTROL
dispatch routine when a user-mode program calls the DeviceIoControl API with
process id as the input parameter"
(注:所提到的驅動程序執行隱形rootkit的活動)
由於「隱形的rootkit活動」和我對司機knwoledge不最好的,我 開始閱讀有關Windows中使用的整個驅動程序概念的文件。
因此,我收集以下內容(我嘗試用我的話來解釋整體,然後我會問這個問題): 例如,如果應用程序需要來自設備的數據,則它會聯繫os,os聯繫驅動程序,驅動程序知道如何與設備進行通信,因此驅動程序將所需的數據傳遞給將其傳遞給應用程序的os。 因此,驅動程序堆棧處理IRP請求。設備對象代表設備。一個或多個設備對象與設備相關聯。它們是設備上所有操作的目標。
所以現在,如果他們說它「將設備對象導出到用戶模式」,那麼我必須問: a)他們是如何完全做到的? b)將設備對象導出到用戶模式也意味着我現在可以從用戶模式應用程序訪問它,對吧? (通常不可能)
關於第二部分,特別是關於IRP_MJ_DEVICE_CONTROL,我知道是由I/O管理器發送的。但究竟是什麼呢?以及他們如何使用它來隱藏進程? 我還讀了這個IRP_MJ_DEVICE_CONTROL是代表已調用DeviceIoControl函數的用戶模式應用程序 發送的。 關於DeviceIoControl我讀過它允許應用程序直接與設備通信。因此,它會發送代表要執行的操作的控制代碼。 他們說,它通過將進程ID添加到DeviceIoControl來隱藏進程。
但是,他們又如何隱藏進程......?
PS:我會說,他們所說的「功能」(在分析中沒有解釋)需要隱藏的一部分,但我不知道他們爲什麼把整個IRP_MJ_DEVICE_CONTROL等
所以,我會高興,如果有人告訴我,整個事情是如何工作的,使得司機的概念使得在這種情況下,感...
最好的問候,
驅動程序如何隱藏進程不在該報價中討論。 – eryksun
符號鏈接用於打開設備的句柄。 (例如,對象命名空間中的C:驅動器的符號鏈接「\ Global ?? \ C:'指向實際設備,例如'\ Device \ HarddiskVolume1'。)Win32'DeviceIoControl'用於發送目標進程ID。這將調用系統函數'NtDeviceIoControlFile',如果驅動程序實現它,則可以使用快速I/O,否則將'IRP_MJ_DEVICE_CONTROL'數據包排隊並分發給驅動程序。 – eryksun