首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

WSPConnect重写求教解决方法

2012-02-16 
WSPConnect重写求教我现在用的是SPI,我想自己写一个WSPConnect后实现 让该程序通过连接一个socks5代理来完

WSPConnect重写求教
我现在用的是SPI,我想自己写一个WSPConnect后实现 让该程序通过连接一个socks5代理来完成之后的通信。

Delphi(Pascal) code
function WSPConnect(s: TSocket; name: PSockAddr; namelen: Integer; lpCallerData: LPWSABUF;lpCalleeData: LPWSABUF; lpSQOS: LPQOS; lpGQOS: LPQOS; var lpErrno: Integer): Integer; stdcall;varsin:sockaddr_in ;beginsin := sockaddr_in(name^);rizhi('拦截访问目标:'+PChar(IPtoStr(sin.sin_addr.S_addr) + ':' + IntToStr(ntohs(sin.sin_port))));result:=NextProcTable.lpWSPConnect(s,name,namelen,lpCallerData,lpCalleeData,lpSQOS,lpGQOS,lpErrno);end;function WSPStartup(wVersionRequested: WORD; lpWSPData: LPWSPDATA;lpProtocolInfo: LPWSAPROTOCOL_INFOW; UpcallTable: WSPUPCALLTABLE;lpProcTable: LPWSPPROC_TABLE): Integer; stdcall;varWSPStartupFunc:LPWSPSTARTUP;slibpath:string;hlibhandle:hmodule;beginrizhi('启动:WSPStartup...');if not GetHookProvider(lpProtocolInfo,slibPath) then    begin      result:=WSAEPROVIDERFAILEDINIT;      exit;    end;OutputDebugString(pchar(slibpath));hlibhandle:=loadlibrary(pchar(slibpath));if hlibhandle<>0 then    begin      WSPStartupFunc:= LPWSPSTARTUP(GetProcAddress(hlibhandle,pchar('WSPStartup')));      if Assigned(WSPStartupFunc) then        begin          rizhi('加载:Load library ok!');          result:=WSPStartupFunc(wVersionRequested,lpWSPData,lpProtocolInfo,UpcallTable,lpProcTable);          if result=0 then            begin              NextProcTable:=lpProcTable^;              lpProcTable.lpWSPConnect:=WSPConnect;              rizhi('加载成功:Hook ok!');              exit;            end;        end      else        begin          result:=WSAEPROVIDERFAILEDINIT;        end;    endelse    begin      result:=WSAEPROVIDERFAILEDINIT;    end;end;


[解决办法]
现在有什么问题?
[解决办法]
up,楼主啥意思

热点排行