2009-12-31 50 views
10

有什麼辦法可以保護我的Delphi應用程序免於被Windows任務管理器(或其他像Process Explorer)殺死?我認爲Windows消息可以做到這一點(通過做一個鉤子和攔截TerminateProcess消息)。我該如何讓任務管理器不要殺我的程序?

我想要一個這種保護的例子。卡巴斯基反病毒軟件套件就是這樣的;我們不能在任務管理器中結束他們的進程。

+14

你有這樣做的合法理由嗎? – 2009-12-31 06:11:21

+1

我建議一個替代方案:有一個顯示正確關閉的狀態標誌,並且如果您在沒有設置關閉標誌的情況下啓動,請記錄它(或更大)。然後有一個服務來監視你的過程並確保它正在運行。如果用戶殺死它,只需再次啓動。這是我們用一個「必須運行」的過程,用戶可能會搞砸的。 – mj2008 2009-12-31 09:38:11

+7

我有一個建議:請不要這樣做。 – 2009-12-31 13:39:01

回答

11

AV程序如卡巴斯基可能使用驅動程序並使用掛鉤來防止終止。 在你的情況下,我會建議在進程上設置一個ACL,這可以防止任務管理器或cmdline工具終止(如果用戶沒有調試權限)。當然,用戶可以隨時使用像Process Explorer這樣的工具,擁有該進程的所有權,設置新的ACL和終止。

如果用戶不是管理員,則只需在不同的用戶上下文中運行該流程即可(例如,從服務啓動該流程)。

sample所示,設置進程ACL很容易,Jedi Windows Security Library

+1

oaky Remko, 這個庫令我滿意,這個例子顯示可以響應我的需求,因爲我只想要一些「un」 - 由新手進行操作(uses&taskmanager !!) – djiga4me 2009-12-31 13:06:47

+1

如果Remko's是你喜歡的答案,您應該將其標記爲接受的答案。 – Josh 2010-01-02 10:10:43

+0

@JoshEinstein現在***這是***文明。評論*和*您的答案+1。 – 2012-03-11 19:44:41

14

正如Kornel所說,對用戶隔離的進程有OS級保護。但是一般來說,沒有辦法阻止你的進程被允許這樣做的用戶終止。並且用戶有權終止作爲該用戶運行的進程。

即使您想將其作爲SYSTEM運行,也不能使用此過程與登錄用戶進行交互。您需要將其作爲服務運行,並且它不具有GUI。您可以嘗試其他方法,例如將一個DLL加載到像Explorer.exe這樣的進程中,用戶不會因爲他們不想終止而終止,但這只是濫用。

如果開發人員可以編寫無法終止的應用程序,那對最終用戶來說就是一個非常糟糕的情況。如果這是一個內部應用程序,則可以檢查服務器故障以查看是否有某種方法可以使用組策略實現它。

-1

創建一個NT服務項目,服務進程不能用進程管理器終止,但是由內部服務管理器控制。

5

這是一個非常糟糕的主意。如果你的程序運行在別人的計算機上,那麼它就在他們的財產上,而不是你的計算機上,並且需要在家中作爲客人行事。這意味着你不會像你擁有這個地方那樣行事,而且你也不會告訴電腦的主人他不能用自己的財產做什麼,比如殺掉他不想運行的任務。如果你這樣做,那麼你的程序不會比惡意軟件好,並且可能被視爲惡意軟件。

+3

-1:電腦可能不是他們的財產。例如幫助經理人員監督經營者的桌面,尤其是當他們可以訪問敏感數據時。 OS不是關於ethi的,而是關於編程問題 – 2011-07-26 21:17:39

+1

@Andy:在這種情況下,有適當的策略編輯工具可用於管理來處理這些情況。如果您認爲道德可以以某種方式與編程分離,請不要再次觸摸編譯器。我不想冒着你寫的東西在我的機器上結束的風險。 – 2011-07-26 21:37:20

+0

爲什麼不詳細描述這一點? OP已經聲明,這不是關於惡意軟件(評論中) – 2011-07-26 21:46:05

3

我認爲你問的是錯誤的問題。

您試圖解決「如果連接將在與服務器聊天過程中以錯誤的方式終止。答案是不是到「拒絕進程終止」,而是到「預見連接問題並寫入錯誤後退代碼」!

爲什麼?原因顯而易見,連接終止可能是由於網絡問題(您不能拒絕用戶從網絡上拔下機器)而不是終止客戶端!

Why can't you trap TerminateProcess?

如果你擔心應用程序崩潰 - 只需使用Application Restart & Recovery API

0

最簡單的方法:你可以開始2進程,讓他們「看」對方。
如果其中一個關閉了,讓其他程序重新啓動它。它會阻止新手(如你所說)殺死那個進程。

對不起,但我認爲你的「服務器/客戶端應用程序」有木馬/後門能力。 「客戶端應用程序發送一些有用的數據」,「unkillable進程」(在您的意見)似乎tooooo我懷疑嫌疑人。

相關問題