青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

道。道。道

安全特性不等于安全的特性

   :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理

常用鏈接

搜索

  •  

最新評論

網(wǎng)絡(luò)游戲盛行催生了各種外掛,讓商家頭痛不已,那么外掛是怎么設(shè)計的呢?看看本文就知道了

?

一、 前言

  所謂游戲外掛,其實是一種游戲外輔程序,它可以協(xié)助玩家自動產(chǎn)生游戲動作、修改游戲網(wǎng)絡(luò)數(shù)據(jù)包以及修改游戲內(nèi)

存數(shù)據(jù)等,以實現(xiàn)玩家用最少的時間和金錢去完成功力升級和過關(guān)斬將。雖然,現(xiàn)在對游戲外掛程序的“合法”身份眾說

紛紜,在這里我不想對此發(fā)表任何個人意見,讓時間去說明一切吧。


  隨著網(wǎng)絡(luò)游戲的時代的來臨,游戲外掛在原有的功能之上進行了新的發(fā)展,它變得更加多種多樣,功能更加強大,操

作更加簡單,以至有些游戲的外掛已經(jīng)成為一個體系,比如《石器時代》,外掛品種達到了幾十種,自動戰(zhàn)斗、自動行走

、自動練級、自動補血、加速、不遇敵、原地遇敵、快速增加經(jīng)驗值、按鍵精靈……幾乎無所不包。

  游戲外掛的設(shè)計主要是針對于某個游戲開發(fā)的,我們可以根據(jù)它針對的游戲的類型可大致可將外掛分為兩種大類。

  一類是將游戲中大量繁瑣和無聊的攻擊動作使用外掛自動完成,以幫助玩家輕松搞定攻擊對象并可以快速的增加玩家

的經(jīng)驗值。比如在《龍族》中有一種工作的設(shè)定,玩家的工作等級越高,就可以駕馭越好的裝備。但是增加工作等級卻不

是一件有趣的事情,毋寧說是重復(fù)枯燥的機械勞動。如果你想做法師用的杖,首先需要做基本工作--?砍樹。砍樹的方法

很簡單,在一棵大樹前不停的點鼠標(biāo)就可以了,每10000的經(jīng)驗升一級。這就意味著玩家要在大樹前不停的點擊鼠標(biāo),這

種無聊的事情通過"按鍵精靈"就可以解決。外掛的"按鍵精靈"功能可以讓玩家擺脫無趣的點擊鼠標(biāo)的工作。

  另一類是由外掛程序產(chǎn)生欺騙性的網(wǎng)絡(luò)游戲封包,并將這些封包發(fā)送到網(wǎng)絡(luò)游戲服務(wù)器,利用這些虛假信息欺騙服務(wù)

器進行游戲數(shù)值的修改,達到修改角色能力數(shù)值的目的。這類外掛程序針對性很強,一般在設(shè)計時都是針對某個游戲某個

版本來做的,因為每個網(wǎng)絡(luò)游戲服務(wù)器與客戶端交流的數(shù)據(jù)包各不相同,外掛程序必須要對欺騙的網(wǎng)絡(luò)游戲服務(wù)器的數(shù)據(jù)

包進行分析,才能產(chǎn)生服務(wù)器識別的數(shù)據(jù)包。這類外掛程序也是當(dāng)前最流利的一類游戲外掛程序。

  另外,現(xiàn)在很多外掛程序功能強大,不僅實現(xiàn)了自動動作代理和封包功能,而且還提供了對網(wǎng)絡(luò)游戲的客戶端程序的

數(shù)據(jù)進行修改,以達到欺騙網(wǎng)絡(luò)游戲服務(wù)器的目的。我相信,隨著網(wǎng)絡(luò)游戲商家的反外掛技術(shù)的進展,游戲外掛將會產(chǎn)生

更多更優(yōu)秀的技術(shù),讓我們期待著看場技術(shù)大戰(zhàn)吧......

  三、外掛技術(shù)綜述

  可以將開發(fā)游戲外掛程序的過程大體上劃分為兩個部分:

  前期部分工作是對外掛的主體游戲進行分析,不同類型的外掛分析主體游戲的內(nèi)容也不相同。如外掛為上述談到的外

