前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VS2008安装Detours库 【Windows 7 64bit】

VS2008安装Detours库 【Windows 7 64bit】

作者头像
obaby
发布2023-02-24 10:12:25
9290
发布2023-02-24 10:12:25
举报
文章被收录于专栏:obaby@mars

原始的安装库可以从这里下载:http://research.microsoft.com/sn/detours(下载后是个msi的安装包,完全傻瓜式的安装),在公司使用的win7 32bit系统上安装编译很正常,但是在家里的64位系统上安装编译却出现了不少问题。今天晚上重新看了一下发现默认的那个vs命令行工具貌似是64位的,用兼容性的命令行工具就可以编译了,效果如下图所示:

编译完成之后会生成两个lib文件和一个Dll文件,这些都是运行Detours程序所必需的。上面的只是一些64为环境下的安装需要注意的问题,最后记录一下通用的安装方法吧:

1.当然是下载了,下载链接上面也说过了:http://research.microsoft.com/sn/detours ,下载后是一个msi的安装包,直接安装即可,安装之后没有任何的提示信息。但是可以从下面的路径找到安装后的源代码和文件:C:\Program Files (x86)\Microsoft Research\Detours Express 2.1(如果是32位系统将会是C:\Program Files \Microsoft Research\Detours Express 2.1),对应目录下的三个子目录以及文件功能如下:

samples:程序实例代码,包含了各种函数API的使用实例;

src:detours的接口文件以及头文件;

Detours.chm:帮助文件,包含函数的参数以及使用方法说明等。

2.建议将上面提到的src目录拷贝到vs安装目录下的vc文件夹下(如果是vc6则拷贝到vc98目录下),如果是vs2008则拷贝到vs的默认安装路径C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC即可(64位系统,其他系统请自行调整目录)。并且将src改名为detours以便区分代码用途。

3.运行vs2008 的命令提示行工具,切换到detours目录下,然后执行nmake命令将会自动编译并声称可执行文件、库文件和符号文件(如果是64位系统在命令提示行下无法通过编译则使用本文开始提到的“兼容工具命令提示”即可。)。如果没有错误的话编译完成之后将会生成如下的文件:

在vc的lib目录下生成detoured.lib,detours.lib和detoured.exp

在vc的bin目录下生成detoured.dll和detoured.pdb

将detours.h自动复制到vc下的include文件夹下。

因而在实际使用的过程中只需要将detourd.dll文件复制到system32目录下,并且在程序代码中包含头文件和相关的lib文件即可。

这也是为什么要将detours的src目录拷贝到vc目录下的原因,这样在实际使用的过程中将会减少很多不必要的步骤。

相关的实例可以参考CodeProject的相关工程,代码还是比较完善的,涵盖了较多的函数使用方法:http://www.codeproject.com/KB/DLL/funapihook.aspx

最后还是贴一段Wsock Hook的代码,比上面一片文章的代码则又简单了不少(这段代码来自于上面的实例中,版权归原作者所有):

代码语言:javascript
复制
#undef UNICODE
#include 
#include 
#include 
#include 
#include  //*IMPORTANT: Look at path if compiler error


#pragma comment(lib, "detoured.lib")
#pragma comment(lib, "detours.lib")
#pragma comment(lib, "Ws2_32.lib")

//Prototypes
int (WINAPI *pSend)(SOCKET s, const char* buf, int len, int flags) = send;
int WINAPI MySend(SOCKET s, const char* buf, int len, int flags);
int (WINAPI *pRecv)(SOCKET s, char* buf, int len, int flags) = recv;
int WINAPI MyRecv(SOCKET s, char* buf, int len, int flags);

//Log files
FILE* pSendLogFile;
FILE* pRecvLogFile;

INT APIENTRY DllMain(HMODULE hDLL, DWORD Reason, LPVOID Reserved)
{
	switch(Reason)
	{
	case DLL_PROCESS_ATTACH:	//Do standard detouring
		DisableThreadLibraryCalls(hDLL);
		DetourTransactionBegin();
		DetourUpdateThread(GetCurrentThread());
		DetourAttach(&(PVOID&)pSend, MySend);
		if(DetourTransactionCommit() == NO_ERROR)
			OutputDebugString("send() detoured successfully");
		DetourTransactionBegin();
		DetourUpdateThread(GetCurrentThread());
		DetourAttach(&(PVOID&)pRecv, MyRecv);
		if(DetourTransactionCommit() == NO_ERROR)
			OutputDebugString("recv() detoured successfully");
		break;
	case DLL_PROCESS_DETACH:
		DetourTransactionBegin();	//Detach
        DetourUpdateThread(GetCurrentThread());
		DetourDetach(&(PVOID&)pSend, MySend);
		DetourTransactionCommit();
		DetourTransactionBegin();
        DetourUpdateThread(GetCurrentThread());
		DetourDetach(&(PVOID&)pRecv, MyRecv);
		DetourTransactionCommit();
		break;
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
		break;
	}
	return TRUE;
}

//Open file, write contents, close it
int WINAPI MySend(SOCKET s, const char* buf, int len, int flags)
{
	fopen_s(&pSendLogFile, "C:\\SendLog.txt", "a+");
	fprintf(pSendLogFile, "%s\n", buf);
	fclose(pSendLogFile);
	return pSend(s, buf, len, flags);
}

int WINAPI MyRecv(SOCKET s, char* buf, int len, int flags)
{
	fopen_s(&pRecvLogFile, "C:\\RecvLog.txt", "a+");
	fprintf(pRecvLogFile, "%s\n", buf);
	fclose(pRecvLogFile);
	return pRecv(s, buf, len, flags);
}

☆文章版权声明☆

* 网站名称:obaby@mars

* 网址:https://h4ck.org.cn/

* 本文标题: 《VS2008安装Detours库 【Windows 7 64bit】》

* 本文链接:https://cloud.tencent.com/developer/article/2223522

* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


分享文章:

相关文章:

  1. Glass CMD 6.1.7601.17514 fow Windows 7 SP1(64bit)
  2. Glass Cmd 6.2.6200.16384 for Windows 8(64bit)
  3. Windows Customized Gina In Safe Mode(Windows xp)
  4. WSock32 Hook send and recv Functions
  5. WinRAR 4.00 beta 6 (64bit) Patch
  6. IDA Pro 64bit 插件编译
  7. Windows Customized Gina Source Code
  8. libgpod-0.8.3 for windows
  9. Windows HotFix Check Via C/C++
  10. Two 64bit Debuggers
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011年1月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相关文章:
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档