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

隨筆 - 298  文章 - 377  trackbacks - 0
<2016年4月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用鏈接

留言簿(34)

隨筆分類

隨筆檔案

文章檔案

相冊

收藏夾

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

(一)外掛一般都能在游戲的界面中按一個熱鍵(比如F12,HOME等),就可以呼出外掛的窗口,然后在里面進行外掛的功能設置,這個外掛的窗口是怎么弄出來的呢?

要想在游戲里顯示出窗口,那么我們要顯示的這個窗口就要和游戲本身“混”在一起,也就是說我們的外掛窗口要“混入”游戲的內部,讓游戲不排斥外掛窗口,把外掛窗口當做“自己人”,這樣我們的外掛才能去“影響”游戲本身的運行。行話把這個叫“注入”。

那怎么“注入”呢?
Windows操作系統有個API函數SetWindowsHookEx,該函數的可以在系統上安裝一個“鉤子(HOOK)”。也就是把我們自己編寫的一個回調函數設置為系統“鉤子”。“鉤子(HOOK)”有什么用呢?系統發送給各種程序窗口的消息,都要先經過“鉤子”先處理之后再送到它本來要去的窗口。而在“鉤子”處理來的消息的時候,Windows操作系統就已經自動把“鉤子”“鉤”在了消息即將到達的目的程序窗口上了,此時“鉤子”就已經“混入”了目的窗口的內部了


==========================================
以下shaker注明:
這個教程存在一個漏洞,以使一些對DLL編程不是很了解的人不能順利的完成編譯。
BUG如下:原文中的S3DHOOK.DEF文件中的內容如下
; S3DHook.def : Declares the module parameters for the DLL.

LIBRARY      "S3DHook"
DESCRIPTION  "S3DHook Windows Dynamic Link Library"

EXPORTS
    ; Explicit exports can go here
使得生成的DLL沒有任何輸出函數,在編譯EXE工程出現錯誤,要解決這個問題只要改變原來的S3DHook.def文件的內容如下:
; S3DHook.def : Declares the module parameters for the DLL.

LIBRARY      "S3DHook"
DESCRIPTION  "S3DHook Windows Dynamic Link Library"

EXPORTS
    ; Explicit exports can go here
InstallHook
UninstallHook
如此,問題便得到解決!
//////////////////////////////////////////////////////////////////////////

關于版主shaker的注明:
這個并不能說是個BUG
由于:
在S3DHook.h頭文件中加入

#ifndef S3DHOOKAPI
#define S3DHOOKAPI extern "C" __declspec(dllimport)
#endif
在S3DHook.cpp中

#include "S3DHook.h"
這一句之前加入
#define S3DHOOKAPI extern "C" __declspec(dllexport)

也就是這個樣子成了這個
#define S3DHOOKAPI extern "C" __declspec(dllexport)
#include "S3DHook.h"
這樣一來就不需要用.def文件來導出函數了
關于這種導出方法,DLL編程的初學者,最好先去去看看
windows核心編程,這本書,
這種方法就是作者所推崇的

把有關外掛功能的代碼和“鉤子”函數一起放到同一個DLL中,那么我們的外掛也就一同被注入到游戲里面去了

在“我的文檔”中建立一個文件夾名字叫“神跡外掛”然后打帶VC6,建立新工程

點OK,選擇
Regular DLL using shared mfc DLL

在S3DHook.h頭文件中加入

#ifndef S3DHOOKAPI
#define S3DHOOKAPI extern "C" __declspec(dllimport)
#endif

在S3DHook.cpp中

#include "S3DHook.h"
這一句之前加入
#define S3DHOOKAPI extern "C" __declspec(dllexport)

也就是這個樣子成了這個
#define S3DHOOKAPI extern "C" __declspec(dllexport)
#include "S3DHook.h"

在S3DHook.cpp中加入全局共享數據

#pragma comment(linker,"section:Shared,rws")
#pragma data_seg("Shared")
HHOOK g_hhook;
#pragma data_seg()

在S3DHook.cpp加入鉤子回調函數

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
BOOL bKeyUp = lParam & (1 << 31);
if (bKeyUp && wParam == VK_F12 && nCode == HC_ACTION) {
AfxMessageBox("ok");
}
return ::CallNextHookEx(g_hhook, nCode, wParam ,lParam);
}
在文件前面加入函數的原形以便后面引用
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);