掛類型中的第一類時,其分析過程常是針對游戲的場景中的攻擊對象的位置和分布情況進行分析,以實現(xiàn)外掛自動進行攻

擊以及位置移動。如外掛為外掛類型中的第二類時,其分析過程常是針對游戲服務(wù)器與客戶端之間通訊包數(shù)據(jù)的結(jié)構(gòu)、內(nèi)

容以及加密算法的分析。因網(wǎng)絡(luò)游戲公司一般都不會公布其游戲產(chǎn)品的通訊包數(shù)據(jù)的結(jié)構(gòu)、內(nèi)容和加密算法的信息,所以

對于開發(fā)第二類外掛成功的關(guān)鍵在于是否能正確分析游戲包數(shù)據(jù)的結(jié)構(gòu)、內(nèi)容以及加密算法,雖然可以使用一些工具輔助

分析,但是這還是一種堅苦而復(fù)雜的工作。

  后期部分工作主要是根據(jù)前期對游戲的分析結(jié)果,使用大量的程序開發(fā)技術(shù)編寫外掛程序以實現(xiàn)對游戲的控制或修改

。如外掛程序為第一類外掛時,通常會使用到鼠標(biāo)模擬技術(shù)來實現(xiàn)游戲角色的自動位置移動,使用鍵盤模擬技術(shù)來實現(xiàn)游

戲角色的自動攻擊。如外掛程序為第二類外掛時,通常會使用到擋截Sock和擋截API函數(shù)技術(shù),以擋截游戲服務(wù)器傳來的

網(wǎng)絡(luò)數(shù)據(jù)包并將數(shù)據(jù)包修改后封包后傳給游戲服務(wù)器。另外,還有許多外掛使用對游戲客戶端程序內(nèi)存數(shù)據(jù)修改技術(shù)以及

游戲 加速技術(shù)

  本文主要是針對開發(fā)游戲外掛程序后期使用的程序開發(fā)技術(shù)進行探討,重點介紹的如下幾種在游戲外掛中常使用的程

序開發(fā)技術(shù)

  ● 動作模擬技術(shù):主要包括鍵盤模擬技術(shù)和鼠標(biāo)模擬技術(shù)

  ● 封包技術(shù):主要包括擋截Sock技術(shù)和擋截API技術(shù)

四、動作模擬技術(shù)

  我們在前面介紹過,幾乎所有的游戲都有大量繁瑣和無聊的攻擊動作以增加玩家的功力,還有那些數(shù)不完的迷宮,這

些好像已經(jīng)成為了角色游戲的代名詞。現(xiàn)在,外掛可以幫助玩家從這些繁瑣而無聊的工作中擺脫出來,專注于游戲情節(jié)的

進展。外掛程序為了實現(xiàn)自動角色位置移動和自動攻擊等功能,需要使用到鍵盤模擬技術(shù)和鼠標(biāo)模擬技術(shù)。下面我們將重

點介紹這些技術(shù)并編寫一個簡單的實例幫助讀者理解動作模擬技術(shù)的實現(xiàn)過程。

  1. 鼠標(biāo)模擬技術(shù)
  
  幾乎所有的游戲中都使用了鼠標(biāo)來改變角色的位置和方向,玩家僅用一個小小的鼠標(biāo),就可以使角色暢游天下。那么

,我們?nèi)绾螌崿F(xiàn)在沒有玩家的參與下角色也可以自動行走呢。其實實現(xiàn)這個并不難,僅僅幾個Windows API函數(shù)就可以搞

