精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

網絡安全編程:DLL編程

安全
本文通過一個簡單的DLL程序來初步了解DLL程序的編寫。一起來看看吧。

 [[384908]]

DLL(Dynamic Link Library,動態連接庫)是一個可以被其他應用程序調用的程序模塊,其中封裝了可以被調用的資源或函數。動態連接庫的擴展名一般是DLL,不過有時也可能是其他的擴展名。DLL文件屬于可執行文件,它符合Windows系統的PE文件格式,不過它是依附于EXE文件創建的進程來執行的,不能單獨運行。一個DLL文件可以被多個進程所裝載調用。

Windows操作系統下有非常多的DLL文件,有的是操作系統的DLL文件,有的是應用程序的DLL文件。使用DLL文件有什么好處呢?DLL是動態連接庫,相對應地,有靜態連接庫。動態連接庫是在EXE文件運行時被加載執行的,而靜態連接庫是OBJ文件進行連接時同時被保存到程序中的。動態連接庫可以減少可執行文件的體積,在需要的時候進入內存;將軟件劃分為多個模塊,可以按照模塊進行開發,對于發布與升級也非常方便。在某些情況下,必須使用DLL才能完成一些工作內容。

本文通過一個簡單的DLL程序來初步了解DLL程序的編寫。

1. 編寫簡單的DLL程序

首先從一個簡單的DLL程序開始,并在DLL程序中添加一個導出函數。所謂導出函數,就是DLL提供給外部EXE或其他類型的可執行文件調用的函數。當然,DLL本身也可以自身進行調用。

DLL程序的入口函數不是main()函數,也不是WinMain()函數,而是DllMain()函數,該函數的定義如下: 

  1. BOOL WINAPI DllMain(  
  2.  HINSTANCE hinstDLL, // handle to the DLL module  
  3.  DWORD fdwReason, // reason for calling function  
  4.  LPVOID lpvReserved // reserved  
  5. ); 

參數說明如下。

hinstDLL:該參數是當前 DLL 模塊的句柄,即本動態連接庫模塊的實例句柄。

fdwReason:該參數表示 DllMain()函數被調用的原因。

該參數的取值有4種,也就是說存在4種調用DllMain()函數的情況,這4個值分別是DLL_PROCESS_ATTACH(當DLL被某進程加載時,DllMain()函數被調用)、DLL_PRO CESS_DETACH(當DLL被某進程卸載時,DllMain()函數被調用)、DLL_THREAD_ATTACH(當進程中有線程被創建時,DllMain()函數被調用)和DLL_THREAD_DETACH(當進程中有線程結束時,DllMain()函數被調用)。

lpvReserved:保留參數,即不被程序員使用的參數。

啟動VC6集成開發環境,創建一個DLL工程。創建一個“A simple DLL Project”類型的工程,VC生成代碼如下: 

  1. BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)  
  2.  
  3.   return TRUE;  

在生成的代碼中,函數定義處有一個APIENTRY的函數修飾符。該修飾符為一個宏,其定義如下:

  1. #define APIENTRY WINAPI 

由于DllMain()函數不止一次地被調用,根據調用的情況不同,需要執行不同的代碼,比如當進程加載該DLL文件時,可能在DLL中要申請一些資源;而在卸載該DLL時,則需要將先前自身所申請的資源進行釋放。出于種種原因,在編寫DLL程序時,需要把DllMain()函數的結構寫成如下形式: 

  1. BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)  
  2.  
  3.   switch ( ul_reason_for_call )  
  4.   {  
  5.   case DLL_PROCESS_ATTACH:  
  6.     {  
  7.       break;  
  8.     }  
  9.   case DLL_PROCESS_DETACH:  
  10.     {  
  11.       break;  
  12.     }  
  13.   case DLL_THREAD_ATTACH:  
  14.     {  
  15.       break;  
  16.     }  
  17.   case DLL_THREAD_DETACH:  
  18.     {  
  19.       break; 
  20.     }  
  21.   }  
  22.   return TRUE;  

