亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 揭開木馬的神秘面紗3.htm

?? 可以對黑客編程有一定的了解
?? HTM
?? 第 1 頁 / 共 2 頁
字號:

<p><b>揭開木馬的神秘面紗&lt;三&gt; - ICMP的木馬篇</b><br>
Shotgun</p>
<p><font size="2"><br>
</font><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;在揭開木馬的神秘面紗(二)發表后,有很多朋友來信詢問新型木馬的詳細情況,本文會詳細的分析Win2000下一種新型木馬的內部構造和防御方法。(本文默認的操作系統為Win2000,開發環境為VC++6.0。)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;大家知道,一般的“古典”型木馬都是通過建立TCP連接來進行命令和數據的傳遞的,但是這種方法有一個致命的漏洞,就是木馬在等待和運行的過程中,始終有一個和外界聯系的端口打開著,這是木馬的阿喀琉斯之踵(參看希臘神話《特洛伊戰紀》),也是高手們查找木馬的殺手锏之一(Netstat大法)。所謂道高一尺,魔高一丈,木馬也是在斗爭中不斷進步不斷成長的,其中一種ICMP木馬就徹底擺脫了端口的束縛,成為黑客入侵后門工具中的佼佼者。<br>
&nbsp;什么是ICMP呢?ICMP全稱是Internet&nbsp;Control&nbsp;Message&nbsp;Protocol(互聯網控制報文協議)它是IP協議的附屬協議,用來傳遞差錯報文以及其他需要注意的消息報文,這個協議常常為TCP或UDP協議服務,但是也可以單獨使用,例如著名的工具Ping(向Mike&nbsp;Muuss致敬),就是通過發送接收ICMP_ECHO和ICMP_ECHOREPLY報文來進行網絡診斷的。<br>
&nbsp;實際上,ICMP木馬的出現正是得到了Ping程序的啟發,由于ICMP報文是由系統內核或進程直接處理而不是通過端口,這就給木馬一個擺脫端口的絕好機會,木馬將自己偽裝成一個Ping的進程,系統就會將ICMP_ECHOREPLY(Ping的回包)的監聽、處理權交給木馬進程,一旦事先約定好的ICMP_ECHOREPLY包出現(可以判斷包大小、ICMP_SEQ等特征),木馬就會接受、分析并從報文中解碼出命令和數據。<br>
&nbsp;ICMP_ECHOREPLY包還有對于防火墻和網關的穿透能力。對于防火墻來說,ICMP報文是被列為危險的一類:從Ping&nbsp;of&nbsp;Death到ICMP風暴到ICMP碎片攻擊,構造ICMP報文一向是攻擊主機的最好方法之一,因此一般的防火墻都會對ICMP報文進行過濾;但是ICMP_ECHOREPLY報文卻往往不會在過濾策略中出現,這是因為一旦不允許ICMP_ECHOREPLY報文通過就意味著主機沒有辦法對外進行Ping的操作,這樣對于用戶是極其不友好的。如果設置正確,ICMP_ECHOREPLY報文也能穿過網關,進入局域網。</p>
<p>&nbsp;&nbsp;&nbsp; 為了實現發送/監聽ICMP報文,必須建立SOCK_RAW(原始套接口),首先,我們需要定義一個IP首部:<br>
&nbsp;typedef&nbsp;struct&nbsp;iphdr&nbsp;{<br>
&nbsp;unsigned&nbsp;int&nbsp;version:4;  &nbsp;//&nbsp;IP版本號,4表示IPV4<br>
 unsigned&nbsp;int&nbsp;h_len:4;   //&nbsp;4位首部長度<br>
 unsigned&nbsp;char&nbsp;tos;      //&nbsp;8位服務類型TOS<br>
 unsigned&nbsp;short&nbsp;total_len;   &nbsp;//&nbsp;16位總長度(字節) <br>
 unsigned&nbsp;short&nbsp;ident;     //16位標識<br>
 unsigned&nbsp;short&nbsp;frag_and_flags; //&nbsp;3位標志位<br>
 unsigned&nbsp;char ttl;     &nbsp;//8位生存時間&nbsp;TTL<br>
 unsigned&nbsp;char&nbsp;proto;     //&nbsp;8位協議&nbsp;(TCP,&nbsp;UDP&nbsp;或其他)<br>
 unsigned&nbsp;short&nbsp;checksum;   //&nbsp;16位IP首部校驗和<br>
 unsigned&nbsp;int&nbsp;sourceIP;    &nbsp;//32位源IP地址<br>
 unsigned&nbsp;int&nbsp;destIP;     &nbsp;//32位目的IP地址<br>
&nbsp;}IpHeader;<br>
&nbsp;<br>
&nbsp;然后定義一個ICMP首部:<br>
&nbsp;typedef&nbsp;struct&nbsp;_ihdr&nbsp;{<br>
&nbsp;BYTE&nbsp;i_type;       &nbsp;//8位類型<br>
&nbsp;BYTE&nbsp;i_code;       //8位代碼<br>
&nbsp;USHORT&nbsp;i_cksum;     //16位校驗和&nbsp;<br>
&nbsp;USHORT&nbsp;i_id;       //識別號(一般用進程號作為識別號)<br>
&nbsp;USHORT&nbsp;i_seq;  &nbsp;//報文序列號&nbsp;<br>
&nbsp;ULONG&nbsp;timestamp;    &nbsp;//時間戳<br>
&nbsp;}IcmpHeader;<br>
&nbsp;<br>
&nbsp;這時可以同過WSASocket建立一個原始套接口:<br>
&nbsp;SockRaw=WSASocket&nbsp;(<br>
&nbsp;AF_INET,    //協議族 <br>
&nbsp;SOCK_RAW,  &nbsp;//協議類型,SOCK_RAW表示是原始套接口&nbsp;<br>
&nbsp;IPPROTO_ICMP, //協議,IPPROTO_ICMP表示ICMP數據報<br>
&nbsp;NULL,     //WSAPROTOCOL_INFO置空<br>
&nbsp;0,  //保留字,永遠置為0<br>
&nbsp;WSA_FLAG_OVERLAPPED&nbsp;//標志位<br>
&nbsp;);<br>
&nbsp;注:為了使用發送接收超時設置(設置SO_RCVTIMEO,&nbsp;SO_SNDTIMEO),必須將標志位置為WSA_FLAG_OVERLAPPED<br>
&nbsp;<br>
&nbsp;隨后你可以使用fill_icmp_data子程序填充ICMP報文段:<br>
&nbsp;調用方法fill_icmp_data(icmp_data,datasize);<br>
&nbsp;fill_icmp_data函數:<br>
&nbsp;void&nbsp;fill_icmp_data(char&nbsp;*&nbsp;icmp_data,&nbsp;int&nbsp;datasize)<br>
&nbsp;{<br>
 &nbsp;IcmpHeader&nbsp;*icmp_hdr;<br>
 &nbsp;char&nbsp;*datapart;<br>
 &nbsp;icmp_hdr&nbsp;=&nbsp;(IcmpHeader*)icmp_data;<br>
 &nbsp;icmp_hdr-&gt;i_type&nbsp;=&nbsp;ICMP_ECHOREPLY;    &nbsp;//類型為ICMP_ECHOREPLY<br>
 &nbsp;icmp_hdr-&gt;i_code&nbsp;=&nbsp;0;<br>
 &nbsp;icmp_hdr-&gt;i_id&nbsp;=&nbsp;(USHORT)GetCurrentProcessId();&nbsp;//識別號為進程號&nbsp;<br>
 &nbsp;icmp_hdr-&gt;i_cksum&nbsp;=&nbsp;0;   &nbsp;//校驗和初始化<br>
 &nbsp;icmp_hdr-&gt;i_seq&nbsp;=&nbsp;0;    //序列號初始化<br>
 &nbsp;datapart&nbsp;=&nbsp;icmp_data&nbsp;+&nbsp;sizeof(IcmpHeader);&nbsp;//數據端的地址為icmp報文地址加上<br>
&nbsp;ICMP的首部長度<br>
&nbsp;memset(datapart,‘A‘,&nbsp;datasize&nbsp;-&nbsp;sizeof(IcmpHeader)); //這里我填充的數據全部為’A’,你可以填<br>
&nbsp;充任何代碼和數據,實際上木馬和控制端<br>
&nbsp;之間就是通過數據段傳遞數據的。<br>
&nbsp;}<br>
&nbsp;<br>
&nbsp;再使用CheckSum子程序計算ICMP校驗和:<br>
&nbsp;調用方法:<br>
&nbsp;((IcmpHeader*)icmp_data)-&gt;i_cksum&nbsp;=&nbsp;checksum((USHORT*)icmp_data,&nbsp;datasize);<br>
&nbsp;CheckSum函數:<br>
&nbsp;USHORT&nbsp;CheckSum&nbsp;(USHORT&nbsp;*buffer,&nbsp;int&nbsp;size)&nbsp;<br>
&nbsp;{<br>
&nbsp;unsigned&nbsp;long&nbsp;cksum=0;<br>
&nbsp;while(size&nbsp;&gt;1)&nbsp;<br>
&nbsp;{ &nbsp;<br>
&nbsp;cksum+=*buffer++;<br>
 &nbsp;size&nbsp;-=sizeof(USHORT);<br>
&nbsp;}<br>
&nbsp;if(size&nbsp;)&nbsp;cksum&nbsp;+=&nbsp;*(UCHAR*)buffer;<br>
  &nbsp;cksum&nbsp;=&nbsp;(cksum&nbsp;&gt;&gt;&nbsp;16)&nbsp;+&nbsp;(cksum&nbsp;&amp;&nbsp;0xffff);<br>
&nbsp;cksum&nbsp;+=&nbsp;(cksum&nbsp;&gt;&gt;16);<br>
  &nbsp;return&nbsp;(USHORT)(~cksum);<br>
&nbsp;}//&nbsp;CheckSum函數是標準的校驗和函數,你也可以用優化過的任何校驗和函數來代替它<br>
&nbsp;<br>
&nbsp;隨后,就可以通過sendto函數發送ICMP_ECHOREPLY報文:<br>
&nbsp;sendto(sockRaw,icmp_data,datasize,0,(struct&nbsp;sockaddr*)&amp;dest,sizeof(dest));<br>
&nbsp;<br>
&nbsp;作為服務端的監聽程序,基本的操作相同,只是需要使用recvfrm函數接收ICMP_ECHOREPLY報文并用decoder函數將接收來的報文解碼為數據和命令:<br>
&nbsp;recv_icmp=recvfrom(sockRaw,recvbuf,MAX_PACKET,0,(struct&nbsp;sockaddr*)&amp;from,&amp;fromlen);<br>
&nbsp;decode_resp(recvbuf,recv_icmp,&amp;from);<br>
&nbsp;decoder函數:<br>
&nbsp;void&nbsp;decoder(char&nbsp;*buf,&nbsp;int&nbsp;bytes,struct&nbsp;sockaddr_in&nbsp;*from)&nbsp;<br>
&nbsp;{<br>
 IpHeader&nbsp;*iphdr;<br>
 IcmpHeader&nbsp;*icmphdr;<br>
 unsigned&nbsp;short&nbsp;iphdrlen;<br>
 iphdr&nbsp;=&nbsp;(IpHeader&nbsp;*)buf;     //IP首部的地址就等于buf的地址<br>
 iphdrlen&nbsp;=&nbsp;iphdr-&gt;h_len&nbsp;*&nbsp;4&nbsp;; //&nbsp;因為h_len是32位word,要轉換成bytes必須*4<br>
 icmphdr&nbsp;=&nbsp;(IcmpHeader*)(buf&nbsp;+&nbsp;iphdrlen); //ICMP首部的地址等于IP首部長度加buf<br>
 printf(&quot;%d&nbsp;bytes&nbsp;from&nbsp;%s:&quot;,bytes,&nbsp;inet_ntoa(from-&gt;sin_addr));  //取出源地址<br>
 printf(&quot;&nbsp;icmp_id=%d.&nbsp;&quot;,icmphdr-&gt;i_id);    //取出進程號<br>
 printf(&quot;&nbsp;icmp_seq=%d.&nbsp;&quot;,icmphdr-&gt;i_seq);    //取出序列號<br>
 printf(&quot;&nbsp;icmp_type=%d&quot;,icmphdr-&gt;i_type);   &nbsp;//取出類型<br>
 printf(&quot;&nbsp;icmp_code=%d&quot;,icmphdr-&gt;i_code);   &nbsp;//取出代碼<br>
 for(i=0;i&lt;ICMP_DATA_SIZE;i++)&nbsp;printf(&quot;%c&quot;,*(buf+iphdrlen+i+12));&nbsp;//取出數據段<br>
&nbsp;}<br>
&nbsp;注:在WIN2000下使用SOCK_RAW需要管理員的權限。<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 對于ICMP木馬,除非你使用嗅探器或者監視windows的SockAPI調用,否則從網絡上是很難發現木馬的行蹤的(關于進程的隱藏及破解會在下一篇文章中進行討論),那么,有什么可以補救的方法呢?有的,就是過濾ICMP報文,對于win2000可以使用系統自帶的路由功能對ICMP協議進行過濾,win2000的Routing&nbsp;&amp;&nbsp;Remote&nbsp;Access功能十分強大,其中之一就是建立一個TCP/IP協議過濾器:打開Routing&nbsp;&amp;&nbsp;Remote&nbsp;Access,選中機器名,在IP路由-&gt;General-&gt;網卡屬性中有兩個過濾器-輸入過濾和輸出過濾,只要在這里將你想過濾的協議制定為策略,ICMP木馬就英雄無用武之地了;不過值得注意的是,一旦在輸入過濾器中禁止了ICMP_ECHOREPLY報文,你就別想再用Ping這個工具了;如果過濾了所有的ICMP報文,你就收不到任何錯誤報文,當你使用IE訪問一個并不存在的網站時,往往要花數倍的時間才能知道結果(嘿嘿,網絡不可達、主機不可達、端口不可達報文你一個都收不到),而且基于ICMP協議的tracert工具也會失效,這也是方便和安全之間的矛盾統一了吧。&nbsp;&nbsp;&nbsp; 
</p>
<p>&nbsp;&nbsp;&nbsp; 本文的撰寫是為了深入地研究Win2000的入侵和防御技術,探討TCP/IP協議和Windows編程技巧,請不要將文中的內容用于任何違法的目的,文中所附為試驗性的ICMP通訊程序,僅僅提供通過ICMP_ECHOREPLY進行通訊交換數據的功能以供研究;如果你對本文中的內容或代碼有疑問,請Mail&nbsp;to:Shotgun@xici.net,但是出于網絡安全的考慮,本人不會提供任何木馬軟件及代碼。<br>
&nbsp;<br>
&nbsp;附錄:<br>
&nbsp;1、發送ICMP_ECHOREPLY報文的程序代碼<br>
&nbsp;#include&nbsp;&lt;winsock2.h&gt;<br>
&nbsp;#include&nbsp;&lt;stdio.h&gt;<br>
&nbsp;#include&nbsp;&lt;stdlib.h&gt;<br>
&nbsp;<br>
&nbsp;#define&nbsp;ICMP_ECHO&nbsp;8  //ICMP回顯請求報文的類型值為8<br>
&nbsp;#define&nbsp;ICMP_ECHOREPLY&nbsp;0 //ICMP回顯應答報文的類型值為0<br>
&nbsp;#define&nbsp;ICMP_MIN&nbsp;8  //&nbsp;ICMP報文的最小長度是8字節(僅為首部)<br>
&nbsp;#define&nbsp;ICMP_DEST_IP&nbsp;&quot;127.0.0.1&quot;&nbsp;//目標主機的IP<br>
&nbsp;#define&nbsp;ICMP_PASSWORD&nbsp;1234 //密碼設置,用來識別控制端<br>
&nbsp;<br>
&nbsp;//&nbsp;定義IP&nbsp;首部&nbsp;<br>
&nbsp;typedef&nbsp;struct&nbsp;iphdr&nbsp;{<br>
&nbsp;unsigned&nbsp;int&nbsp;version:4;  //IP版本號,4表示IPV4<br>
 unsigned&nbsp;int&nbsp;h_len:4;  //4位首部長度<br>
 unsigned&nbsp;char&nbsp;tos;  //8位服務類型TOS<br>
 unsigned&nbsp;short&nbsp;total_len;    //16位總長度(字節) <br>
 unsigned&nbsp;short&nbsp;ident; &nbsp;//16位標識<br>
 unsigned&nbsp;short&nbsp;frag_and_flags; &nbsp;//3位標志位<br>
 unsigned&nbsp;char ttl;  //8位生存時間&nbsp;TTL<br>
 unsigned&nbsp;char&nbsp;proto; &nbsp;//8位協議&nbsp;(TCP,&nbsp;UDP&nbsp;或其他)<br>
 unsigned&nbsp;short&nbsp;checksum; //16位IP首部校驗和<br>
 unsigned&nbsp;int&nbsp;sourceIP; &nbsp;//32位源IP地址<br>
 unsigned&nbsp;int&nbsp;destIP;   &nbsp;//32位目的IP地址<br>
&nbsp;}IpHeader;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;//&nbsp;定義ICMP首部<br>
&nbsp;typedef&nbsp;struct&nbsp;_ihdr&nbsp;<br>
&nbsp;{<br>
 BYTE&nbsp;i_type;    //8位類型<br>
 BYTE&nbsp;i_code;  &nbsp;//8位代碼<br>
 USHORT&nbsp;i_cksum;  //16位校驗和&nbsp;<br>
 USHORT&nbsp;i_id;  //識別號(一般用進程號作為識別號)<br>
 USHORT&nbsp;i_seq;  //報文序列號&nbsp;<br>
 ULONG&nbsp;timestamp; &nbsp;//時間戳<br>
&nbsp;}IcmpHeader;<br>
&nbsp;<br>
&nbsp;<br>
&nbsp;#define&nbsp;STATUS_FAILED&nbsp;0xFFFF<br>
&nbsp;#define&nbsp;DEF_PACKET_SIZE&nbsp;64 //定義報文的大小為64字節<br>
&nbsp;#define&nbsp;MAX_PACKET&nbsp;6500 //定義最大報文的大小為6500字節<br>
&nbsp;<br>
&nbsp;#define&nbsp;xmalloc(s)&nbsp;HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(s))<br>
&nbsp;#define&nbsp;xfree(p) &nbsp;HeapFree&nbsp;(GetProcessHeap(),0,(p))<br>
&nbsp;<br>
&nbsp;void&nbsp;fill_icmp_data(char&nbsp;*,int); //填充ICMP報文的子程序<br>
&nbsp;USHORT&nbsp;checksum(USHORT&nbsp;*,&nbsp;int);&nbsp;//計算校驗和的子程序  <br>
&nbsp;<br>
&nbsp;int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv)<br>
&nbsp;{<br>
 &nbsp;WSADATA&nbsp;wsaData;<br>
 &nbsp;SOCKET&nbsp;sockRaw&nbsp;=&nbsp;(SOCKET)NULL;<br>
 &nbsp;struct&nbsp;sockaddr_in&nbsp;dest,from;<br>
 &nbsp;struct&nbsp;hostent&nbsp;*&nbsp;hp;<br>
 &nbsp;int&nbsp;bread,datasize,retval,bwrote;<br>
 &nbsp;int&nbsp;fromlen&nbsp;=&nbsp;sizeof(from);<br>
 &nbsp;int&nbsp;timeout&nbsp;=&nbsp;1000;<br>
 &nbsp;char&nbsp;*icmp_data;<br>
 &nbsp;char&nbsp;*recvbuf;<br>
 &nbsp;unsigned&nbsp;int&nbsp;addr=0;<br>
 &nbsp;USHORT&nbsp;seq_no&nbsp;=&nbsp;0;<br>
 &nbsp;static&nbsp;int&nbsp;nCount=0;<br>
&nbsp;<br>
 &nbsp;if((retval=WSAStartup(MAKEWORD(2,1),&amp;wsaData))&nbsp;!=&nbsp;0)<br>
 {fprintf(stderr,&quot;WSAStartup&nbsp;failed:&nbsp;%d\n&quot;,retval);ExitProcess(STATUS_FAILED);}<br>
&nbsp;if((sockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_ICMP,NULL,0,WSA_FLAG_OVERLAPPED))==INVALID_SOCKET)&nbsp;<br>
 {fprintf(stderr,&quot;WSASocket()&nbsp;failed:&nbsp;%d\n&quot;,WSAGetLastError());ExitProcess(STATUS_FAILED);}<br>
 &nbsp;__try<br>
 &nbsp;{<br>
 &nbsp;if((bread=setsockopt(sockRaw,SOL_SOCKET,SO_RCVTIMEO,(char*)&amp;timeout,sizeof(timeout)))==SOCKET_ERROR)<br>
  {fprintf(stderr,&quot;Failed&nbsp;to&nbsp;set&nbsp;recv&nbsp;timeout:&nbsp;%d\n&quot;,WSAGetLastError());__leave;}&nbsp;//設置接收超時<br>
 &nbsp;if((bread=setsockopt(sockRaw,SOL_SOCKET,SO_SNDTIMEO,(char*)&amp;timeout,sizeof(timeout)))==SOCKET_ERROR)<br>
  {fprintf(stderr,&quot;Failed&nbsp;to&nbsp;set&nbsp;send&nbsp;timeout:&nbsp;%d\n&quot;,WSAGetLastError());__leave;}&nbsp;//設置發送超時<br>
 &nbsp;memset(&amp;dest,0,sizeof(dest));<br>
 &nbsp;dest.sin_family&nbsp;=&nbsp;AF_INET;<br>
 &nbsp;dest.sin_addr.s_addr&nbsp;=&nbsp;inet_addr(ICMP_DEST_IP);<br>
 &nbsp;datasize=DEF_PACKET_SIZE;<br>
 &nbsp;datasize+=sizeof(IcmpHeader); <br>
 &nbsp;icmp_data=xmalloc(MAX_PACKET);<br>
 &nbsp;recvbuf=xmalloc(MAX_PACKET);<br>
 &nbsp;if(!icmp_data)&nbsp;{fprintf(stderr,&quot;HeapAlloc&nbsp;failed&nbsp;%d\n&quot;,GetLastError());__leave;}<br>
  &nbsp;memset(icmp_data,0,MAX_PACKET);<br>
 &nbsp;printf(&quot;\nSend&nbsp;Packet&nbsp;to&nbsp;%s&nbsp;Success!\n&quot;,ICMP_DEST_IP);<br>
 &nbsp;fill_icmp_data(icmp_data,datasize);  //填充ICMP報文<br>
 &nbsp;((IcmpHeader*)icmp_data)-&gt;timestamp&nbsp;=&nbsp;GetTickCount();&nbsp;//設置時間戳<br>
 &nbsp;((IcmpHeader*)icmp_data)-&gt;i_seq&nbsp;=&nbsp;ICMP_PASSWORD; //設置序列號,實際使用時可以用這個密碼驗證<br>
 &nbsp;((IcmpHeader*)icmp_data)-&gt;i_cksum&nbsp;=&nbsp;checksum((USHORT*)icmp_data,&nbsp;datasize); &nbsp;//計算校驗和<br>
 &nbsp;bwrote=sendto(sockRaw,icmp_data,datasize,0,(struct&nbsp;sockaddr*)&amp;dest,sizeof(dest));&nbsp;//發送報文<br>
 &nbsp;if&nbsp;(bwrote&nbsp;==&nbsp;SOCKET_ERROR)<br>
 &nbsp;{<br>
  if&nbsp;(WSAGetLastError()&nbsp;==&nbsp;WSAETIMEDOUT)&nbsp;printf(&quot;Timed&nbsp;out\n&quot;);<br>
  fprintf(stderr,&quot;sendto&nbsp;failed:&nbsp;%d\n&quot;,WSAGetLastError());<br>
  __leave;<br>
 &nbsp;}<br>
 &nbsp;if&nbsp;(bwrote&nbsp;&lt;&nbsp;datasize&nbsp;)&nbsp;fprintf(stdout,&quot;Wrote&nbsp;%d&nbsp;bytes\n&quot;,bwrote);<br>
 &nbsp;}<br>
 &nbsp;__finally&nbsp;<br>
 &nbsp;{<br>
 if&nbsp;(sockRaw&nbsp;!=&nbsp;INVALID_SOCKET)&nbsp;closesocket(sockRaw);<br>
 WSACleanup();<br>
 &nbsp;}<br>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频一区二区三区| 99久久99久久久精品齐齐| 日韩免费视频一区| 韩国一区二区视频| 亚洲国产高清不卡| 99re热这里只有精品免费视频| 亚洲视频在线一区二区| 欧美日韩在线亚洲一区蜜芽| 五月综合激情网| 久久品道一品道久久精品| 成人综合在线网站| 亚洲成人综合在线| 欧美精品一区二区三区高清aⅴ| 国产91精品免费| 亚洲精品国产精华液| 欧美电影免费观看高清完整版在线| 国产精品一区三区| 一区二区三区色| 91丝袜国产在线播放| 中文字幕欧美三区| 日本韩国欧美一区| 男女视频一区二区| 日本一区二区三区国色天香 | 国产视频亚洲色图| 暴力调教一区二区三区| 亚洲va欧美va人人爽| 2020国产精品自拍| 色综合久久88色综合天天免费| 日日嗨av一区二区三区四区| 亚洲色图视频免费播放| 欧美久久久久免费| 99视频精品全部免费在线| 图片区小说区国产精品视频| 国产精品日韩精品欧美在线| 正在播放亚洲一区| 91精品国产美女浴室洗澡无遮挡| 91色九色蝌蚪| 日韩精品欧美成人高清一区二区| 久久久久9999亚洲精品| 欧美日韩国产精品成人| 成人精品国产免费网站| 日av在线不卡| 亚洲欧美日本在线| 久久九九全国免费| 91麻豆精品国产91久久久久久 | 久久伊人蜜桃av一区二区| 在线观看区一区二| 丁香桃色午夜亚洲一区二区三区| 水野朝阳av一区二区三区| 国产精品国产a级| 亚洲精品一区二区三区在线观看| 欧美视频第二页| 91在线精品一区二区三区| 国产剧情在线观看一区二区| 日本免费新一区视频 | 国产成人av自拍| 亚洲欧洲三级电影| 久久综合五月天婷婷伊人| 欧美揉bbbbb揉bbbbb| 91在线视频观看| 懂色av一区二区三区蜜臀| 久久精品久久99精品久久| 视频精品一区二区| 亚洲国产sm捆绑调教视频 | 亚洲.国产.中文慕字在线| 国产精品天美传媒| 久久久蜜桃精品| 26uuu久久天堂性欧美| 制服视频三区第一页精品| 欧美丰满一区二区免费视频| 欧美亚一区二区| 91国偷自产一区二区使用方法| 99re免费视频精品全部| 国产午夜亚洲精品理论片色戒| 日韩丝袜美女视频| 欧美日韩国产免费一区二区| 色999日韩国产欧美一区二区| 99精品一区二区| 成人app软件下载大全免费| 成人一区二区三区在线观看| 国产91高潮流白浆在线麻豆| 国产精品69毛片高清亚洲| 国产成人综合视频| 成人国产免费视频| 91色乱码一区二区三区| 欧美无砖砖区免费| 欧美丰满一区二区免费视频| 欧美精品久久99| 欧美一区二区免费观在线| 精品三级在线看| 国产午夜精品一区二区三区四区| 欧美激情一区二区三区| 国产精品女同一区二区三区| 中文字幕一区二区三区不卡在线| 亚洲品质自拍视频| 偷拍一区二区三区| 久久疯狂做爰流白浆xx| 国产传媒欧美日韩成人| 激情综合色综合久久综合| 国内外精品视频| 成人综合婷婷国产精品久久 | 亚洲自拍偷拍网站| 婷婷久久综合九色国产成人| 九色|91porny| 成人黄色在线视频| 欧美日韩高清不卡| 精品奇米国产一区二区三区| 国产精品美女久久久久高潮| 亚洲夂夂婷婷色拍ww47| 另类综合日韩欧美亚洲| 成人免费的视频| 欧美久久久一区| 国产日韩亚洲欧美综合| 亚洲一区二区三区小说| 激情五月激情综合网| 色老汉av一区二区三区| 精品美女一区二区| 亚洲激情男女视频| 国产最新精品免费| 欧美特级限制片免费在线观看| 精品国产百合女同互慰| 亚洲国产综合91精品麻豆| 国产一区二区三区四区在线观看| 色综合咪咪久久| 久久久99久久精品欧美| 亚洲五码中文字幕| 国产91高潮流白浆在线麻豆| 欧美一区二区三区四区高清| 一区在线观看免费| 国产在线观看一区二区| 欧美色网站导航| 国产精品美女一区二区三区| 美女视频网站黄色亚洲| 91蜜桃免费观看视频| 久久久久久电影| 青青草精品视频| 91国偷自产一区二区三区观看| 久久久噜噜噜久久人人看| 婷婷综合另类小说色区| 色综合久久综合网97色综合| 国产亚洲一区二区三区四区| 奇米亚洲午夜久久精品| 欧美亚洲一区二区在线| 国产精品超碰97尤物18| 国产一区二区精品久久99| 91精品在线观看入口| 一区二区三区四区在线| bt欧美亚洲午夜电影天堂| 久久免费视频色| 久久99久国产精品黄毛片色诱| 欧美日韩精品欧美日韩精品一综合| 国产精品欧美一区喷水| 国产精品亚洲第一| 精品久久人人做人人爰| 日韩精品一二三四| 在线精品视频一区二区三四| 亚洲精品欧美综合四区| 91在线观看下载| 国产精品国产三级国产aⅴ中文 | 国产亚洲一二三区| 国产麻豆日韩欧美久久| www久久精品| 极品少妇xxxx精品少妇| 91精品福利在线一区二区三区| 午夜精品一区二区三区电影天堂| 91黄色免费版| 亚洲成人激情综合网| 欧美日韩精品一二三区| 同产精品九九九| 欧美大胆人体bbbb| 激情成人综合网| 国产清纯在线一区二区www| 国产v日产∨综合v精品视频| 久久精品视频一区| 成人免费av资源| 亚洲人成精品久久久久久| 在线观看欧美黄色| 日韩综合在线视频| 欧美成人一区二区三区片免费 | 91精品91久久久中77777| 一区二区三区在线视频播放| 欧美午夜宅男影院| 肉丝袜脚交视频一区二区| 日韩欧美综合在线| 国产另类ts人妖一区二区| 国产精品午夜在线观看| 色哟哟国产精品| 婷婷夜色潮精品综合在线| 日韩一区二区免费高清| 国产裸体歌舞团一区二区| 中文一区一区三区高中清不卡| 色综合欧美在线视频区| 日本中文字幕不卡| 久久久久久夜精品精品免费| 99re在线精品| 日本不卡1234视频| 国产午夜精品福利| 欧美色综合影院| 国产宾馆实践打屁股91| 亚洲国产视频一区二区|