1

我有一个 Windows 服务,它为我的应用程序执行各种“工作”(发送电子邮件、创建备份、检查我的应用程序更新、提供一些服务......)

最近一些客户报告了使用一些网上银行网站和我的应用程序之间的问题。

在寻找解决方案时,我发现了有关网上银行网站安装的插件 (ActiveX) 的报告。

这个 ActiveX 安装了一个奇怪的服务(GbPlugin,来自 GAS Tecnologia),它会根据一些愚蠢的启发式方法杀死可疑的应用程序,而我的服务是受害者!

现在我正在尝试“免疫”我的服务。

是否有一些方法可以限制我的服务终止以保护它?

我不能使用服务属性中的“自动重启”选项,因为我不能被杀死!

这两个服务都作为 LOCALSYSTEM 运行。

4

2 回答 2

4

该服务最有可能运行LOCALSYSTEM,因此可以杀死它喜欢的任何东西。因此,您极不可能防御它。

事实上,快速的网络搜索会引发一些命中,表明该服务确实以LOCALSYSTEM.

您唯一可行的解​​决方案将涉及其他软件。要么强迫你的用户删除它,要么与它的开发者一起寻找一种方法来将你的程序列入白名单。

于 2012-12-04T12:29:31.090 回答
2

假设 GbPlugin 正在通过正常的 SCM 程序来停止服务,而不仅仅是暴力终止它们,那么您有几个选择来阻止您的服务停止:

  1. 将服务的AllowStop属性设置为 False。

  2. 在这种情况OnStop下,将Stopped参数设置为 False。

这两种方法都会阻止您在正常情况下停止自己的服务。要解决这个问题,您可以编写一个单独的应用程序,该应用程序使用 Win32 APIControlService()函数向您的服务发送自定义命令。在您的服务中,让它覆盖虚拟DoCustomControl()方法以查找该命令。让它要么将属性重置为 True,要么在事件可以查看的AllowStop某处设置一个标志,然后调用以启动正常停止。OnStopController(SERVICE_CONTROL_STOP)

不用说,这有点矫枉过正。如果可能,更好的选择是简单地联系 GAS Tecnologia 并询问为什么您的服务被 GbPlugin 的启发式标记,然后更改您的服务中的条件,或者要求他们修复 GbPlugin 以忽略您的服务。

于 2012-12-04T16:59:02.573 回答