這是一個switch/case結構,這樣寫可以達到根據不同的調用原因執行不同的代碼。

2. 給DLL添加一個簡單的導出函數

上面的代碼只是一個簡單的DLL程序的開始,并沒有實際的意義。對于DLL文件來說,DllMain()并不是必需的。按照DLL文件的本質作用是為其他的可執行文件提供使用,那么DLL程序中需要編寫能夠提供其他程序使用的函數,這些公開提供給其他程序使用的函數被稱為導出函數。在上面代碼的基礎上添加一個導出函數,定義如下: 

  1. extern "C" __declspec(dllexport) VOID MsgBox(char *szMsg); 

extern "C"表示該函數以 C 方式導出。由于源代碼是.CPP 文件,因此,如果按照 C++的方式導出的話,那么在編譯后函數名會被名字粉碎,導致在動態調用該函數時就會極為不方便。__declspec(dllexport)的作用是聲明一個導出函數,將該函數從本 DLL 中開放提供給其他模塊使用。

MsgBox()函數的實現如下: 

  1. VOID MsgBox(char *szMsg)  
  2.  
  3.   char szModuleName[MAX_PATH] = { 0 };  
  4.   GetModuleFileName(NULL, szModuleName, MAX_PATH);  
  5.   MessageBox(NULL, szMsg, szModuleName, MB_OK);  

該函數在被調用時會在MessageBox窗口的標題欄處顯示其所在進程的進程名。

這樣,第一個DLL文件的編寫就完成了。編譯連接該代碼,查看編譯和連接的輸出情況會發現VC共生成了2個文件,分別是“FirstDll.dll”和“FirstDll.lib”,前者是供其他可執行程序使用的DLL文件,其中包含了程序員編寫的代碼、導出函數,而后者是一個庫文件,其中包含一些導出函數的相關信息,供調用DLL文件中導出函數函數的程序員編譯時使用。

導出DLL中的函數有兩種方法,這是其中的一種。另外一種方式是建立一個.DEF的文件來定義導出哪些函數。函數除了可以通過函數名導出外,還可以通過序號進行導出。建立.DEF文件可以較為方便地管理DLL項目中的導出函數(總比在代碼中逐個找__declspec(dllexport)要方便很多)。由于這里的代碼比較短小,因此使用了__declspec(dllexport)這種定義方法。

3. 對DLL程序的調用方法一

DLL程序是無法單獨運行的,它需要通過編寫一個EXE程序(當然也可以在另外的DLL程序中調用)來調用這個DLL文件中的導出函數。在VC集成開發環境中添加一個測試項目,在工作區的“Workspace ‘FirstDll’:1 project(s)”上單擊右鍵,在彈出的菜單中選擇“Add New Project to Workspace”,如圖1所示。

圖1  添加對DLL進行測試的項目

添加一個控制臺的項目,然后編寫對DLL進行調用的測試代碼,具體如下: 

  1. #include <windows.h>  
  2. #pragma comment (lib, "FirstDll")  
  3. extern "C" VOID MsgBox(char *szMsg);  
  4. int main(int argc, char* argv[])  
  5.  
  6.   MsgBox("Hello First Dll !");  
  7.   return 0; 

#pragma comment (lib, "FirstDll")告訴連接器需要在FirstDll.lib文件中找到DLL中導出函數的信息。

對以上代碼進行編譯連接,VC會產生一個連接錯誤,如圖2所示。

圖2  連接出錯信息

這個錯誤是因為連接器找不到“FirstDll.lib”文件。將“FirstDll.lib”復制到測試項目的目錄下,然后添加到測試工程中,再次進行編譯連接就成功了。運行編寫好的測試程序,會彈出一個錯誤對話框,如圖3所示。

圖3  運行測試程序時的錯誤信息

