2009-09-19 40 views
7

我知道WinAPI具有內置的黑客功能。C++和進程內存保護

我甚至用它們在C#中使用的PInvoke ...破解掃雷......這是很容易...所以...

我怎麼能保護進程內存編輯我的申請,拒絕DLL注入,其他黑客方式。怎麼樣?!在Windows

希望WinAPI的具有類似虛空DontTouchMeOrIWillTerminateYou(bool protect) ...

+2

這個問題的措辭可能會更好,但問題本身值得提問。 +1 –

+0

相關:http://stackoverflow.com/questions/869320/how-would-i-go-about-prevent-dll-injection/869466 –

+0

措辭很好!爲此+1和一個很好的問題! – Narek

回答

9

訪問控制是對每個對象爲基礎。如果要保護過程對象,則需要在創建過程(通過CreateProcess的lpProcessAttributes)或之後(通過SetKernelObjectSecurity)時設置過程對象的ACL。如果向ACL添加「拒絕全部」條目,則攻擊者嘗試打開該進程將失敗。當然,進程的所有者(以及用戶運行的任何惡意代碼)可以將ACL更改回原來的狀態 - 但惡意代碼可能沒有準備好這樣做。爲了有效防止來自用戶空間的攻擊,您需要以非交互式用戶身份(例如LocalSystem)運行該進程。

沒有足夠的保護可以防止來自內核空間的攻擊,所以任何可以安裝驅動程序的人也可以破解系統上的任何進程。

+0

1.任何檢測啓動器應用程序的方法? 2.我可以檢測到附加並禁用攻擊者(即時PC崩潰或其他...) – user175908

4

黑客?不。它被稱爲調試(大部分)

而你的問題的簡短答案是「不,你不能那樣做」。我聽說在Vista和後來有一些你無法調試的操作系統進程(DRM進程和類似的),但我不確定你是否可以讓你的進程以這種方式運行。

真正的問題是,爲什麼你要做到這一點,也不要你有更重要的事情擔心(比如,性能和可用性,更何況你的軟件的正確性)?

+0

我需要性能和安全。 – user175908

1

關於內存編輯,檢測它的一個微不足道的方法是對您的某些數據進行校驗和。

+0

價值觀總是在變化...... – user175908

0

不部署/由最終用戶控制一臺機器上運行的過程;相反,你自己的機器上運行的過程,並讓最終用戶通過互聯網與您的溝通過程。

+0

你可能稱之爲LAG? – user175908