定,讓我們先來認(rèn)識認(rèn)識這些API函數(shù)。

  (1) 模擬鼠標(biāo)動作API函數(shù)mouse_event,它可以實現(xiàn)模擬鼠標(biāo)按下和放開等動作。

    VOID mouse_event(
      DWORD dwFlags, // 鼠標(biāo)動作標(biāo)識。
      DWORD dx, // 鼠標(biāo)水平方向位置。
      DWORD dy, // 鼠標(biāo)垂直方向位置。
      DWORD dwData, // 鼠標(biāo)輪子轉(zhuǎn)動的數(shù)量。
      DWORD dwExtraInfo // 一個關(guān)聯(lián)鼠標(biāo)動作輔加信息。
    );

  其中,dwFlags表示了各種各樣的鼠標(biāo)動作和點擊活動,它的常用取值如下:

   MOUSEEVENTF_MOVE 表示模擬鼠標(biāo)移動事件。

   MOUSEEVENTF_LEFTDOWN 表示模擬按下鼠標(biāo)左鍵。

   MOUSEEVENTF_LEFTUP 表示模擬放開鼠標(biāo)左鍵。

   MOUSEEVENTF_RIGHTDOWN 表示模擬按下鼠標(biāo)右鍵。

   MOUSEEVENTF_RIGHTUP 表示模擬放開鼠標(biāo)右鍵。

   MOUSEEVENTF_MIDDLEDOWN 表示模擬按下鼠標(biāo)中鍵。

   MOUSEEVENTF_MIDDLEUP 表示模擬放開鼠標(biāo)中鍵。

  (2)、設(shè)置和獲取當(dāng)前鼠標(biāo)位置的API函數(shù)。獲取當(dāng)前鼠標(biāo)位置使用GetCursorPos()函數(shù),設(shè)置當(dāng)前鼠標(biāo)位置使用

SetCursorPos()函數(shù)。

    BOOL GetCursorPos(
     LPPOINT lpPoint // 返回鼠標(biāo)的當(dāng)前位置。
    );
    BOOL SetCursorPos(
    int X, // 鼠標(biāo)的水平方向位置。
      int Y //鼠標(biāo)的垂直方向位置。
    );?

  通常游戲角色的行走都是通過鼠標(biāo)移動至目的地,然后按一下鼠標(biāo)的按鈕就搞定了。下面我們使用上面介紹的API函

數(shù)來模擬角色行走過程。

   CPoint oldPoint,newPoint;
   GetCursorPos(&oldPoint); //保存當(dāng)前鼠標(biāo)位置。
   newPoint.x = oldPoint.x+40;
   newPoint.y = oldPoint.y+10;
   SetCursorPos(newPoint.x,newPoint.y); //設(shè)置目的地位置。
   mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);//模擬按下鼠標(biāo)右鍵。
   mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);//模擬放開鼠標(biāo)右鍵。?

  2. 鍵盤模擬技術(shù)

  在很多游戲中,不僅提供了鼠標(biāo)的操作,而且還提供了鍵盤的操作,在對攻擊對象進行攻擊時還可以使用快捷鍵。為

了使這些攻擊過程能夠自動進行,外掛程序需要使用鍵盤模擬技術(shù)。像鼠標(biāo)模擬技術(shù)一樣,Windows API也提供了一系列

API函數(shù)來完成對鍵盤動作的模擬。

  模擬鍵盤動作API函數(shù)keydb_event,它可以模擬對鍵盤上的某個或某些鍵進行按下或放開的動作。

   VOID keybd_event(
     BYTE bVk, // 虛擬鍵值。
     BYTE bScan, // 硬件掃描碼。
     DWORD dwFlags, // 動作標(biāo)識。
     DWORD dwExtraInfo // 與鍵盤動作關(guān)聯(lián)的輔加信息。
   );

  其中,bVk表示虛擬鍵值,其實它是一個BYTE類型值的宏,其取值范圍為1-254。有關(guān)虛擬鍵值表請在MSDN上使用關(guān)鍵

字“Virtual-Key Codes”查找相關(guān)資料。bScan表示當(dāng)鍵盤上某鍵被按下和放開時,鍵盤系統(tǒng)硬件產(chǎn)生的掃描碼,我們可

以MapVirtualKey()函數(shù)在虛擬鍵值與掃描碼之間進行轉(zhuǎn)換。dwFlags表示各種各樣的鍵盤動作,它有兩種取值:

KEYEVENTF_EXTENDEDKEY和KEYEVENTF_KEYUP。

  下面我們使用一段代碼實現(xiàn)在游戲中按下Shift+R快捷鍵對攻擊對象進行攻擊

   keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0); //按下CTRL鍵。
   keybd_event(0x52,MapVirtualKey(0x52,0),0,0);//鍵下R鍵。
   keybd_event(0x52,MapVirtualKey(0x52,0), KEYEVENTF_KEYUP,0);//放開R鍵。
   keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),
   KEYEVENTF_KEYUP,0);//放開CTRL鍵。

  3. 激活外掛

  上面介紹的鼠標(biāo)和鍵盤模擬技術(shù)實現(xiàn)了對游戲角色的動作部分的模擬,但要想外掛能工作于游戲之上,還需要將其與

