ntoskrnl.exe导出的system service比较容易拦截,但是不知道如何去拦截service id>1000的system service?
真的很急,哪位大侠知道,请求帮助。本人想过很多思路,但不具备通用性,或多或少有些缺陷,大家可以各抒己见,都给分。

解决方案 »

  1.   

    建议参考Undocument Windows NT一书,你可以参考www.sysinternals.com网站关于RegMon和FileMon源码,这些源码都是通过拦截Windows NT系统服务(本机API调用 Ring0)实现的。在电脑编程技巧与维护杂志,也有一些关于DDK开发拦截本机API的文章。
       相对而言,NT系统服务和COM API拦截是一个比较头痛的问题,尤其是后者.
    前者通过未见文档的内核调用可以轻松地通过WDM驱动程序拦截,一些类似于NTCreateFile这样的系统服务.而后者目前还不知道比较好的解决办法,尽管Detours声称可以拦截COM 接口API,但是它没有提供一个具体的例子,使用起来很不理想.
      

  2.   

    <1000的system service非常容易就可以拦截到,但是>1000的都是win32 gdi,user....等,莫非必须hook int 2e吗?
     我实在不甘心这样做。
      RegMon,FileMon都只是拦截了<1000的system service.
      至于Detours还没有仔细研究过。我回头看看。
      可以继续讨论。
     
    undoc window nt,inside win2k都是windows系统的好书,我研究了大部分,很有用处。