我有一个Windows服务,可以为我的应用程序执行各种“工作”(发送电子邮件,创建备份,检查我的应用程序更新,提供一些服务......)
最近,一些客户报告了使用某些网上银行网站和我的应用程序之间的问题。
在搜索解决方案时,我发现有关网上银行网站安装的插件(ActiveX)的报告。
此ActiveX安装了一个奇异的服务(来自GAS Tecnologia的GbPlugin),该服务基于一些白痴启发式杀死可疑应用程序,我的服务是受害者!
现在我正试图“免疫”我的服务。
是否有一些方法可以限制我的服务终止以保护它?
我不能在服务属性中使用“自动重启”选项,因为我无法被杀!
两个服务都以LOCALSYSTEM身份运行。
答案 0 :(得分:4)
很可能该服务以LOCALSYSTEM
运行,因此可以杀死它喜欢的任何内容。所以你极不可能防御它。
实际上,快速网络搜索引发了一些点击,表明该服务确实以LOCALSYSTEM
运行。
您唯一可行的解决方案是涉及其他软件。要么强迫您的用户将其删除,要么与其开发人员合作以找到将程序列入白名单的方法。
答案 1 :(得分:2)
假设GbPlugin正在通过正常的SCM程序来停止服务,而不仅仅是暴力终止它们,那么你有几个选择来阻止你的服务停止:
将您服务的AllowStop
媒体资源设为False。
OnStop
事件中,将Stopped
参数设置为False。
任何一种方法都会阻止您在正常情况下停止自己的服务。要解决此问题,您可以编写一个单独的应用程序,该应用程序使用Win32 API ControlService()
函数向您的服务发送自定义命令。在您的服务中,让它覆盖虚拟DoCustomControl()
方法以查找该命令。让它将AllowStop
属性重置为True,或者在OnStop
事件可以查看的位置设置标记,然后调用Controller(SERVICE_CONTROL_STOP)
以启动正常停止。
毋庸置疑,这有点矫枉过正。如果可能,更好的选择是简单地联系GAS Tecnologia并询问为什么您的服务被GbPlugin的启发式标记,然后在您的服务中更改该条件,或者要求他们修复GbPlugin以忽略您的服务。