防病毒软件通常通过(可能)拦截对文件系统的调用、扫描目标文件然后允许调用完成来提供“实时”保护。根据观察到的行为,我猜每当应用程序尝试打开文件句柄进行读取时都会发生这种情况(至少打开一个安装了 Sophos 的 5 gig 文件 = 速溶咖啡休息时间)
这究竟是如何实现的?他们实际上是使用抽象文件系统的驱动程序,还是只是调用 API(哪些方法?)将自己注入到链中?
有没有标准的方法来检测哪些应用程序正在像这样挂钩?
我已将 .Net 标记为我选择的框架,但我怀疑 P/Invoke 将是必需的,因此尽管 .Net 示例是理想的,但直接的 API 参考几乎一样好。