在S3DHook.H里加入“導出(export)”的鉤子安裝卸載函數原形

S3DHOOKAPI BOOL WINAPI InstallHook();
S3DHOOKAPI BOOL WINAPI UninstallHook();

在S3DHook.CPP里加入鉤子安裝卸載函數的實現

S3DHOOKAPI BOOL WINAPI InstallHook()
{
if (g_hhook == NULL) {
g_hhook = ::SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, theApp.m_hInstance, 0);
if (g_hhook != NULL)
return TRUE;
}
return FALSE;
}

S3DHOOKAPI BOOL WINAPI UninstallHook()
{
return ::UnhookWindowsHookEx(g_hhook);
}

好了,現在我們建立的這個DLL具有基本的鍵盤鉤子的功能,編譯生成S3DHook.dll
下面建立一個EXE來調用這個DLL
這個是對話框型的工程

在MainDlg.cpp中加入對DLL的調用

插入頭文件包含
#include "../s3dhook/s3dhook.h"

更改工程設置

Project->settings->link->Object/library modules:
輸入../s3dhook/debug/s3dhook.lib

在對話框的OnInitDialog中加入InstallHook();安裝鍵盤鉤子
在OnClose中加入UninstallHook();關閉程序時卸載鍵盤鉤子
編譯這個對話框EXE

把這兩個工程生成的S3DHook.dll和Main.exe放到同一個文件夾中,運行

在游戲窗口中按F12,會出現一個消息框,游戲會暫時定住
注意消息框的標題是游戲程序的名字
這說明這個消息框是在游戲內部顯示出來的

我們已經從游戲程序的內部顯示了一個消息框出來了
但還不夠,我們要在游戲能夠呼出外掛的界面,至少要顯示一個對話框出來

下面我們在S3DHook這個DLL工程中添加一個從CDialog派生的CS3DHookDlg類

把DIALOG ID改為IDD_S3DHOOK_DIALOG

添加的對話框類的操作如下
主菜單->Insert->New Form

為了方便,把CS3DHookDlg的源程序文件名字分別改為
s3dhook.h
s3dhook.cpp

把剛才自動生成的對話框的Caption改為"外掛呼出窗口"

下面定義一個全局窗口指針來保存我們要生成的這個窗口的指針,以便后面對"外掛呼出窗口"進行控制,把它和全局變量
CS3DHookApp theApp;
寫在一起,也就是這個樣子
CS3DHookApp theApp;
CS3DHookDlg *pCWndWGMain;

下面對鉤子回調函數進行改造,以便使我們的"外掛呼出窗口"能夠在按F12時呼出
如下:
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
//按F12彈起時呼出外掛
BOOL bKeyUp = lParam & (1 << 31);
if (bKeyUp && wParam == VK_F12 && nCode == HC_ACTION) {
if (pCWndWGMain == NULL)
{
//更改當前有效模塊狀態到DLL中
//以便正確的讀取對話框的資源
AFX_MANAGE_STATE(AfxGetStaticModuleState());
//找到當前的有效激活窗口
CWnd *pCWnd = CWnd::GetForegroundWindow();
//生成CS3DHookDlg類的對象實例
//此處應該生成一個非模態對話框
pCWndWGMain = new CS3DHookDlg();
pCWndWGMain->Create(IDD_S3DHOOK_DIALOG, pCWnd);
}
else
{
//根據當前呼出窗口的狀態來顯示或隱藏呼出窗口
pCWndWGMain->ShowWindow(pCWndWGMain->IsWindowVisible() ? SW_HIDE : SW_SHOW);
}
}
return ::CallNextHookEx(g_hhook, nCode, wParam ,lParam);
}
有關上面的這一句
在Regular MFC DLL中使用資源時非常重要
AFX_MANAGE_STATE(AfxGetStaticModuleState());
更多說明請參看
http://www.csdn.net/develop/article/25/25358.shtm
當關掉外掛的主程序時,還要做點善后工作
重載CS3DHookApp類的ExitInstance函數,在其中刪除對話框
int CS3DHookApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
delete pCWndWGMain;
return CWinApp::ExitInstance();
}
重新編譯生成S3DHOOK.dll并和Main.exe放到一起,運行它試試看

運行后,隨便打開一個其他的什么窗口,按F12,看到什么了?

