首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监控系统中的进程启动

监控系统中的进程启动
EN

Stack Overflow用户
提问于 2008-11-16 07:18:05
回答 4查看 9K关注 0票数 7

是否有一种方法可以在系统中启动的进程启动之前对其进行监控?

示例:

在像ZoneAlarm或杀毒程序这样的程序上,当你运行一个程序时,它会在它运行之前询问你是否允许运行这个程序。

EN

回答 4

Stack Overflow用户

发布于 2008-11-16 18:06:32

有几种方法可以做到这一点。如果您只需要跟踪来自特定程序(或几个程序)的进程创建,那么这里提到的EasyHook/Detour方法将非常有效地工作,但是您需要在每个程序中有效地在CreateProcess上安装一个钩子,所以如果您想要跟踪系统中的所有进程创建,那么它不是一个很好的解决方案。

在基于NT的Windows变体(NT/2000/XP/Vista)中有一个特定的API,称为PsSetCreateProcessNotifyRoutine()。不幸的是,您只能从ring0调用此函数,因此需要在驱动程序中完成。在这篇CodeProject文章中有一个很方便的解释(和代码):http://www.codeproject.com/KB/threads/procmon.aspx

AFAIK,这只是一个通知,它本身并不允许您告诉系统是否应该创建进程。但是,如果您需要这样做,您可以暂停进程(例如,通过附加到它作为调试器),而您的代码决定是否终止它。

票数 7
EN

Stack Overflow用户

发布于 2008-11-16 07:52:51

您应该签出easyhook-continuing-detours项目,它是Microsoft Detours项目的.NET端口。它将允许您挂接非托管API(如CreateProcess)。查看一个简单的类似FileMon的程序here的代码示例。

票数 6
EN

Stack Overflow用户

发布于 2008-11-16 07:32:01

你可以通过使用一个实时的ETW使用者来发现进程何时启动-但是,为了能够采取一些可能会取消进程启动的操作,你必须做一些可疑的/未记录的事情,比如挂钩CreateProcess,或者使用内核筛选器驱动程序阻止对EXE的读取。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/293624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档