游戲 的場景窗口聯(lián)系起來或者使用一個激活鍵,就象按鍵精靈的那個激活鍵一樣。我們可以用GetWindow函數(shù)來枚舉窗口

,也可以用Findwindow函數(shù)來查找特定的窗口。另外還有一個FindWindowEx函數(shù)可以找到窗口的子窗口,當(dāng)游戲切換場景

的時候我們可以用FindWindowEx來確定一些當(dāng)前窗口的特征,從而判斷是否還在這個場景,方法很多了,比如可以

GetWindowInfo來確定一些東西,比如當(dāng)查找不到某個按鈕的時候就說明游戲場景已經(jīng)切換了等等辦法。當(dāng)使用激活鍵進

行關(guān)聯(lián),需要使用Hook技術(shù)開發(fā)一個全局鍵盤鉤子,在這里就不具體介紹全局鉤子的開發(fā)過程了,在后面的實例中我們將

會使用到全局鉤子,到時將學(xué)習(xí)到全局鉤子的相關(guān)知識


  4. 實例實現(xiàn)

  通過上面的學(xué)習(xí),我們已經(jīng)基本具備了編寫動作式游戲外掛的能力了。下面我們將創(chuàng)建一個畫筆程序外掛,它實現(xiàn)自

動移動畫筆字光標(biāo)的位置并寫下一個紅色的“R”字。以這個實例為基礎(chǔ),加入相應(yīng)的游戲動作規(guī)則,就可以實現(xiàn)一個完

整的游戲外掛。這里作者不想使用某個游戲作為例子來開發(fā)外掛(因沒有游戲商家的授權(quán)啊!),如讀者感興趣的話可以

找一個游戲試試,最好僅做測試技術(shù)用。

  首先,我們需要編寫一個全局鉤子,使用它來激活外掛,激活鍵為F10。創(chuàng)建全局鉤子步驟如下:

  (1).選擇MFC AppWizard(DLL)創(chuàng)建項目ActiveKey,并選擇MFC Extension DLL(共享MFC拷貝)類型。

  (2).插入新文件ActiveKey.h,在其中輸入如下代碼

   #ifndef _KEYDLL_H
   #define _KEYDLL_H

   class AFX_EXT_CLASS CKeyHook:public CObject
   {
    public:
 CKeyHook();
 ~CKeyHook();
 HHOOK Start(); //安裝鉤子
 BOOL Stop(); //卸載鉤子
   };
   #endif?

  (3).在ActiveKey.cpp文件中加入聲明"#include ActiveKey.h"。

  (4).在ActiveKey.cpp文件中加入共享數(shù)據(jù)段,代碼如下:

   //Shared data section
   #pragma data_seg("sharedata")
   HHOOK glhHook=NULL; //鉤子句柄。
   HINSTANCE glhInstance=NULL; //DLL實例句柄。
   #pragma data_seg()?

  (5).在ActiveKey.def文件中設(shè)置共享數(shù)據(jù)段屬性,代碼如下:

   SETCTIONS
   shareddata READ WRITE SHARED

  (6).在ActiveKey.cpp文件中加入CkeyHook類的實現(xiàn)代碼和鉤子函數(shù)代碼

   //鍵盤鉤子處理函數(shù)。
   extern "C" LRESULT WINAPI KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
   {
   if( nCode >= 0 )
   {
   if( wParam == 0X79 )//當(dāng)按下F10鍵時,激活外掛。
 {
  //外掛實現(xiàn)代碼
CPoint newPoint,oldPoint;
   GetCursorPos(&oldPoint);
   newPoint.x = oldPoint.x+40;
   newPoint.y = oldPoint.y+10;
   SetCursorPos(newPoint.x,newPoint.y);
   mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//模擬按下鼠標(biāo)左鍵。
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//模擬放開鼠標(biāo)左鍵。
  keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0); //按下SHIFT鍵。
  keybd_event(0x52,MapVirtualKey(0x52,0),0,0);//按下R鍵。
  keybd_event(0x52,MapVirtualKey(0x52,0),KEYEVENTF_KEYUP,0);//放開R鍵。
  keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),KEYEVENTF_KEYUP,0);//放開SHIFT鍵。
      SetCursorPos(oldPoint.x,oldPoint.y);
 }
   }
   return CallNextHookEx(glhHook,nCode,wParam,lParam);
   }

   CKeyHook::CKeyHook(){}
   CKeyHook::~CKeyHook()
   { 
   if( glhHook )
Stop();
   }
   //安裝全局鉤子。
   HHOOK CKeyHook::Start()
   {
glhHook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,glhInstance,0);//設(shè)置鍵盤鉤子。
return glhHook;
}
   //卸載全局鉤子。
   BOOL CKeyHook::Stop()
   {
   BOOL bResult = TRUE;
 if( glhHook )
   bResult = UnhookWindowsHookEx(glhHook);//卸載鍵盤鉤子。
   return bResult;
   }?

  (7).修改DllMain函數(shù),代碼如下:

   extern "C" int APIENTRY
   DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
   {
//如果使用lpReserved參數(shù)則刪除下面這行
UNREFERENCED_PARAMETER(lpReserved);

if (dwReason == DLL_PROCESS_ATTACH)
{
  TRACE0("NOtePadHOOK.DLL Initializing!\n");
   //擴展DLL僅初始化一次
  if (!AfxInitExtensionModule(ActiveKeyDLL, hInstance))
return 0;
  new CDynLinkLibrary(ActiveKeyDLL);
      //把DLL加入動態(tài)MFC類庫中
  glhInstance = hInstance;
  //插入保存DLL實例句柄
}
else if (dwReason == DLL_PROCESS_DETACH)
{
  TRACE0("NotePadHOOK.DLL Terminating!\n");
  //終止這個鏈接庫前調(diào)用它
  AfxTermExtensionModule(ActiveKeyDLL);
}
return 1;
   }

