C#挂钩Windows进程以检查调试进程

时间:2010-10-10 22:06:39

标签: c# .net windows process hook

我想知道是否有办法可以挂钩Windows进程以检查是否有任何可疑程序运行(Wireshark,Fiddler,OllyDBG等)。

我想挂钩Windows进程,以便在检测到不需要的进程时关闭客户端或实时弹出消息。

如果你们能为我提供任何可以做到这一点的链接,那就太好了。

谢谢!

4 个答案:

答案 0 :(得分:1)

Process[] processlist = Process.GetProcesses();

然后浏览列表,根据需要为您不想运行的应用程序执行操作。

答案 1 :(得分:1)

您可以使用Win32_Process的WMI创建事件来检测流程创建。每个进程都会创建一个Win32_Process实例,因此查找新实例将告诉您(近实时)创建进程。

要接收WMI创建事件,请参阅此页面:http://msdn.microsoft.com/en-us/library/system.management.eventquery.aspx(编辑:不同的链接,现在要在C#中进行采样)。

答案 2 :(得分:0)

EnumWindows枚举所有顶级窗口。

并且您不希望将C#dll注入其他进程。这需要将.net运行时加载到该进程中。这浪费了RAM,如果进程是使用.net的不同版本的.net应用程序,则存在版本问题。特别是如果在进程加载自己的.net版本之前注入了你的dll。

你想通过注入那个你无法从外面实现的过程来实现什么?

答案 3 :(得分:0)

您可能想在CodePlex上查看EasyHook(http://easyhook.codeplex.com)。 Here是一些讨论,据说人们已经能够挂钩到CreateProcess。如果您设法挂钩该API函数,则可以在创建时知道创建的进程。