hook send/sendto函数的问题

yaozhu88 2009-05-06 10:31:34
想练习一下inline hook,exe程序用来加载此DLL,得到指定进程的线程ID,调用此DLL导出的Installhook()函数用来对指定的进程安装钩子过程,想inline hook 此进程的WS2_32.dll的一些函数,想拦截包。下面是一个完整DLL工程,但是遇到了一个奇怪的问题,把#include <Winsock2.h>这句注释掉能编译成功,加上之后,会出现下面的错误。
哪位兄弟帮我看下啊。

下面是下载地址
http://www.brsbox.com/filebox/uploadcomplete/randstr/4961I2HMGmj48c72Tu87JW1915/fgid/707c09885160b93194337095a3e7c0fa/dirids/0

1>------ 已启动生成: 项目: FuckVClient, 配置: Debug Win32 ------
1>正在编译...
1>FuckVClient.cpp
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(91) : warning C4005: “AF_IPX”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(460) : 参见“AF_IPX”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(127) : warning C4005: “AF_MAX”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(479) : 参见“AF_MAX”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(163) : warning C4005: “SO_DONTLINGER”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(402) : 参见“SO_DONTLINGER”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(206) : error C2011: “sockaddr”: “struct”类型重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(485) : 参见“sockaddr”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(384) : error C2143: 语法错误 : 缺少“}”(在“常量”的前面)
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(384) : error C2143: 语法错误 : 缺少“;”(在“常量”的前面)
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(384) : error C2059: 语法错误 : “常量”
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(437) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(437) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(437) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(518) : warning C4005: “IN_CLASSA”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(287) : 参见“IN_CLASSA”的前一个定义
1>c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h(524) : warning C4005: “IN_CLASSB”: 宏重定义
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(293) : 参见“IN_CLASSB”的前一个定义
的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(778) : 参见“inet_addr”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(1745) : error C2375: “inet_ntoa”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(780) : 参见“inet_ntoa”的声明
1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(1763) : error C2375: “listen”: 重定义;不同的链接
1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(782) : 参见“listen”的声明
...全文
265 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
梅文海 2009-05-11
  • 打赏
  • 举报
回复
如果你想做封包的软件,建议你用 Ahead Lib 这个软件生成封包函数替换代码
这个软件是在看雪发布的,你 baidu 一下
tian_yang_jian 2009-05-08
  • 打赏
  • 举报
回复
对,1楼正解
ky310 2009-05-07
  • 打赏
  • 举报
回复
关注,版本变更总会出现这些问题。前几天碰到过VC++ 6中正常编译运行的程序在VS2005中出现小故障的情况。
fishjam 2009-05-07
  • 打赏
  • 举报
回复
1楼正解,我也遇到过这个问题。
zzz822163 2009-05-07
  • 打赏
  • 举报
回复
在#include<windows.h>之前 #include <winsock2.h>
cnzdgs 2009-05-06
  • 打赏
  • 举报
回复
VC2008的windows.h中包含了winsock.h,如果自己再包含winsock2.h,就会有重复定义,把#include <winsock2.h>去掉即可。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