怎样实现全局api的钩子呢?

解决方案 »

  1.   

    参考一下:
    http://hi.baidu.com/qiujiejia/blog/item/3c0e9bf05af016bda50f5247.html
      

  2.   

    学API HOOK等,实际上最权威的教材应该还是《WINDOWS核心编程》了,不过有时候如果对这本书还不吃不消,想在网上找点捷径,可能性应该是有的,不过肯定要吃不少苦头。     我是用在GOOGLE上搜索"API HOOK”和"跨进程 API HOOK”入手的。搜到了很多地方都在抄同一份资料就象http://topic.csdn.net/u/20100906/14/d480e814-f571-43e6-b7ba-21b7e4d4f8eb.html,他其中的代码是有问题的,一些解决办法见http://topic.csdn.net/u/20100907/09/a0042944-e7b6-49be-8339-ed24832ef561.html。    但仍然有问题,一个是它用函数名字符串比较的方式来查找API,但是“据说”一些IMAGE_IMPORT_BY_NAME的NAME不一定存在,所以就不能获得IAT中的函数名。    还有一个是用解读PE格式来枚举DLL应该是不能获得显形加载的DLL。    而《WINDOWS核心编程》中却没提及PE格式,用其他的方法来进行API挂接。等你把里面几个帖子看了,再分析《WINDOWS核心编程》
      

  3.   

    全局Hook API,最有效也是最成熟的方法是SSDT Hook。相关资料一大堆,请自己去找吧,一时半会儿也不容易说清。
      

  4.   

    hook api技术我了解一些。而且现在用的是微软的detours。
    我的问题是怎样做全局hook,就是具体的方案。
    比如说 启动一个进程,然后根据进程名来判断是否对此进程调用 进行hook。这个要怎么做
      

  5.   


    不敢苟同,我看过核心编程里的api hook,讲得很浅显。不如去看Detours的Document,用Detours的sdk轻松实现应用层api hook
      

  6.   

    http://blog.csdn.net/wltg2001/archive/2008/04/23/2317059.aspx
    很久以前写的,不过是MASM写的,和C++有一点不同
      

  7.   

    你看清楚我哪里说要看核心编程那本书了,那本书的确讲得浅,因为这种东西如果被利用的话,会有风险,所谓官方不会全解释。那本书里讲的主要是DLL注入的方法。Detours也支持DLL注入,也可以直接创建远程线程,但是这些方法主要都是针对单个进程的,虽然也可以实现全局,但是每创建一个程序都要注入一次,不是特别可靠,而且容易被安全软件拦截。最好还是去修改SSDT,这方面资料微软没有完整公布,很多都是靠摸索出来的,但是也已经发展得很成熟了。