Detours 是微软开发的一个函数库,可用于捕获系统API。在用其进行程序开发之前,得做一些准备工作:
可以到 http://research.microsoft.com/en-us/downloads/d36340fb-4d3c-4ddd-bf5b-1db25d03713d/default.aspx 下载最新的3.0版本。
现在64bit的支持还是要收费的,免费的可以支持32bit的。
下载完毕之后是一个msi文件,需要安装一路next即可。安装完成后需要编译才能生成Detours库。注意安装完成之后会有一个源代码文件,在我
的机器上目录是: A:\Program Files (x86)\Microsoft Research\Detours Express 3.0
把这个目录拷贝出来,到一个有写权限的盘符下面。 然后打开一个命令行cmd程序,切换到vs,或者vc安装的目录下面:
A:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
然后执行设置环境变量的脚本 vcvars32.bat,执行完毕之后可以正常使用vs2010 的工具比如nmake等。
还是这个cmd窗口不退出,切换到 Detours Express 3.0 根目录下,执行nmake即可生成 detours.lib 文件了。
关于detours的使用可以参考下面:
http://blog.csdn.net/zhsp1029/article/details/4195139
如果一个网络程序
DetourAttach(&(PVOID&)pSend, MySend);把系统原来的send函数修改起始的几个字节指向我们自己的 MySend 函数,然后很多情况下,
在MySend 函数里面做完hook处理之后还需要调用系统原来的send函数: return pSend(xx,xx,xx);
这样岂不是递归调用了?