2013-02-04 73 views
2

我有一個在WinSock模塊上執行一些內聯​​鉤子(發送和接收函數)的進程。 在與McAfee的機器,我可以看到兩個dll被注入到我的過程:阻止邁克爾Dll注入

  • hipi.dll
  • hipqa.dll

二者也可能做內聯掛接這些功能我碰到了碰撞和不想要的行爲。是否有防止/卸載這些dll的選項,以免它們干擾?

10倍, 蓋伊

+0

這與C++有什麼關係? –

+2

鏈接:http://stackoverflow.com/questions/9450372/prevent-dll-injection-from-an-dll-c – 2013-02-04 08:41:39

+0

@meh我的過程的代碼是在C++中。因此,如果有代碼解決方案,應該使用C++ ... – Guy

回答

0

您有2個選項。

  1. 爲您的進程添加一個排除項,以便McAfee不會嘗試掃描它。我不使用邁克菲的產品,但我會認爲這將是一個相對簡單的過程。
  2. 卸載McAfee
0

最簡單的解決方法就是解開受影響的功能。我必須這樣做才能解決一些戴爾crapware的問題。儘管它需要對x86彙編的一些理解,但它並不過分困難。您必須禁用DEP,使修補的代碼可寫,找到原始指令並將其複製回來。查找原始說明可能意味着需要拆解補丁。

0

另一種方法是將它掛在不同的地方。例如,將IAT掛鉤,然後在完成任何想要的操作後,將執行轉回到真正的功能,然後再通過McAfee的掛鉤。

1

實現DLL注入(掛鉤)有許多場景,順便說一句,您必須瞭解更多關於每種方法背後的東西是如何工作的,最常見的是使用CreateRemoteThread()API函數,然後您必須注入安全每個進程都有DLL,鉤子/重定向/拒絕任何對CreateRemoteThread()或任何「危險的」API調用的調用。

PS:但是在你的腦海:

用戶模式掛鉤絕不能申請額外的安全檢查 任何安全的方式的選項。如果你只想 到「沙箱」一個專門的進程,你就知道得很清楚了,而且這個進程實際上並不知道關於EasyHook的 ,這可能會成功!但千萬不要試圖編寫任何基於用戶模式掛鉤的安全軟件。它不會工作,我保證你...

+0

-1,這說明如何你可以做一個鉤子,而不是阻止一個。 – MSalters

+0

@Salters:通過鉤住鉤子函數(例如:CreateRemoteThread(),virtualallocex)來防止鉤子,這就是防病毒軟件的工作原理... –

+1

[如果您仍然不確定問自己,爲什麼防病毒軟件使用鉤子?](http://stackoverflow.com/questions/869320/how-would-i-go-about-prevent-dll-injection) –

0

我不得不處理類似的事情一次。閱讀他們自己的掛鉤裝配存根,這樣你就可以弄清楚如何掛鉤你的掛鉤。

0

我想像McAfee正在從內核模式執行DLL注入。他們很可能找到KeServiceDescriptorTable的地址(由32位系統上的NTOSKRNL導出,其地址通過KiSystemServiceRepeat->接近由IA32_LSTAR模型特定寄存器找到的KiSystemCall64在64位環境中泄漏),然後從NtCreateThreadEx中查找服務表,或者他們使用KeInitializeApc和KeInsertQueueApc(都由NTOSKRNL導出)進行APC注入(自定義NtQueueApcThread包裝器)。這是合乎邏輯的,因爲他們是一個擁有大量資源的安全廠商,我懷疑他們會從用戶模式注入。

可能是他們濫用PsSetCreateProcessNotifyRoutineEx或PsSetLoadImageNotifyRoutineEx來檢測新的進程創建。第一個不如後者,後者更適合過濾NTDLL.DLL,因爲它是第一個加載到每個進程中的模塊,並且表示該進程實際上已經正確啓動並且準備好執行它(在Windows模塊加載之後,並且由於McAfee需要等待Win32模塊(如kernel32.dll)被加載,否則如果他們在注入的模塊中完全使用Win32 API,它們會崩潰該進程)。

你可以嘗試攔截LdrInitializeThunk或KiUserApcDispatcher,但說實話,你可以做的事情不多。無論您做什麼,邁克菲都會找到注入進程的方式,因爲它們可以從內核模式進行控制。如果您通過驅動程序的各種內核模式回調來開發進程保護,則它們將使用通過模式匹配掃描ntoskrnl.exe找到的非導出例程或未調用回調通知API的導出例程繞過它。如果在遠程攻擊者執行本地進程時爲本地線程創建/ APC調用本地修補例程,他們將找到方法來阻止並繞過它(例如,將進程地址空間中已修補的例程修補回到原始,注入,然後重新修補字節回來)。

如果您想要使用邁克菲擁有的特權來阻止安全軟件,那麼您就在玩火。這與Anti-Cheat無法阻止擁有內核模式訪問的遊戲黑客的方式類似,並且即使標記了現在啓用的調試模式/測試模式,也會採取嚴厲的措施。

相關問題