SPI进行网络封包的截获.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
很多单机版的防火墙都是利用了SPI的技术来实现对网络封包的截获处理.[当然也有结合NDIS及IMD驱动的,不再本贴范围内:)],也可以通过SPI技术实现无进程的DLL木马.这里Winsock2 SPI的原理在这就不多说了,网上多得是. 以下仅为我前段时间学习SPI技术时的写的一些代码,望大家一起来研究讨论. 以下分别为wskfilter.dll及nfilter.exe的代码,编译成功后将两个文件放在同一目录下,CMD下运行nfilter.exe便可以加载自己的LSP(分层服务提供者)来截获相关WINSOCK API的调用了.当然如何处理需要在wskfilter.dll中进行控制,在此不作详述. /////////////////////////////////////////////////////////////////////////////////////// // //wskfilter.dll by miyagi@2007.5.21 // // //wskfilter.cpp : Defines the entry point for the DLL application. // 开发思路: // //??? 1)每个DLL都必须有一个入口点,故通过DllMain这个缺省函数做为入口函数。该函数负责 //?????? DLL的初始化与结束的工作; //???? 1.1)在DllMain中,通过GetModuleFileName获取到当前调用该DLL的进程名称,以备后需; //???? 1.2)分别定义枚举服务提供者函数GetProvider(),释放服务提供者函数FreeProvider(); //??? //??? 2)通过g_NextProcTable中保存的下层服务提供者的函数列表,来Hook咸兴趣的函数,并将 //?????? Hook的函数进行自定义处理,即实现了Winsock的过滤及监控处理; // //??? 3)WSPStartup是LSP必须导出的函数。同时在创建DLL工程后,先向工程中添加一个.def文件。 //?????? 即模块定义文件,声明所有要导出的函数; //???? 3.1)判断WSPStartup函数是否被调用LSP(分层服务者)调用的; //??? 3.2)枚举各协议服务提供者,找到LSP下层协议服务提供者的WSAPROTOCOL_INFOW结构; //???? 3.3)通过以上遍历得到的下层服务提供者(现存放于NextProtocolInfo中)的GUID来确定其DLL //???????? 的路径; //???? 3.4)通过函数WSCGetProviderPath()获取及ExpandEnvironmentStrings()扩展来得到下层服务 //???????? 提供者的DLL; //???????? 路径,该路径是包含了环境变量的; //???? 3.5)加载下层服务提供者,即加载其下载服务提供者的DLL; //???? 3.6)通过自定义的一个指向WSPSTARTUP函数指针,来启动下一层服务提供者; //???? 3.7)调用下层服务提供者的WSPStartup函数,调用成功后其中lpProcTable变量将在后期进行 //???????? Hook时经常用到; //???? 3.8)通过修改传递给下层服务提供者的函数列表,Hook相关WSP函数; //? /////////////////////////////////////////////////////////////////////////////////////// ? #define UNICODE #define _UNICODE #include Winsock2.h #include Ws2spi.h #include Windows.h #include tchar.h #include Debug.h #pragma comment(lib, Ws2_32.lib) ? WSPUPCALLTABLE g_UpCallTable;? WSPPROC_TABLE g_NextProcTable;? TCHAR g_szCurrentApp[MAX_PATH];? BOOL APIENTRY DllMain( HANDLE hModule, ?????????????????????? DWORD? ul_reason_for_call, ?????????????????????? LPVOID lpReserved ????? ) { ?switch(ul_reason_for_call) ?{ ??//获取调用wskfilter.dll的进程名称; ?case DLL_PR

文档评论(0)

LF20190802 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档