如何利用Winsock 2 SPI Hook 30个Winsock API函数?

Rmirp 2002-11-03 09:42:42
并支持WINDows所有版本
...全文
497 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rmirp 2002-11-04
  • 打赏
  • 举报
回复
呵呵,把QQ 号码写下,咱们聊聊如何。
snsins 2002-11-04
  • 打赏
  • 举报
回复
faint
我的代码写得极差,过了一段时间我自己都看不懂自己的代码
哈哈
Rmirp 2002-11-04
  • 打赏
  • 举报
回复
不,这问题已经圆满解决了,这得感谢仁兄
我要你的代码只是想看你的编程风格罢了。
snsins 2002-11-04
  • 打赏
  • 举报
回复
呵呵。。。
这点分数我还不想拿出我的原代码
Rmirp 2002-11-04
  • 打赏
  • 举报
回复
snsins(不再信仰,不再坚持) ,有具体一点代码更好
snsins 2002-11-03
  • 打赏
  • 举报
回复
补充一点
防火墙里的截包和封包技术很重要
snsins 2002-11-03
  • 打赏
  • 举报
回复
WINDOWS下的防火墙技术都被研究得比较透了
目前认为比较完善的方法就是NDIS
简单一点的就是SPI

我本来想在毕业的时候做毕业设计做个SPI防火墙,现在觉得技术难度有点低了,准备到时候做个NDIS的,完善一点的

SPI的基本原理其实和NDIS都差不多,主要体现一个思想:分层!
其实仔细想想,整个WINDOWS偶觉得都是分层式结构,假如我们用MFC写程序
那么MFC调用API,API又调用更低级的API,然后转换成相应的IRQ到内核里的驱动。。。。。

上面的话题扯得比较远了,平时我们调用WINSOCK API是这样的
winsock api->SPI->驱动->网卡
其中SPI可以由很多层构成,我们也可以插入自己的层,只要符合层与层之间的接口就行了,这个接口就是WSPStarup函数,SPI的每一层都需要为上一层提供WSPStarup函数传递自己的30个SPI函数的指针,同时调用下一层的WSPStarup函数来得到下一层SPI的30个函数指针,如果你不需要做任何事,只想中转一下,那么就可以直接在自己的函数里调用下一层SPI的相应函数提供给上一层SPI,如果想实现防火墙功能,你就在这些函数里实现自己的网络封包。

你自己写的SPI是一个DLL,也有DllMain函数,你要在DLL里把自己的WSPStartup函数导出以便上一层SPI程序调用,主要注意这个函数的最后一个参数,在WSPStartup里把你得到的下一层SPI函数指针指向你自己实现的函数就可以了

比如
int WSPStartup (
WORD wVersionRequested,
LPWSPDATAW lpWSPData,
LPWSAPROTOCOL_INFOW lpProtocolInfo,
WSPUPCALLTABLE UpcallTable,
LPWSPPROC_TABLE lpProcTable
{
.............
lpProcTable->lpWSPBind=WSPBind(....);//这样就把下一层SPI函数指针指向了自己的的WSPBind函数
}

上面就当最近一段时间研究SPI防火墙的一点总结
个人看法,分层结构是个很不错的构思,TCP/IP协议也是分层的,分层结构可以不要关注别的层之间的细节,只要专注于自己层然后按照规定提供相应的上下接口就OK了,值得我们自己在程序中借鉴!很多时候,思想更重要


saucer 2002-11-03
  • 打赏
  • 举报
回复
this article might be helpful:
API Hooking Revealed
http://www.codeguru.com/system/apihook.html

also see the discussions about Winsock API hook
http://www.codeguru.com/mfc/comments/35587.shtml
http://www.codeguru.com/mfc/comments/35590.shtml

http://www.experts-exchange.com/Programming/Programming_Platforms/Win_Prog/Q_20294215.html
Rmirp 2002-11-03
  • 打赏
  • 举报
回复
大哥大姐们请关注
wavestudio 2002-11-03
  • 打赏
  • 举报
回复
关注,我的QQ:179337324

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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