posted on 2006-11-18 16:53 獨孤九劍 閱讀(568) 評論(0)  編輯 收藏 引用 所屬分類: Win32Visual C++ 8.0misc
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线综合视频| 亚洲精品美女久久久久| 国产精品腿扒开做爽爽爽挤奶网站| 欧美国产极速在线| 欧美激情性爽国产精品17p| 欧美视频免费在线观看| 国产日韩欧美在线观看| 悠悠资源网久久精品| 91久久午夜| 羞羞色国产精品| 亚洲国产精品激情在线观看| 国产精品99久久久久久久久久久久| 欧美一级播放| 欧美精品一区二区三区一线天视频| 国产精品青草久久| 久久久久九九九九| av成人免费在线| 久久久久久久综合色一本| 欧美日韩国产一区二区三区| 影音先锋久久久| 亚洲精品美女久久久久| 国产欧美日韩精品专区| 亚洲一区在线免费观看| 欧美88av| 欧美综合激情网| 国产精品日韩欧美| 麻豆久久婷婷| 欧美一区二区精品在线| 亚洲国产一区二区三区青草影视| 久久天天躁狠狠躁夜夜av| 午夜日韩电影| 国产精品乱人伦一区二区| 亚洲色图综合久久| 亚洲日本中文字幕免费在线不卡| 国产在线国偷精品产拍免费yy| 欧美一级艳片视频免费观看| 老司机免费视频一区二区| 国产在线成人| 在线一区二区三区四区| 亚洲国产精选| 欧美一区二区在线观看| 在线视频精品一区| 亚洲精品字幕| 欧美视频日韩视频| 亚洲国产合集| 欧美另类女人| 欧美不卡高清| 影音先锋成人资源站| 亚洲在线不卡| 国产一区二区av| 蜜桃视频一区| 欧美日韩在线精品一区二区三区| 亚洲一区自拍| 欧美日韩亚洲在线| 亚洲精品国产日韩| 亚洲精品网址在线观看| 一区二区三区四区在线| 日韩视频第一页| 亚洲一区二区三区在线| 在线亚洲免费| 欧美日韩中文字幕在线视频| 亚洲人久久久| 在线视频亚洲| 欧美三级小说| 亚洲午夜免费福利视频| 精品成人一区二区三区四区| 亚洲国产精品悠悠久久琪琪| 在线精品一区| 亚洲午夜性刺激影院| 亚洲综合大片69999| 欧美午夜精品理论片a级按摩| 久久精品一区二区三区中文字幕| 国产性色一区二区| 久久精品一区二区三区不卡| 亚洲一区二区在线观看视频| 欧美视频中文字幕| 亚洲图片你懂的| 欧美主播一区二区三区| 国产一区二区三区在线观看免费视频| 性高湖久久久久久久久| 免费的成人av| 亚洲免费精品| 国产精品午夜国产小视频| 亚洲欧美日韩精品久久| 激情91久久| 欧美福利一区二区| 一区二区三区高清视频在线观看| 在线电影国产精品| 欧美福利网址| 午夜精品久久| 另类亚洲自拍| 亚洲免费黄色| 国产日韩一区二区| 巨乳诱惑日韩免费av| 日韩视频一区二区三区| 亚洲区第一页| 国产精品qvod| 久久一区二区三区超碰国产精品| 亚洲欧美日本日韩| 久久久精品久久久久| 最新成人在线| 亚洲区免费影片| 国产精品日韩专区| 久久久久久一区二区| 99在线精品观看| 男女激情视频一区| 亚洲欧美国产日韩中文字幕| 影音先锋欧美精品| 国产精品嫩草久久久久| 免费不卡在线观看av| 午夜精品一区二区三区在线 | 亚洲一区二区高清| 免费看的黄色欧美网站| 免费成人美女女| 亚洲欧美国产制服动漫| 亚洲国产天堂网精品网站| 国产精品欧美久久| 欧美成人一区二区三区片免费 | 亚洲一区二区三区在线| 极品av少妇一区二区| 国产精品国产a级| 亚洲在线一区| 欧美亚洲一区在线| 99re8这里有精品热视频免费| 欧美极品影院| 久久人人97超碰人人澡爱香蕉| 亚洲欧美日韩国产| 亚洲另类一区二区| 欧美成人蜜桃| 最近中文字幕日韩精品| 国产午夜精品全部视频播放 | 欧美777四色影视在线| 欧美亚洲在线观看| 亚洲乱码久久| 国产精品ⅴa在线观看h| 欧美va亚洲va香蕉在线| 久久精品国产免费观看| 久久久久久综合网天天| 黄色成人小视频| 欧美电影资源| 久久免费一区| 女仆av观看一区| 蜜桃av一区| 欧美成ee人免费视频| 久久五月激情| 欧美二区视频| 欧美激情一级片一区二区| 欧美大尺度在线观看| 欧美大片在线看| 欧美成人免费小视频| 老司机午夜精品视频| 麻豆成人在线观看| 欧美精品久久一区| 欧美女同在线视频| 欧美日本在线一区| 欧美日韩在线不卡一区| 欧美婷婷六月丁香综合色| 国产精品毛片| 一区二区三区在线不卡| 亚洲国产导航| 国产日韩欧美高清免费| 国产一区二区三区丝袜| 亚洲国产欧美一区二区三区久久| 亚洲国产午夜| 99综合视频| 亚洲国产一区二区a毛片| 亚洲国产老妈| 亚洲欧美日韩国产综合| 久久精品国产在热久久| 一个色综合导航| 亚洲欧美激情视频| 老司机久久99久久精品播放免费| 欧美夫妇交换俱乐部在线观看| 99精品福利视频| 久久成人精品| 欧美日韩国产色视频| 国产日韩av高清| 亚洲免费观看在线视频| 久久国产婷婷国产香蕉| 欧美国产综合视频| 久久色中文字幕| 亚洲人成7777| 欧美一区三区三区高中清蜜桃| 久久亚洲欧洲| 欧美午夜欧美| 在线观看一区二区精品视频| 在线一区日本视频| 免费不卡中文字幕视频| 日韩视频免费在线| 久久琪琪电影院| 国产精品视频男人的天堂| 亚洲激情视频在线| 欧美中文字幕| 日韩亚洲一区二区| 快射av在线播放一区| 国产精品亚洲综合久久| 日韩网站在线观看| 久久夜精品va视频免费观看| 在线视频精品| 欧美精品91|