根據錯誤提示可以看出是缺少要測試的DLL文件,也就是“FirstDll.dll”文件。將其復制到與可執行文件相同的目錄下,然后再次運行,程序可以順利地被執行。

一般在發布DLL文件時,需要將DLL文件、Lib文件和.h文件同時發布,當然有一個說明文檔或手冊會顯得更加專業。

4. 對DLL程序的調用方法二

前一種方法屬于靜態調用,其方式是通過連接器將DLL函數的導出函數寫進可執行文件。現在使用第二種方法來調用DLL中的函數,這種方法相對于前一種方法是動態調用。動態調用不是在連接時完成的,而是在運行時完成的。動態調用不會在可執行文件中寫入DLL的相關信息。現在來寫一個關于動態調用的測試程序,該程序的創建方法與靜態調用的方法相同,這里不再復述。

動態調用DLL函數的代碼如下: 

  1. #include <windows.h>  
  2. typedef VOID (*PFUNMSG)(char *);  
  3. int main(int argc, char* argv[])  
  4.  
  5.   HMODULE hModule = LoadLibrary("FirstDll.dll");  
  6.   if ( hModule == NULL )  
  7.   {  
  8.     MessageBox(NULL, "FirstDll.dll 文件不存在","DLL 文件加載失敗", MB_OK);  
  9.     return -1;  
  10.   }  
  11.   PFUNMSG pFunMsg = (PFUNMSG)GetProcAddress(hModule, "MsgBox");  
  12.   pFunMsg("Hello First Dll !");  
  13.   return 0;  

對代碼進行編譯連接都正常通過。但是請注意,這個程序中并沒有用到#pragma comment()指令,也沒有通過lib在程序中留下相關的導入信息。運行編譯連接好的程序,程序會給出提示“FirstDll.dll文件不存在”。按照前面的方法,將FirstDll.dll文件復制到與測試程序相同的目錄下,運行測試程序,程序執行成功。

DLL的動態加載調用是非常有用的。在第一個測試程序中,如果測試系統的裝載器無法找到DLL文件,那么系統會直接報錯而退出。而在第二個測試程序中,如果測試程序無法找到DLL文件,則由程序給出一個錯誤的提示,同時程序其實可以繼續往下執行,而不會影響其他代碼的運行(當然,由于DLL無法加載可能會損失部分的功能)。明白了動態加載調用和靜態加載調用的區別,那么它們的優缺點就很清楚了。靜態加載調用使用方便,而動態加載調用靈活性較好。

在有些情況下,必須使用動態加載調用的方法來使用DLL中的導出函數。比如函數OpenThread(),該函數在VC6自帶的PSDK中沒有提供LIB文件和函數原型定義,沒有LIB文件就無法連接成功(在新版的PSDK中有該函數對應的LIB文件)。在這種情況下,只能使用LoadLibrary()和GetProcAddress()這兩個函數來動態加載調用OpenThread()函數(其實有很多情況下,在使用DLL文件中的導出函數時是找不到對應的LIB文件的,比如ntdll.dll中的很多函數雖然有導出,但是系統沒有提供與其對應的LIB文件)。

現在了解一下LoadLibrary()函數和GetProcAddress()函數的定義。LoadLibrary()函數的定義如下: 

  1. HMODULE LoadLibrary( LPCTSTR lpFileName);  

該函數只有一個參數,即要加載的DLL文件的文件名。該函數調用成功,則返回一個模塊句柄。

GetProcAddress()函數的定義如下: 

  1. FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName);  

該函數有兩個參數,分別如下。

hModule:該參數是模塊句柄,通常通過 LoadLibrary()函數或 GetModuleHandle()函數獲得;

lpProcName:該參數指定要獲得函數地址的函數名稱。

該函數調用成功,則返回lpProcName指向的函數名的函數地址。

5. 查看DLL程序導出函數的工具介紹

前面介紹DLL編程時提到了導出函數,這里介紹兩款查看DLL程序的導出函數的工具。其中一款是VC自帶的工具“Depends”,另一款工具是一個功能更加強大的可以用來查看PE結構和識別加殼信息的工具“PEID”。

