• 您的位置我爱Aspx >> VC.Net >> 简单分析用SPI实现防火墙
  • 简单分析用SPI实现防火墙

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:49:04  关键字:
  • 现在我们看看ws2_32.dll里的API的,ws2_32里的API被应用程序调用后大部分都最终映射成了SPI里的30个函数,这30个函数都是用WSP开头的。注意,SPI里的30个函数是不能被应用程序直接调用的,而是应该由ws2_32.dll来调用。而LPWSPPROC_TABLE是一个表,里面保存了这30个函数的指针。我们通过调用下一层服务提供者的WSPStarup来得到下一层服务提供者的30个函数指针,同时我们也要EXPORT(SPI是一个DLL)这个函数,以便我们上一层的服务提供者来调用得到这30个函数指针。

    例如

    int WSPStartup (

    WORD wVersionRequested,

    LPWSPDATAW lpWSPData,

    LPWSAPROTOCOL_INFOW lpProtocolInfo,

    WSPUPCALLTABLE UpcallTable,

    LPWSPPROC_TABLE lpProcTable

    )

    {

    LPWSPSTARUP WSPStarProc=GetProcAddress(LbHandle,"WSPStartup");//得到下一层服务提供者的WSPStatrup函数指针,记得要先LoadLibrary下一层服务提供者的DLL

    WSPStarProc(wVersionRequested,lpWSPData,lpProtocolInfo,UpcallTable,lpProcTable )

    //记得要保留下一层原来的函数指针,有过HOOK API经验的朋友应该知道,就像要保存你HOOK 的API原来的地址一样

    WSPPROC_TABLE SystemProc=*lpProcTable;

    //然后就可以设置自己的处理函数了,和HOOK API也差不多,比如

    lpProcTable->lpWSPSend=WSPSend;

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:利用SharpZipLib实现实时zip压缩下载整个目录
    下一篇:简单分析用SPI实现防火墙
  • 相关文章