根据可执行文件停止应用程序

时间:2010-02-17 15:34:09

标签: c# process hook

我想要运行一个服务来检测应用程序何时尝试启动,并基于其可执行文件(我可能只是对文件进行哈希并保留一个被阻止的应用程序哈希列表以保持简单) ,阻止它一起执行。理想情况下,我希望使用C#来实现这一目标,但如果更有意义的话,我会愿意使用其他平台。

我想过挂钩进入某种“进程启动/启动”事件,并使用已启动进程的进程ID来确定可执行文件的路径(我知道如何执行第二部分,一旦我有进程ID),然后如果应用程序在阻止列表中,则发送某种终止信号。我前段时间开始调查这个过程,但我得到this question的反应表明这种方法存在缺陷。

这确实不是解决这个问题的可行方法吗?有人可以建议更好的路线吗?

2 个答案:

答案 0 :(得分:1)

Windows无法提供在进程即将启动时生成任何类型通知的直接方法。你可以发现它已经开始了,如我在WMI代码中的帖子所示。从技术上讲,可以将DLL注入所有正在运行的进程并绕过CreateProcess()API调用。由于这可能非常不稳定,因此在C#语言中编写类似的代码也是不可能的。你无法初始化CLR。

这种功能不可用,这不是任何疏忽。这将是一个相当容易被利用的安全漏洞。

答案 1 :(得分:1)