2012-12-04 66 views
1

我有我的應用程序執行不同的「工作」 Windows服務(發送電子郵件,創建備份,檢查我的應用程序更新,提供一些服務...)如何防止另一個進程終止我的服務?

最近一些報道的costumers使用一些網上銀行之間的問題網站和我的應用程序。

在尋找解決方案時,我發現有關由網上銀行網站安裝的插件(ActiveX)的報告。

此ActiveX安裝一個離奇服務(GbPlugin,從GAS TECNOLOGIA),能殺死總部設在一些白癡啓發式可疑的應用程序,和我的服務就是一個受害者!

現在我試圖「免疫」我的服務。

有沒有一些方法來限制我的服務終止以保護它?

我不能在服務屬性中使用「自動重啓」選項,因爲我不能被殺死!

這兩項服務都以LOCALSYSTEM身份運行。

+1

這取決於您的服務和他們的權利。如果你的服務作爲系統運行並且它們的服務器以用戶身份運行,那麼它應該不能殺死它。但我會聯繫你的銀行。瀏覽器插件安裝服務聽起來不太好.. – GolezTrol

+0

「瀏覽器插件安裝服務聽起來不太好」:是的,但這是巴西!我的服務也是LOCALSYSTEM作爲插件服務! –

+0

更改用戶爲他們的服務爲用戶,那將不具有這些權利 –

回答

4

最有可能的服務運行爲LOCALSYSTEM,因此可以殺死任何喜歡的東西。所以你不可能防禦它。

事實上,一個快速的網絡搜索引發了一些點擊,表明服務確實運行爲LOCALSYSTEM

你唯一的成功解決方案將涉及其他軟件。要麼迫使您的用戶將其刪除,要麼與其開發人員一起找到一種白名單程序的方式。

+3

我會問這個服務是否是代碼簽名的。如果不是,那就是第一步。然後聯繫插件作者,將該證書認定爲有效並且不會被殺死。 – mj2008

2

假設GbPlugin正在經歷正常的單片機程序停止服務,而不是隻是蠻力終止它,然後你有一對夫婦的選擇,以避免您的服務從停止:

  1. 您的服務設置的AllowStop財產假。

  2. OnStop事件中,將參數Stopped設置爲False。

無論哪種方式也可以防止你在正常consitions停止自己的服務。要解決此問題,您可以編寫一個單獨的應用程序,使用Win32 API ControlService()函數向您的服務發送自定義命令。在你的服務中,讓它覆蓋虛擬DoCustomControl()方法來查找該命令。讓它將AllowStop屬性重置爲True,或者在OnStop事件可以查看的某個位置設置標誌,然後撥打Controller(SERVICE_CONTROL_STOP)啓動正常停止。

不用說,這有點矯枉過正。如果可能,更好的選擇是簡單地聯繫GAS Tecnologia並詢問爲什麼您的服務被GbPlugin的啓發式標記,然後在您的服務中更改該條件,或者要求他們修復GbPlugin以忽略您的服務。

+0

鑑於此軟件旨在將其視爲惡意軟件,蠻力似乎很可能! –

+0

@DavidHeffernan:同意了,但我們只能推測沒有更多的信息。 –