读书人

WSPConnect重写求教解决方法

发布时间: 2012-02-16 21:30:36 作者: rapoo

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,楼主啥意思

读书人网 >.NET

热点推荐