我想知道是否有办法可以挂钩Windows进程以检查是否有任何可疑程序运行(Wireshark,Fiddler,OllyDBG等)。
我想挂钩Windows进程,以便在检测到不需要的进程时关闭客户端或实时弹出消息。
如果你们能为我提供任何可以做到这一点的链接,那就太好了。
谢谢!
答案 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函数,则可以在创建时知道创建的进程。