我了解较旧的 Procmon 及其前身(filemon、regmon 等)使用虚拟驱动程序来 Hook 内核。但是,Patchguard 可防止 64 位 Vista+ 上的 SSDT Hook 等。
据我了解,Procmon 现在使用 minifilter 驱动程序进行文件 IO 监控,并使用 ETW 进行网络监控。但是,我不清楚它如何监视注册表访问和进程/图像/线程事件?它也使用 ETW 来实现这些吗?
最佳答案
有很多回调用于监视内核中的支持(自 xp 以来):
注册表 -> http://msdn.microsoft.com/en-us/library/windows/hardware/ff545879(v=vs.85).aspx
进程/图像/线程通知 - PsSetCreateProcessNotifyRoutineEx/PsSetLoadImageNotifyRoutine/PsSetCreateThreadNotifyRoutine -> http://msdn.microsoft.com/en-us/library/windows/hardware/ff559917(v=vs.85).aspx
- 用于句柄监控的对象管理器回调 -> http://msdn.microsoft.com/en-us/library/windows/hardware/ff558692(v=vs.85).aspx
在 xp 上有一些限制,但从 vista 开始它们功能齐全。无需为任何监控事件修补任何内部表。
关于hook - Procmon 如何在 64 位 Vista+ 上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068842/