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

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

ID:49770468

大小:22.67 KB

页数:19页

时间:2020-03-04

SPI进行网络封包的截获.doc_第1页
SPI进行网络封包的截获.doc_第2页
SPI进行网络封包的截获.doc_第3页
SPI进行网络封包的截获.doc_第4页
SPI进行网络封包的截获.doc_第5页
资源描述:

《SPI进行网络封包的截获.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、很多单机版的防火墙都是利用了SPI的技术来实现对网络封包的截获处理.[当然也有结合NDIS及IMD驱动的,不再本贴范围内:)],也可以通过SPI技术实现无进程的DLL木马.这里Winsock2SPI的原理在这就不多说了,网上多得是.以下仅为我前段时间学习SPI技术时的写的一些代码,望大家一起来研究讨论.以下分别为wskfilter.dll及nfilter.exe的代码,编译成功后将两个文件放在同一目录下,CMD下运行nfilter.exe便可以加载自己的LSP(分层服务提供者)来截获相关WINSOCK

2、 API的调用了.当然如何处理需要在wskfilter.dll中进行控制,在此不作详述.///////////////////////////////////////////////////////////////////////////////////////////wskfilter.dllbymiyagi@2007.5.21//////wskfilter.cpp:DefinestheentrypointfortheDLLapplication.//开发思路:////   1)每个DLL都必须有一

3、个入口点,故通过DllMain这个缺省函数做为入口函数。该函数负责//      DLL的初始化与结束的工作;//    1.1)在DllMain中,通过GetModuleFileName获取到当前调用该DLL的进程名称,以备后需;//    1.2)分别定义枚举服务提供者函数GetProvider(),释放服务提供者函数FreeProvider();//   //   2)通过g_NextProcTable中保存的下层服务提供者的函数列表,来Hook咸兴趣的函数,并将//      Hook的函数进

4、行自定义处理,即实现了Winsock的过滤及监控处理;////   3)WSPStartup是LSP必须导出的函数。同时在创建DLL工程后,先向工程中添加一个.def文件。//      即模块定义文件,声明所有要导出的函数;//    3.1)判断WSPStartup函数是否被调用LSP(分层服务者)调用的;//   3.2)枚举各协议服务提供者,找到LSP下层协议服务提供者的WSAPROTOCOL_INFOW结构;//    3.3)通过以上遍历得到的下层服务提供者(现存放于NextProtoco

5、lInfo中)的GUID来确定其DLL//        的路径;//    3.4)通过函数WSCGetProviderPath()获取及ExpandEnvironmentStrings()扩展来得到下层服务//        提供者的DLL;//        路径,该路径是包含了环境变量的;//    3.5)加载下层服务提供者,即加载其下载服务提供者的DLL;//    3.6)通过自定义的一个指向WSPSTARTUP函数指针,来启动下一层服务提供者;//    3.7)调用下层服务提供者的W

6、SPStartup函数,调用成功后其中lpProcTable变量将在后期进行//        Hook时经常用到;//    3.8)通过修改传递给下层服务提供者的函数列表,Hook相关WSP函数;// /////////////////////////////////////////////////////////////////////////////////////// #defineUNICODE#define_UNICODE#include#include

7、pi.h>#include#include#include"Debug.h"#pragmacomment(lib,"Ws2_32.lib") WSPUPCALLTABLEg_UpCallTable; WSPPROC_TABLEg_NextProcTable; TCHARg_szCurrentApp[MAX_PATH]; BOOLAPIENTRYDllMain(HANDLEhModule,                      DWORD ul_reason_

8、for_call,                      LPVOIDlpReserved     ){ switch(ul_reason_for_call) {  //获取调用wskfilter.dll的进程名称; caseDLL_PROCESS_ATTACH:  {   ::GetModuleFileName(NULL,g_szCurrentApp,MAX_PATH);  }  break; }   returnTRUE;} //枚举各协议的服务

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。