求杀毒软件拦截进程运行的原理/C++/VC我想写一个小工具,比如发现指定路径的exe运行了,我的工具能够拦截住它,然后让我选是否让他运行。这个怎么弄啊?

解决方案 »

  1.   

    驱动级别的HOOK。看看进程启动的过程,在看雪上有篇翻译。
      

  2.   

    http://www.codeproject.com/KB/system/soviet_protector.aspx
      

  3.   

    很简单,文件系统过滤驱动,你可以选择使用或是不适用FilterMgr实现。这东西早就不是什么秘密了,驱动开发书上都有讲的。原理就是拦截IRP_MJ_CREATE,然后ObQueryNameString获得FileObject的名称,然后转到自己的SSDT Hook函数去进行处理
      

  4.   

    直接挂钩是不够的,不然当有进程即将运行才进行文件扫描岂不是慢死?你会发现这个文件如果有毒,打开的瞬间就会被拦截下来,这就是过滤驱动的功劳。而且很多杀软采用了FSD Hook实现监控
      

  5.   

    HOOK吧。
    应用层的话,CreateProcess
    NativeAPI, ZwCreateProcess
    驱动层的话,SSDT,NtCreateProcess