想知道「Process Explorer」或「Combo Fix」這樣的應用程序如何檢測隱藏進程?我假設這必須在C或C++中完成。即使在.NET中它也很容易訪問進程列表,但是這並不總是準確的,我知道root工具包可以掩蓋自己的任務管理器。它是通過內存訪問和IO嗎?好奇,如果有人知道這是如何完成的。如何檢測隱藏進程
如何檢測隱藏進程
回答
這個問題無法回答。這取決於過程如何被隱藏起來。例如,某人可以通過將用戶模式DLL注入到所有進程中來隱藏進程,這些進程掛鉤了EnumProcesses
,Process32Next
等,以及與進程枚舉相關的所有其他API。這將被跳過跳鉤的蹦牀繞過。
但是,如果通過修改內核EPROCESS
鏈接列表來隱藏進程,該列表包含進程列表,則需要另一種方法來破壞執行隱藏的代碼。如果您定義了您認爲某個流程「隱藏」的方式,也許我們可以建議如何檢測它。你認爲哪些進程被隱藏,但仍然被Process Explorer發現?
還注意到你說的考慮,有可能是 多種方式隱藏的過程是什麼。 檢測到這一點的一些常見方法是什麼?
問題是,如果你不知道你在找什麼,幾乎不可能找到它。假設一個進程通過掛鉤EnumProcesses
使其隱藏到任務管理器中。你可能會認爲這將是一個容易發現的情況。然而,這個過程可能會通過各種不同的方式掛鉤EnumProcesses
。例如,函數開始時的無條件鉤子,IAT鉤子,導致在EnumProcesses
處發生訪問衝突,並通過VEH捕獲並修改EIP/RIP等。即使在這種簡單情況下,它也是不可能保證檢測到掛鉤。這一切都假設鉤子已經在特定的API的usermode上執行,並且代碼不會試圖隱藏自己的檢測。
如果你正在尋找一般的指導方針,最好的方法可能是看看常見的繞行技術。一旦你知道一個方法是如何工作的,編寫代碼來檢測操作是微不足道的。
也許如果你給出了編寫這類代碼的動機或它的用途,我們將能夠更好地幫助你。
如果您正在尋找方案繞行其他進程的執行方式,它通常是通過兩種方法之一:
- 動態(運行時)繞行 - 這是比較常見的方法是圖書館使用的是什麼,如Microsoft Detours。這裏是一個相關的論文,其中函數的前幾個字節被覆蓋,以無條件地分支到儀器。
- (靜態)二進制重寫 - 這是一種不太常見的rootkit方法,但被研究項目使用。它允許通過靜態分析和覆蓋二進制來執行繞行。用於Windows的舊版(不公開提供)的軟件包是Etch。 This paper從概念上給出了它如何工作的高級視圖。
雖然Detours展示了一種動態迂迴的方法,但業界有無數的方法,特別是在逆向工程和黑客領域。這些包括上面提到的IAT和斷點方法。爲了「爲你指出正確的方向」,你應該看看在研究項目和逆向工程領域進行的「研究」。
- 1. 如何檢測splitViewController隱藏?
- 2. 如何檢測Linux中的隱藏進程
- 3. C#隱藏進程(進程不隱藏)
- 4. Android隱藏進程
- 5. IRP_MJ_DEVICE_CONTROL隱藏進程?
- 6. 如何在C#中隱藏/取消隱藏進程?
- 7. 如何啓動進程隱藏?
- 8. 如何隱藏進度條?
- 9. 如何隱藏/在檢票
- 10. 從進程列表中隱藏進程
- 11. 啓動隱藏進程C#
- 12. Ajax進程隱藏響應
- 13. 不能隱藏進程
- 14. 隱藏進程窗口
- 15. 隱藏進程命令行
- 16. 的Android隱藏進程
- 17. 如何檢測Android軟件鍵盤何時隱藏?
- 18. jQuery檢測,隱藏先前(jsFiddle封閉)
- 19. 檢測位置和隱藏元素
- 20. 檢測iPad的鍵盤隱藏按鈕
- 21. 檢測隱藏的軟鍵盤
- 22. 檢測軟鍵盤隱藏狀態
- 23. 檢測溢出的可見性:隱藏
- 24. 檢測列隱藏或顯示
- 25. 檢測點擊以顯示/隱藏UINavigationBar
- 26. 檢測HTML父項是否隱藏
- 27. 檢測PowerPoint幻燈片是否隱藏
- 28. 如何檢測殺死進程事件
- 29. 如何檢測父進程的關閉?
- 30. 如何檢測UIStatusBar的隱藏和顯示?
+1,正是我在想的 – 2012-01-14 21:30:27
我不是在尋找代碼或確切的答案,但我認爲它不會很難指向我在一些資源的正確方向。感謝您的迴應。 – 2012-01-14 21:34:16
同樣考慮到你所說的話,可能有多種方法來隱藏進程。檢測此問題的一些常用方法有哪些? – 2012-01-14 21:37:39