freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于spi的數(shù)據(jù)報(bào)過(guò)濾原理與實(shí)現(xiàn)(2)-文庫(kù)吧

2025-04-17 18:56 本頁(yè)面


【正文】 DWORD dwbuffercount,LPDWORD lpnumberofbytessent, DWORD dwflags,const struct sockaddr FAR *lpto,int itolen,LPWSAOVERLAPPED lpoverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lppletionroutine,LPWSATHREADID lpthreadid,LPINT lperrno)。 //SPI 函數(shù) WSPSendTo 和 Windows Socket 2 的 API 函數(shù) WSASendTo 相對(duì)應(yīng) int WSPAPI WSPStartup( W ORD wversionrequested,LPWSPDATA lpwspdata,LPWSAPROTOCOL_INFOW lpprotoinfo, WSPUPCALLTABLE upcalltable,LPWSPPROC_TABLE lpproctable)。 //SPI 函數(shù) WSPStartup 和 Windows Socket 2 的 API 函數(shù) WSAStartup 相對(duì)應(yīng) ,WSPStartup 是唯一的入口函數(shù),剩下的 30 個(gè) SPI 函數(shù)則是通過(guò)參數(shù) upcalltable 來(lái)實(shí)現(xiàn)的,它們只能在內(nèi)部調(diào)用,不向外提供入口 代碼分析: GetModuleFileName(NULL,processname,MAX_PATH)。 //獲得調(diào)用本服務(wù)提供者動(dòng)態(tài)鏈接庫(kù)的可執(zhí)行文件的全名 5 OutputDebugString(_T(WSPSendTo Tencent Filtered))。 //輸出調(diào)試信 息 (s,lpbuffer,dwbuffercount,lpnumberofbytessent,dwflags,lpto, itolen,lpoverlapped,lppletionroutine,lpthreadid,lperrno)。 //如果數(shù)據(jù)報(bào)滿足發(fā)送條件,調(diào)用下層系統(tǒng)服務(wù)提供者發(fā)送數(shù)據(jù) layerid=protoinfo[i].dwCatalogEntryId。 //獲得已安裝自定義 IP 分層協(xié)議的由 分配的唯一標(biāo)志 nextlayerid=lpprotoinfo[i+1]。 //獲得下一層傳輸服務(wù)提供者的標(biāo)志信息 WSCGetProviderPath(amp。protoinfo[i].ProviderId,filterpath,amp。filterpathlen,amp。errorcode); //獲得下一層傳輸服務(wù)提供者的安裝路徑 ExpandEnvironmentStrings(filterpath,filterpath,MAX_PATH); //擴(kuò)展環(huán)境變量 hfilter=LoadLibrary(filterpath)); //裝載下一層傳輸服務(wù)提供者 wspstartupfunc=(LPWSPSTARTUP)GetProcAddress(hfilter,WSPStartup)); //獲得下一層傳輸服務(wù)提供者的入口函數(shù) WSPStartup,以便調(diào)用 wspstartupfunc(wversionrequested,lpwspdata,lpprotoinfo,upcalltable,lpproctable); //調(diào)用下一層傳輸服務(wù)提供者的 WSPStartup 函數(shù),實(shí)現(xiàn)鉤子功能 nextproctable=*lpproctable。 //保存下一層服務(wù)提供者的 30個(gè)服務(wù)函數(shù)指針 lpproctablelpWSPSendTo=WSPSendTo。 //調(diào)用自定義函數(shù) WSPSendTo 由于以動(dòng)態(tài)鏈接庫(kù)形式的服務(wù)提供者要向外提供一個(gè)入口函數(shù),因此還須一個(gè) 配置文件: EXPORTS WSPStartup //向外提供入口函數(shù) WSPStartup 是一個(gè)輔助工具,用來(lái)查看當(dāng)前系統(tǒng)中所有已經(jīng)安裝的傳輸服務(wù)提供者的屬性。 totalprotocols=WSCEnumProtocols(NULL,protoinfo,amp。protoinfosize,amp。errorcode); //獲得系統(tǒng)中的所有傳輸服務(wù)提供者,然后根據(jù)參數(shù)輸出它 們的各項(xiàng)屬性。 四)小結(jié)與后記 本文向大家介紹了 Windows Socket 2 的一個(gè)新特性,那就是服務(wù)提供者接口 SPI(Service Provider Interface)。它不僅包括我們主要講解的傳輸服務(wù)提供者接口,還包括名字空間服務(wù)提供者接口。當(dāng)然,基于 SPI 的包過(guò)濾安全措施并不是特別的好,因?yàn)楹芏嘟⒃?TDI 上面的數(shù)據(jù)傳輸并不會(huì)受到 SPI 的影響,所以當(dāng)前流行的防火墻大都是建立在 NDIS 之上的。 傳輸服務(wù)提供者是以 DLL 的形式存在于系統(tǒng)之中的,在基于 IP協(xié)議的網(wǎng)絡(luò)程序運(yùn)行時(shí),如果參 數(shù)相匹配就會(huì)加載我們的傳輸服務(wù)提供者程序。而且在 Windows 下有很多系統(tǒng)網(wǎng)絡(luò)服務(wù),它們都是在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載的,這就為我們隱藏木馬的進(jìn)程提供了有利的條件。也就是說(shuō)在傳輸服務(wù)提供者程序里嵌入木馬程序,很多基于 IP 協(xié)議的網(wǎng)絡(luò)系統(tǒng)程序在開(kāi)機(jī)時(shí)運(yùn)行,這樣我們嵌入的木馬程序就會(huì)在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載,在系統(tǒng)關(guān)閉時(shí)才會(huì)卸載。它的特點(diǎn)是只要安裝一次 6 后每每系統(tǒng)啟動(dòng)就會(huì)加載我們的傳輸服務(wù)提供者(里面包含木馬程序),而不必像遠(yuǎn)程注入線程那樣在系統(tǒng)每次啟動(dòng)時(shí)執(zhí)行安裝程序,并且它可同時(shí)被多個(gè)系統(tǒng)網(wǎng)絡(luò)程序加載。 已編譯好的 可執(zhí)行文件 (過(guò)濾 數(shù)據(jù)報(bào) ),您可以在我們的網(wǎng)站 ()下載。 五)附錄之源程序 define UNICODE define _UNICODE include include include include include GUID filterguid={0x4d1e91fd,0x116a,0x44aa,{0x8f,0xd4,0x1d,0x2c,0xf2,0x7b,0xd9,0xa9}}。 GUID filterchainguid={0xd3c21121,0x85e1,0x48f3,{0x9a,0xb6,0x23,0xd9,0x0c,0x73,0x07,0xef}}。 BOOL getfilter()。 void freefilter()。 void installfilter()。 void removefilter()。 void start()。 void usage()。 int totalprotos=0。 DWORD protoinfosize=0。 LPWSAPROTOCOL_INFOW protoinfo=NULL。 int main(int argc,char *argv[]) { start()。 if(argc==2) { if(strcmp(argv[1],install)==0) { installfilter()。 return 0。 } else if(strcmp(argv[1],remove)==0) { 7 removefilter()。 return 0。 } } usage()。 return 0。 } BOOL getfilter() { int errorcode。 protoinfo=NULL。 totalprotos=0。 protoinfosize=0。 if(WSCEnumProtocols(NULL,protoinfo,amp。protoinfosize,amp。errorcode)==SOCKET_ERROR) { if(errorcode!=WSAENOBUFS) { _tprintf(_T(First WSCEnumProtocols Error: %d\n),errorcode)。 return FALSE。 } } if((protoinfo=(LPWSAPROTOCOL_INFOW)GlobalAlloc(GPTR,protoinfosize))==NULL) { _tprintf(_T(GlobalAlloc in getfilter Error: %d\n),GetLastError())。 return FALSE。 } if((totalprotos=WSCEnumProtocols(NULL,protoinfo,amp。protoinfosize,amp。errorcode))==SOCKET_ERROR) { _tprintf(_T(Second WSCEnumProtocols Error: %d\n),GetLastError())。 return FALSE。 } _tprintf(_T(Found %d protocols!\n),totalprotos)。 return TRUE。 } void freefilter() { 8 GlobalFree(protoinfo)。 } void installfilter() { int i。 int provt。 int cataindex。 int errorcode。 BOOL rawip=FALSE。 BOOL udpip=FALSE。 DWORD iplayercataid=0,udporigcataid=0。 TCHAR filter_path[MAX_PATH]。 TCHAR filter_name[MAX_PATH]。 TCHAR chainname[WSAPROTOCOL_LEN+1]。 LPDWORD cataentries。 WSAPROTOCOL_INFOW iplayerinfo,udpchaininfo,chainarray[1]。 getfilter()。 for(i=0。itotalprotos。i++) { if(!rawip amp。amp。 protoinfo[i].iAddressFamily==AF_INET amp。amp。 protoinfo[i].iProtocol==IPPROTO_IP) { rawip=TRUE。 memcpy(amp。iplayerinfo,amp。protoinfo[i],sizeof(WSAPROTOCOL_INFOW))。 =protoinfo[i].dwServiceFlags1 amp。 (~XP1_IFS_HANDLES)。 } if(!udpip amp。amp。 protoinfo[i].iAddressFamily==AF_INET amp。amp。 protoinfo[i].iProtocol==IPPROTO_UDP) { udpip=TRUE。 udporigcataid=protoinfo[i].dwCatalogEntryId。 memcpy(amp。udpchaininfo,amp。protoinfo[i],sizeof(WSAPROTOCOL_INFOW))。 =protoinfo[i].dwServiceFlags1 amp。 (~XP1_IFS_HA
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1