哈哈,我們的"外掛呼出窗口"呼出來了,真是千呼萬喚始出來啊

我在記事本中試了試:

上次的程序已經可以在其他窗口中呼出我們的"外掛呼出窗口"了
是不是已經有那么點"外掛"的樣子了
當我做到這一步的時候,當時非常

興奮!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

廣大菜鳥們是不是有同感?
讓高手們見笑了:)

但是,多試幾次,發現還有不少問題
隨便哪個窗口中按F12鍵都能呼出,還會造成程序的崩潰
我用的是WIN2000如果是在WIN98中恐怕還會造成系統的崩潰吧?
這可不行啊:(
要讓他只在指定的程序窗口中呼出,每次都進神跡的游戲客戶端試驗很麻煩
我們就在記事本中試驗,讓他只能在記事本中呼出,最好還要能像真正的外掛那樣
對掛入的程序做點手腳,
說做就做,開工!!!

繼續對鉤子回調函數進行改造
如下:
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
//按F12彈起時呼出外掛
BOOL bKeyUp = lParam & (1 << 31);
if (bKeyUp && wParam == VK_F12 && nCode == HC_ACTION) {
if (pCWndWGMain == NULL)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CWnd *pCWnd = CWnd::GetForegroundWindow();
//當前窗口是否為記事本窗口
char buf[MAX_PATH];
::GetClassName(pCWnd->GetSafeHwnd(), buf, MAX_PATH);
if (lstrcmpi(buf, "notepad") == 0) {
pCWndWGMain = new CS3DHookDlg();
//創建"外掛呼出窗口"時把記事本窗口作為他的父窗口
pCWndWGMain->Create(IDD_S3DHOOK_DIALOG, pCWnd);
pCWndWGMain->ShowWindow(SW_SHOW);
}
}
else
{
//根據當前呼出窗口的狀態來顯示或隱藏呼出窗口
pCWndWGMain->ShowWindow(pCWndWGMain->IsWindowVisible() ? SW_HIDE : SW_SHOW);
}
}
return ::CallNextHookEx(g_hhook, nCode, wParam ,lParam);
}

重新編譯并運行,我們的"外掛呼出窗口"可以多個記事本中呼出
如圖,并還沒有發現會造成程序崩潰,有發現的,請告訴我!后面會附上

