首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows antivirus如何挂钩文件访问进程?

Windows antivirus如何挂钩文件访问进程?
EN

Stack Overflow用户
提问于 2009-10-07 13:54:50
回答 6查看 17.5K关注 0票数 29

这个主题说明了一切。正常的杀毒软件必须拦截所有文件访问,扫描文件,然后有选择地拒绝对文件的访问(甚至可能向用户显示提示)。如何做到这一点?

我知道有一种叫做API hooking的方法,但这是一个非常肮脏的未经记录的黑客攻击--因此并不是真正可靠。做这件事的“官方”方式是什么?

或者,我会对拦截可执行模块(.DLL、.EXE等)的加载感兴趣,而不仅仅是任意文件读取。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-10-07 13:59:49

在windows的最新版本(至少是XP以上)中,有“筛选器”的概念,可以使用MS筛选器管理器(命令提示符中的fltmc.exe)查看它。

这提供了一个低级I/O钩子,AV程序可以访问该钩子并自动注册,以便将所有I/O请求传递给文件系统。这是一个工具包,您可以获得驱动程序,并为其开发自己的过滤器。

http://www.microsoft.com/whdc/driver/filterdrv/default.mspx是获取深度信息的起点。

票数 29
EN

Stack Overflow用户

发布于 2012-06-19 04:53:33

正如您已经注意到的,挂钩是具有“实时”保护的现成反病毒软件的关键。

你可以看看(被广泛讨论的) winpooch,它已经做了API钩子,但是这个软件有一些主要的缺陷。Sourceforge of Winpooch

还有一篇关于API hooking的Codeproject文章,提供了一些“三层”钩子的库。正如你所想象的,Dll注入有些困难。CodeProject: EasyHook, reinvention of API Hooking

由于您可能对防病毒策略感兴趣,我还建议您看看ClamAV或WinClam,它是开源的(在GPL下) ClamAV for windows

但我必须承认,我不知道如何用C#来做API钩子。在C/ C++中,这(相当)容易...

ADD ON你可能会对FileMon的源代码感兴趣,这是一个广为人知的FileSystem监视器,曾经是SysInternals的,现在是微软的:它使用了微软的驱动程序过滤器API,这至少是众所周知的脆弱。

Link may be found here in Sysinternals forum

票数 10
EN

Stack Overflow用户

发布于 2009-10-07 13:58:04

然而,实现这样的驱动程序是相当复杂和“脆弱的”。

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

https://stackoverflow.com/questions/1531800

复制
相关文章

相似问题

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