首先用“Depends”來查看DLL的導出函數,該工具可以在VC6的安裝菜單下找到,具體位置為“開始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual Studio 6.0 Tools”→“Depends”。打開該程序,依次單擊菜單項“File”→“Open”,在“打開”對話框中找到所寫的FirstDll.dll文件,選中并打開(也可以直接進行拖曳),其工作窗口中顯示了FirstDll.dll的信息,如圖4所示。

圖4  Depends顯示界面

在圖4的右下角區域范圍顯示的是該DLL文件導出的函數。從圖4中可以看出,FirstDll.dll文件只導出一個MsgBox函數。

對于Depends的介紹就這么多,現在來看另外一個工具“PEID”。該工具是用來識別軟件“指紋”信息(開發環境、版本、加殼信息等)的。將FirstDll.dll文件拖曳到PEID界面上,PEID會自動解析出該DLL文件的PE結構信息,界面如圖5所示。

圖5  PEID顯示界面

從圖5可以看出,PEID最下方的只讀編輯框中顯示了FirstDll.dll文件是由VC6開發的,并且版本是Debug版本。單擊“子系統”右邊的“大于號”按鈕,會顯示PE結構的詳細信息,如圖6所示。

圖6  PE結構詳情

在圖6中的PE結構詳細信息的下半部分有個“目錄信息”,其中的第一個目錄信息就是導出表信息,單擊“導出表”最右側的“大于號”按鈕,出現“導出查看器”界面,如圖7所示。

圖7  導出查看器

從圖7中可以看出,FirstDll.dll文件只有一個導出函數MsgBox(),只存在一個導出項。導出函數的信息與Depends相同。 

 

責任編輯:龐桂玉 來源: 計算機與網絡安全
相關推薦

2021-01-26 13:45:03

網絡安全Winsock編程

2021-03-05 13:46:56

網絡安全遠程線程

2021-02-21 18:19:43

網絡安全網絡安全編程創建進程

2021-02-23 10:20:07

網絡安全進程代碼

2016-10-10 00:18:27

2021-03-01 11:20:13

網絡安全多線程代碼

2021-06-18 09:55:09

網絡安全目錄監控

2021-04-30 18:50:44

網絡安全PE編程添加節區

2021-04-26 10:32:38

網絡安全PE編程工具

2021-01-18 10:35:18

網絡安全Windows代碼

2021-05-12 14:57:13

網絡安全密碼代碼

2021-02-04 10:50:11

網絡安全非阻塞模Winsock編程

2021-06-24 08:37:34

網絡安全內核代碼

2021-06-15 11:16:24

網絡安全U盤軟件

2021-04-19 10:26:41

網絡安全PE文件

2021-05-24 11:55:55

網絡安全Windows鉤子函數

2021-04-25 21:25:09

網絡安全網絡安全編程PE編程

2021-04-28 14:35:48

網絡安全PE編程代碼

2021-03-01 11:38:15

網絡安全進程代碼

2021-05-06 16:35:12

網絡安全網絡安全編程文件補丁
點贊
收藏

51CTO技術棧公眾號

