防止杀死防病毒进程?

4
我在寻找如何防止应用程序被杀死的相关信息,但并没有找到描述如何防止杀毒软件等应用程序的答案。
我想做一个类似于Gameguard、xTrap的工具,以防止我的XNA在线游戏作弊。
在进行防作弊功能的过程中,我想知道AVG、Norton等杀毒软件如何与操作系统协同工作,不允许管理员用户关闭它们的应用程序,但又可以正常关闭?
如果不使用第二个应用程序来监视我的反作弊应用程序,是否有可能捕获到它的杀死事件,这样我就可以至少在发生这种情况时关闭我的游戏了吗?
我还考虑使用我的游戏作为反作弊的监视器,反之亦然,这样每当其中一个关闭时,另一个也会关闭,但我也想了解上述内容。
从我所见,人们很容易通过简单的调用绕过这些东西,因此使用我的游戏作为反作弊的监视器可能也不是很有效……
希望能得到一些答案、建议和相关代码片段,以提高我的游戏和反作弊应用程序的安全性。
还需要防止调试器(如olly)等附加到它上面的信息。

一般来说,如果你不想让别人篡改你的程序,就不要在他们的电脑上运行你的程序。那是他们的硬件;他们会找到一种方式让它按照他们的意愿工作。 - cdhowie
不幸的是,这似乎不是一个选项,即使我不能完全防止它们,我相信其中很大一部分可以被预防,另一部分人也会半途而废。 - Guapo
如果你不想完全从用户手中拿走代码,那么处理这个问题的最佳方式是让服务器验证游戏客户端发送的内容,以确保它是合理的。服务器应该能够确保客户端声称正在进行的操作实际上是可能的。 - Anon.
@Guapo:也许吧。通常我发现将存储的值通过某些数学方式进行模糊处理是更好的方法,这样它们就不会那么容易被发现。这将立即挫败大多数游戏修改器的攻击。 - cdhowie
如果这能解决所有问题那就太好了,但事实并非如此...还有postmessage、sendmessage、keybd_events等方法可以模拟发送按键等操作。 - Guapo
显示剩余2条评论
1个回答

4

我能想到的唯一方法是通过将代码/DLL挂钩或注入到任务管理器或Kernel32中。

每个进程的终止最终都会调用“TerminateProcess”。

起点:http://www.codeproject.com/KB/vista/api-hooks.aspx

尝试在Google上搜索:TerminateProcess挂钩


非常感谢,这是我对其中一个问题得到的第一个答案。我会去检查一下。 - Guapo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接