這里是重新編譯的Main.exe和s3dhook.dll
哈哈,解決了一個小問題,爽!!!!!!!!!!!!!
下面讓我們的外掛對記事本做點小動作吧!
做點什么呢?
就讓他在記事本的窗口中畫個圓,怎么樣?
來試試看了
為CS3DHookDlg添加WM_INITDIALOG的消息處理器
并在其中添加一個定時器,同時窗口關閉時要銷毀定時器
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
設置
BOOL CS3DHookDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
SetTimer(1000,100,0);
return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~銷毀,先要添加WM_CLOSE消息的處理器
void CS3DHookDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
KillTimer(1000);
CDialog::OnClose();
}
響應CS3DHookDlg的WM_TIMER消息
代碼如下:
void CS3DHookDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
//得到父窗口也就是記事本的指針
CWnd *pCWnd = GetParent();
//得到記事本的窗口設備上下文指針
CDC *pDC = pCWnd->GetWindowDC();
//畫圓
pDC->Ellipse(100,100,200,200);
CDialog::OnTimer(nIDEvent);
}
在記事本中的實驗非常成功,爽!!!!!!!!
下面讓我們的程序只在神跡中呼出
主要是需要改造鍵盤鉤子回調程序
只需要把
lstrcmpi(buf, "notepad")
改為
lstrcmpi(buf, "SG Engine")
就可以了
"SG Engine"是神跡客戶端的窗口的類名
重新編譯運行,即可在神跡中呼出了,并且也在其中的窗口上畫了個圓,
但是畫面在閃爍,具體解決方法還沒有找到
估計是因為:游戲使用DirectX作圖,而我們這里是用GDI作圖
先不管它了,留在以后再解決了
暫時我們還不需要在游戲里作圖
,把我們程序中剛才有關作圖的部分都刪除掉,
1.OnInitDialog中的
2.OnClose中的
3.OnTimer刪掉
利用madCHook進行API掛接:如:WSASend,WSARecv等
去這下載
http://www.madshi.net/
安裝剛才下載的madCollection.exe,安裝后注意到在
C:\Program Files\madCollection\madCodeHook\Dll
中有3個文件需要引入到我們的S3DHook.dll工程中去
如下:
madCHook - dynamic.h
madCHook - dynamic - microsoft.lib
madCHook.dll
為了便于使用,把他們的名字改一下,改為:
madCHook.h
madCHook.lib
madCHook.dll
把.h和.lib放到S3DHook工程所在的文件夾中
在S3DHook.cpp中包含madCHook.h頭文件,加入
#include "madCHook.h"
在Project->Settings->Link->Object/library modules中
加入madCHook.lib
下面就可以在我們的DLL中使用madCHook對API進行掛接了
注意:編譯后要把Main.exe,S3DHook.dll和madCHook.dll放在一起才能運行
下面,正式開始加入代碼對WSASend進行掛接
首先在S3DHook.cpp中加入
#include "Winsock2.h"
然后加入對原始API函數的指針及自定義API HOOK函數的原形的聲明:
int (WINAPI *oWSASend)(
SOCKET,
LPWSABUF,
DWORD,
LPDWORD,
DWORD,
LPWSAOVERLAPPED,
LPWSAOVERLAPPED_COMPLETION_ROUTINE
);
int cWSASend(
SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesSent,
DWORD dwFlags,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
這個一定要和原始的API函數WSASend的形參一致才行,可以參看MSDN
為了把截獲的數據顯示出來,用資源編輯器在S3DHook中的外掛呼出窗口中加入一個ListBox,將其ID改為IDC_LIST_SEND,將其SORT屬性去掉,
然后加入自定義API鉤子的實現
int cWSASend(SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount,
LPDWORD lpNumberOfBytesSent, DWORD dwFlags,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
char buf[1024];
lstrcpyn(buf,lpBuffers->buf,lpBuffers->len);
CListBox *pListBox = (CListBox *)pCWndWGMain->GetDlgItem(IDC_LIST_SEND);
pListBox->AddString(buf);
                //API鉤子返回之前,對原始的API進行調用,
return oWSASend(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags, lpOverlapped, lpCompletionRoutine);
}
非常感謝!行舟的支持,
其實在(一)中我就說過,其實我也是個菜鳥
去年的這個時候在玩傳奇2的私服時,當時那個私服用了"樂都"的客戶端,現成的外掛一般都用不了,于是到處找外掛,無意中看到了個WS2_32.DLL的外包的源代碼(C++寫的),還有相關的一些文章,剛好又懂點VC,于是就利用這個改了下,在發送數據是做了點手腳,實現了如雙倍魔法,攻擊,通買,通賣,刷錢等等通過修改封包就可以實現的功能自己寫的外掛,自己用,別人沒有,自己有,那怎一個爽字了得啊:)哈哈,由于菜的原因,那個外包是WIN32的DLL,里面全部都用WIN32 API編寫,麻煩,基本的對話框,控件都不知道怎么用WIN32 API去控制,弄了很久終于在里面弄了對話框可以顯示出來,但是也很是興奮了一段時間
今年玩神跡的時候,也是在找外掛的時候,無意中發現了無影的神跡外掛源代碼同時發現了我們這個GAMERES論壇,為了看看怎么弄的,半夜下載了個DELPHI 7.0裝上,發現原來他利用的madCHook的組件,這個組件在DELPHI里用很方便,可是我不會pascal更不會DELPHI,于是又用了幾天才弄明白怎么在VC中用這個madCHook.在近一個月的時間里經過多次的試驗,終于大致上(有些東西還不是很清楚)知道了怎么注入在游戲進程,怎么編MFC Regular dll(可以在里面使用MFC了,比純WIN32的DLL方便多了),怎么在里面使用對話框等資源,再加上madCHook怎么掛接API,
終于自己編的東西,也勉勉強強有那么點"像"個外掛了

于是心中充滿了喜悅:)!!!!!!!!!!!!!!!!

決定把從頭把所有的東西都放到一起來,重新做了一次(以前那些都是分開試驗的),也萌生了把它貼出來讓大家一起分享我的喜悅:),
自己一邊寫程序,一邊帖帖子,
于是就有了現在的這個帖子
<菜鳥的VC6神跡外掛的DIY之路>