午夜在线视频免费| 日本熟女一区二区| 久久久精品区| 五月天一区二区三区| 欧美另类一区| 国产视频第二页| 免费日韩视频| 免费91麻豆精品国产自产在线观看 | 日本在线天堂| 波多野结衣中文一区| 国产精品吊钟奶在线| 欧美成人aaa片一区国产精品| 欧美人体视频| 欧美一区二区三区免费在线看 | 日韩成人高清在线| а 天堂 在线| 蜜桃视频成人m3u8| 香蕉久久一区二区不卡无毒影院| 婷婷久久伊人| 婷婷av一区二区三区| 狠狠色丁香婷综合久久| 青青草成人在线| 精品午夜福利视频| 忘忧草精品久久久久久久高清| 国产丝袜高跟一区| 人妻 日韩 欧美 综合 制服| 成人51免费| 欧美三级日韩三级| 丁香啪啪综合成人亚洲| 成人爽a毛片免费啪啪动漫| 国产欧美一区二区三区鸳鸯浴 | 欧美手机在线| 亚洲美女精品成人在线视频| 亚洲熟女一区二区三区| 国产精品亚洲四区在线观看| 欧美色倩网站大全免费| 青青草原av在线播放| segui88久久综合9999| 亚洲三级免费电影| 欧美性色黄大片人与善| 天堂中文在线8| www.亚洲色图.com| 国产伦精品一区二区| www.亚洲欧美| 国产福利精品一区| 91精品免费| 国产不卡精品视频| 国产精品1区二区.| 99视频在线免费观看| 国产三区在线播放| 福利一区在线观看| 国产精品国产三级国产专区53| 国产www免费观看| 国产福利一区二区三区| http;//www.99re视频| www.亚洲黄色| av成人免费在线| 另类欧美小说| 波多野结衣在线网站| 国产欧美1区2区3区| 亚洲精品无人区| 中文字幕日本在线| 亚洲欧美日韩在线| www.亚洲视频.com| 美女网站在线看| 色哦色哦哦色天天综合| 91小视频网站| 国产亚洲高清一区| 日韩欧美国产小视频| 精品无码人妻少妇久久久久久| 成人爽a毛片免费啪啪红桃视频| 亚洲第一免费网站| 欧美 日韩 国产 成人 在线观看| 国产欧美日韩精品一区二区免费 | 手机电影在线观看| 五月综合激情网| www.四虎成人| 偷拍自拍亚洲| 精品sm捆绑视频| 强伦人妻一区二区三区| 天天av综合| 久久久视频在线| 国产精品免费无遮挡无码永久视频| 免费精品视频最新在线| 91精品免费| 韩国福利在线| 亚洲影院理伦片| 日韩无套无码精品| 亚洲91网站| 亚洲美女在线观看| 欧美丰满熟妇bbbbbb| 国产欧美日本| 亚洲自拍高清视频网站| 天堂网www中文在线| 亚洲欧洲精品天堂一级| 大陆极品少妇内射aaaaa| 成人做爰视频www| 精品国产亚洲一区二区三区在线观看| 人妻体内射精一区二区| 亚洲精品成人影院| 欧美中文在线观看国产| 国产精品视频无码| 久久精品欧美日韩| 国产乱子伦精品无码专区| 日韩毛片一区| 亚洲精品按摩视频| 一级黄色片日本| 免费日韩av| 国产一区二区免费在线观看| 在线免费观看的av网站| 精品久久久久久久久久国产| 色网站在线视频| 免费欧美激情| 91精品国产高清久久久久久| 99久久精品日本一区二区免费 | 亚洲成人国产精品| 51精品免费网站| 老司机免费视频久久| 国产午夜精品在线| 一色桃子av在线| 欧美日韩黄色一区二区| 国产精品无码一区二区三区| 亚洲视频精品| 91免费电影网站| eeuss影院在线播放| 午夜精品福利久久久| 色婷婷综合在线观看| 日韩精品dvd| 日韩美女写真福利在线观看| 天天综合网在线观看| 亚洲一区二区三区四区五区黄| 日韩 国产 一区| 色琪琪久久se色| 国产精品夜间视频香蕉| 黄色美女网站在线观看| 欧美日韩亚洲成人| 免费a v网站| 亚洲国产日韩欧美一区二区三区| av日韩免费电影| 天堂va在线| 日韩免费视频一区二区| 久久高清内射无套| 国产精品综合二区| 国产亚洲精品久久久久久久| 99综合99| 欧美大片在线看| 国产刺激高潮av| 婷婷六月综合亚洲| 亚洲av无码成人精品国产| 亚洲一区二区伦理| 欧美日韩国产精品一区二区| 久久91导航| 在线播放日韩欧美| 国产精品美女一区| 亚洲欧美一区二区久久 | 91原创在线视频| 国产免费黄色av| 四虎884aa成人精品最新| 97香蕉久久超级碰碰高清版| 水中色av综合| 色狠狠桃花综合| eeuss中文字幕| 加勒比av一区二区| 无码日本精品xxxxxxxxx| 精品av导航| 国产99在线|中文| 成年网站在线| 欧美一级日韩不卡播放免费| 久久97人妻无码一区二区三区| 国产·精品毛片| 成人在线免费在线观看| 成人直播大秀| 99视频免费观看蜜桃视频| 青青青免费在线视频| 亚洲最新视频在线| 91激情在线观看| 亚洲午夜激情av| 精品夜夜澡人妻无码av| 奇米888四色在线精品| 91免费视频黄| 欧美电影在线观看免费| 国产精品video| 97超碰资源站在线观看| 亚洲国产婷婷香蕉久久久久久 | 美女av在线免费看| 最近中文字幕日韩精品| 懂色av一区二区三区四区| 日韩欧美国产激情| 国产人妻精品一区二区三区不卡| 丁香天五香天堂综合| 黑鬼大战白妞高潮喷白浆| 五月开心六月丁香综合色啪 | 亚洲在线观看网站| 国产精品丝袜xxxxxxx| 欧美h视频在线观看| 欧美黄色网视频| 国产日韩欧美自拍| 99riav视频在线观看| 日韩中文字幕不卡视频| 天天综合网天天综合| 91精品国产综合久久久久久| 国产欧美一区二区三区在线看蜜臂| 国产精品卡一卡二| 在线观看日韩精品视频| 激情亚洲综合在线| 亚洲色精品三区二区一区| 亚洲欧美亚洲| 亚洲精品乱码视频| 蜜桃一区二区| 国产精品视频免费一区二区三区| 欧洲亚洲精品| 日韩美女视频免费看| zzzwww在线看片免费| 欧美男插女视频| 黄色动漫在线观看| 最新的欧美黄色| 青青草手机在线| 亚洲第五色综合网| 亚洲美女综合网| 欧美一区二区三区精品| 亚洲图片小说视频| 在线免费不卡电影| 一级成人黄色片| 午夜精品福利视频网站| 久久在线视频精品| 一区二区三区毛片| 亚洲国产精品久| 国产精品高潮呻吟| 91精品久久久久久久久久久久| 91一区二区在线观看| 欧美图片自拍偷拍| 高清成人免费视频| 精品伦一区二区三区| 国产精品一区久久久久| 韩国一区二区在线播放| 精品一区二区在线播放| 欧美成人福利在线观看| 日本美女一区二区| 青青草av网站| 日本欧美在线观看| 在线黄色免费看| 久草热8精品视频在线观看| 怡红院亚洲色图| 久久99久久99| 亚洲欧美日本一区二区| 国产一区二区三区在线观看免费视频 | 成人午夜视频免费看| 制服.丝袜.亚洲.中文.综合懂| 国产一区二区免费在线| 波多野结衣电影免费观看| 国产精品一区二区在线观看不卡| 宇都宫紫苑在线播放| 国产成人av一区二区| 日本黄色免费观看| 久久人人超碰精品| 日本污视频网站| 亚洲色图都市小说| 久久精品人妻一区二区三区| 亚洲va国产va欧美va观看| 亚洲 欧美 视频| 色综合久久久久久久| 伊人成年综合网| 日韩一级视频免费观看在线| 亚洲春色一区二区三区| 日韩电影第一页| 二区三区在线播放| 久久精品国产一区二区三区| a视频在线观看免费| 国产做受高潮69| 美女日韩欧美| 国产日韩欧美在线观看| 91成人在线精品视频| 久久综合毛片| 国产精品黑丝在线播放 | 污软件在线观看| 亚洲风情在线资源站| 日韩在线视频不卡| 在线电影一区二区三区| 男人天堂av网| 中文字幕亚洲一区| 亚洲精品白浆| 日韩av免费一区| 试看120秒一区二区三区| 久久久一本精品99久久精品| 久久人体视频| 日韩视频在线视频| 久久精品99国产精品| 国产伦精品一区二区免费| 国产拍揄自揄精品视频麻豆| 青青草国产在线观看| 91搞黄在线观看| 亚洲精品无码专区| 一区二区亚洲欧洲国产日韩| 中文字幕资源网在线观看| 欧美一区二区三区图| 警花av一区二区三区| 欧美日韩系列| 国产精品chinese| 99热这里只有精品在线播放| 丁香网亚洲国际| 天堂av免费在线| 色婷婷综合中文久久一本| 精品久久久久中文慕人妻| 一本色道久久88综合日韩精品| 国产三级伦理在线| 91久久综合亚洲鲁鲁五月天| 国产麻豆精品久久| 欧美色图色综合| 国产99久久久久| 日韩在线一卡二卡| 欧美在线视频全部完| 天天综合网在线| 欧美精品videosex极品1| 色综合.com| 香蕉久久夜色| 亚洲欧美日韩国产一区| 黄色av电影网站| 亚洲视频资源在线| 中文字幕+乱码+中文字幕明步| 亚洲精品一区中文字幕乱码| hd国产人妖ts另类视频| 亚洲va男人天堂| 澳门久久精品| 美女福利视频一区| 成人国产一区| 欧美一区2区三区4区公司二百| 欧美日本一区| 亚洲欧美手机在线| 国产精品蜜臀av| 国产九色91回来了| 亚洲色图第一页| 涩涩涩视频在线观看| 国产欧美一区二区在线播放| 欧美精品1区| 久久久久无码精品| 亚洲嫩草精品久久| 99在线观看免费| 久久成人人人人精品欧| 电影一区中文字幕| 国产精品无码乱伦| 久久99国产精品久久99| 男人av资源站| 91精品福利在线一区二区三区 | 日韩一中文字幕| 成人国产精品入口免费视频| 亚洲巨乳在线观看| 美腿丝袜亚洲色图| 99精品中文字幕| 欧美一区二区精品久久911| www.欧美日本韩国| av资源一区二区| 亚洲尤物精选| 国产伦精品一区二区三区视频女| 欧美中文字幕一区| 欧美激情午夜| 91在线观看网站| 99热这里只有成人精品国产| 美女又爽又黄视频毛茸茸| 欧美性猛交xxxx免费看久久久| 九色视频成人自拍| 国产免费亚洲高清| 亚洲一级黄色| www.色天使| 欧美日韩一区二区三区四区五区 | 国产videos久久| 57pao国产成永久免费视频| 一区二区三区精品视频| 午夜激情小视频| 国产精品wwww| 中文字幕免费精品| 亚洲综合自拍网| 在线精品视频免费播放| 国产在线高清视频| 国产在线精品一区二区中文| 久久狠狠一本精品综合网| 日本黄色片免费观看| 亚洲第一精品福利| 福利一区二区| 日日摸日日碰夜夜爽无码| 日本一区二区三区四区在线视频 | japanese在线播放| 久久久久久久久久看片| 国产伦理吴梦梦伦理| 国内精品在线一区| 欧美少妇xxxx| 国产黑丝在线观看| 欧美日韩第一区日日骚| 丰满大乳少妇在线观看网站| 日韩精品久久一区二区三区| 国产麻豆精品一区二区| 中文字幕免费高清网站| 色综合天天狠天天透天天伊人| 精品香蕉视频| 风韵丰满熟妇啪啪区老熟熟女| 在线亚洲+欧美+日本专区| 欧美性爽视频| 亚洲精品国产精品国自产观看| 不卡av在线网| 国产成人麻豆精品午夜在线| 青青久久av北条麻妃海外网|