VC进程相关的学习(六)(Detours的使用)

Detours提供了简单易用的函数接口来拦截WIN32 API调用。官方的下载地址为http://research.microsoft.com/en-us/projects/detours/,下载Detours Express 2.1安装之后还不能直接使用,编译流程如下:

1 将Detours安装目录中的src拷贝至VS安装目录/Microsoft Visual Studio 9.0/VC/bin
2 打开CMD控制台
3 将/Microsoft Visual Studio 9.0/VC/bin/vcvars32.bat拖入控制台运行
4 控制台进入到/Microsoft Visual Studio 9.0/VC/bin目录下,输入运行nmake

 

成功之后就会增加Detours的lib、include、bin目录,下面是个简单的例子:

#include <stdio.h> #include <windows.h> #include "detours.h" static VOID (WINAPI * TrueSleep)(DWORD dwMilliseconds) = Sleep; // 原函数 // 替代的函数 VOID WINAPI TimedSleep(DWORD dwMilliseconds) { TrueSleep(dwMilliseconds); } BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID reserved) { if (dwReason == DLL_PROCESS_ATTACH) { // 注册 DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach(&(PVOID&)TrueSleep, TimedSleep); DetourTransactionCommit(); } else if (dwReason == DLL_PROCESS_DETACH) { // 卸载 DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourDetach(&(PVOID&)TrueSleep, TimedSleep); DetourTransactionCommit(); } return TRUE; }

你可能感兴趣的:(VC进程相关的学习(六)(Detours的使用))