現在回到我們的程序中來,
下面我們利用madCHook安裝WSASend這個API的鉤子
成功后,游戲每次調用WSASend這個API的時候,都會去先執行我們寫的
cWSASend,在這里,我們就可以截取到游戲發往服務器的數據封包,然后用游戲調用到cWSASend時使用的參數去調用我們剛才寫的指向原始WSASend的函數指針oWSASend去調用原始的API將數據發到服務器,這樣才能保證游戲能繼續正常運行,否則游戲很有可能會掉線

在CS3DHookDlg::OnInitDialog() 加入這一句來安裝API鉤子
HookAPI("Ws2_32.dll", "WSASend", cWSASend, (PVOID *) &oWSASend);
參數說明:
1.要掛接的API所在的DLL
2.要掛接的API
3.自定義的函數,用來替換要掛接的API:cWSASend//游戲每次調用Ws2_32.dll中的WSASend,就會先進入我們自定義的cWSASend
4.指向原始API函數WSASend的指針//自定義的cWSASend截取封包并進行必要處理后,通過這個指針去調用原始的WSASend@Ws2_32.dll,以保證游戲的正常運行
BOOL CS3DHookDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
HookAPI("Ws2_32.dll", "WSASend", cWSASend, (PVOID *) &oWSASend);
return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}

編譯之后,把Main.exe S3DHook.dll madCHook.dll放在一起,看看效果
運行Main.exe,啟動進入神跡,按F12呼出
令人激動的時刻啊!看到沒有?截獲的數據封包已經在ListBox控件中顯示出來了!!!

其實這才是剛剛開始,要想有強大的功能,后面還要做許多工作
另外,創建“外掛呼出窗口”時,要注意為它選好父窗口,不同的游戲不一樣,
記得傳奇2中把
游戲界面的那個窗口
作為“外掛呼出窗口”就不行,
要選他的父窗口才行,具體情況要自己用SPY++多看看

posted on 2007-07-20 17:05 聶文龍 閱讀(2686) 評論(2)  編輯 收藏 引用 所屬分類: c++

FeedBack:
# re: 菜鳥的VC6神跡外掛的DIY之路 2008-04-22 14:15 roxland
HHOOK g_hhook;

這一句為什么無法編譯  回復  更多評論
  
# re: 菜鳥的VC6神跡外掛的DIY之路 2008-10-18 12:07 zzc
完整版,就是缺少圖  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              韩国三级在线一区| 欧美国产三区| 亚洲第一页在线| 美女精品一区| 久久久999精品免费| 欧美一级成年大片在线观看| 久久久久久久尹人综合网亚洲| 中文国产一区| 一本一本a久久| 欧美激情精品久久久久久免费印度 | 欧美伦理a级免费电影| 亚洲午夜视频在线| 欧美日韩一区二| 日韩一区二区精品| 99精品欧美| 亚洲日本成人在线观看| 久久久精品日韩| 亚洲性xxxx| 亚洲欧美在线一区| avtt综合网| 在线亚洲欧美视频| 99精品欧美一区二区三区| 午夜精品视频网站| 精品88久久久久88久久久| 欧美三级午夜理伦三级中文幕 | 久久美女性网| 久久亚洲美女| 欧美精品一区二区三区久久久竹菊 | 免费成人av在线| 日韩一二在线观看| 亚洲一区二区视频| 欧美高清在线视频| 国产精品视频yy9099| 在线免费观看欧美| 亚洲免费视频观看| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久精品国产欧美亚洲人人爽| 欧美电影在线观看| 国产欧美一区二区三区在线看蜜臀 | 亚洲一区二区视频| 久久中文字幕一区| 国产精品久久久91| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品99久久不卡二区| 久久亚洲精品网站| 亚洲私人影吧| 欧美日韩裸体免费视频| 精品av久久707| 欧美亚洲三级| 一区二区三区欧美| 欧美大学生性色视频| 黄色成人av在线| 久久超碰97中文字幕| 99精品福利视频| 欧美精品一区二区三| 亚洲国产一区二区精品专区| 久久久久久一区二区| 午夜视频在线观看一区二区| 国产精品国产一区二区| 99精品视频免费观看| 欧美福利网址| 蜜桃av噜噜一区| 久久国产视频网| 影音先锋在线一区| 欧美在线观看视频在线| 欧美日韩综合精品| 99视频一区二区| 亚洲毛片在线| 久久国产欧美精品| 亚洲一区中文| 国产视频一区在线观看一区免费| 亚洲一区二区在线视频| 日韩亚洲视频在线| 国产精品女主播| 欧美一区二区精品在线| 香蕉久久一区二区不卡无毒影院| 国产精品视频网站| 久久av二区| 久久久久久久网| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产精品一区二区视频| 久久国产精品黑丝| 久久精品视频免费| 亚洲国内精品| 日韩亚洲一区二区| 国产色爱av资源综合区| 久久久久国产精品一区| 久久精品午夜| 亚洲精品一区二区在线观看| 亚洲人成网站在线观看播放| 久久综合狠狠综合久久激情| 亚洲精品中文字幕有码专区| 中国女人久久久| 黄网动漫久久久| 亚洲精品综合久久中文字幕| 国产酒店精品激情| 亚洲成在线观看| 国产精品香蕉在线观看| 久久精品国产精品| 欧美国产日韩亚洲一区| 新67194成人永久网站| 久久精品一区二区三区中文字幕| 亚洲精品欧美日韩| 性欧美暴力猛交另类hd| 亚洲美女诱惑| 久久se精品一区精品二区| 亚洲精品欧美在线| 香蕉乱码成人久久天堂爱免费| 亚洲精品久久| 久久xxxx精品视频| 日韩亚洲欧美一区二区三区| 亚洲一区二区伦理| 亚洲三级色网| 欧美在线观看视频在线| 久久综合狠狠综合久久综合88| 欧美国产成人精品| 久久精品视频一| 欧美日本不卡视频| 免费久久99精品国产自| 欧美视频四区| 亚洲二区三区四区| 国产日韩欧美高清| 正在播放欧美视频| 亚洲精品国产精品乱码不99| 午夜免费电影一区在线观看| 在线一区二区三区四区五区| 久久久噜噜噜久噜久久| 欧美亚洲视频| 国产精品综合久久久| 一本不卡影院| 国产精品99久久久久久白浆小说| 欧美成人精品不卡视频在线观看| 久久精品综合一区| 国产欧美1区2区3区| 夜夜嗨av色综合久久久综合网| 影音先锋日韩有码| 欧美一级二区| 久久精品99国产精品日本| 国产精品美女www爽爽爽| 99www免费人成精品| 亚洲国语精品自产拍在线观看| 午夜精品免费视频| 国产精品高潮呻吟久久| 妖精视频成人观看www| 亚洲美女在线观看| 欧美精品色一区二区三区| 亚洲精品国产精品国产自| 亚洲人成亚洲人成在线观看| 免费亚洲一区| 亚洲精品在线一区二区| 亚洲在线视频| 国产日韩高清一区二区三区在线| 亚洲综合精品四区| 久久久精品欧美丰满| 伊人夜夜躁av伊人久久| 香蕉成人久久| 精品不卡一区| 欧美久久久久久久久久| 一区二区三区精品| 午夜欧美精品久久久久久久| 国产精品一区二区在线观看网站 | 中文无字幕一区二区三区| 欧美日韩一区二区三区在线看 | 欧美日韩综合在线| 中文精品视频一区二区在线观看| 亚洲免费在线观看| 国产在线播精品第三| 亚洲人永久免费| 亚洲专区一区| 国产一区二区日韩精品欧美精品| 久久精品伊人| 久久综合电影| 一本色道久久综合亚洲精品高清 | 伊人成人在线| 男女激情视频一区| 一本色道久久综合亚洲精品婷婷 | 久久精品国产免费观看| 激情五月婷婷综合| 欧美喷水视频| 欧美激情免费观看| 亚洲国产精品久久| 国产精品另类一区| 亚洲一区久久久| 一本色道久久88精品综合| 国产日韩欧美精品一区| 欧美jizz19hd性欧美| 一区二区三区高清在线观看| 老司机67194精品线观看| 中文日韩在线视频| 亚洲国产日韩在线| 国产欧亚日韩视频| 欧美日韩国产在线播放网站| 久久成人av少妇免费| 制服丝袜激情欧洲亚洲| 亚洲人成人一区二区三区| 久久综合网hezyo| 香蕉乱码成人久久天堂爱免费| 亚洲精品在线免费| 在线不卡欧美| 国产一区三区三区|