久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

《Undocumented Windows 2000 Secrets》翻譯 --- 第五章(3)

瀏覽:133日期:2023-08-27 10:31:57

第五章 監(jiān)控 Native API 調(diào)用

翻譯: Kendiv( fcczj@263.net )

更新: Thursday, March 24, 2005

聲明:轉(zhuǎn)載請注明出處,并保證文章的完整性,本人保留譯文的所有權(quán)利。

本書設(shè)計的 hook 機制的最大特色就是它是完全數(shù)據(jù)驅(qū)動的( data-driven )。只需簡單的增加一個新的 API 符號表,該 hook dispatcher 就可適應(yīng) Windows 2000 的新版本。而且,通過向 apdSdtFormats[] 數(shù)組中加入新的 API 函數(shù)的格式化字符串就可在任何時候記錄對這些附加的 API 函數(shù)的調(diào)用。這并不需要編寫任何附加的代碼 ---API Spy 的動作可完全由一組字符串來確定!不過,在定義新的格式化字符串是必須要小心,因為 w2k_spy.sys 是運行于內(nèi)核模式的驅(qū)動程序。因為在這一系統(tǒng)層次上,系統(tǒng)不能溫和的處理發(fā)生錯誤。給 Win32 API 函數(shù)提供了一個無效的參數(shù)并不是問題 ----- 你會收到一個錯誤提示窗口,同時程序會被系統(tǒng)自動終止。在內(nèi)核模式下,一個微小的訪問違規(guī)都會引發(fā)系統(tǒng)藍屏。因此,一定要小心。在需要的地方如果沒有出現(xiàn)一個正確的格式化控制 ID 或缺失了這一 ID 都會使你的系統(tǒng)徹底崩潰。即使一個簡單的字符串有時都是致命的!

現(xiàn)在僅剩 SpyHookInitializeEx() 中的那一大塊 ASM 代碼還未討論,這段代碼由 SpyHook2 和 SpyHook9 標(biāo)識。這段代碼的一個有趣的特性是:在 SpyHookInitializeEx() 被調(diào)用的時候,它們從來都不會被執(zhí)行。在進入 SpyHookInitializeEx() 后,函數(shù)代碼將跳過這一整段代碼,然后在 SpyHook9 標(biāo)簽處開始恢復(fù)執(zhí)行,此處包含 aSpyHooks[] 數(shù)組的初始化代碼。這一大塊 ASM 代碼只有通過 aSpyHooks[] 數(shù)組中的 Handler 成員才能進入。稍候,我將展示這些進入點是如何連接到 SDT 的。

在設(shè)計這段 ASM 代碼時,我的重要目標(biāo)之一就是使其是完全非侵入式的。截獲操作系統(tǒng)調(diào)用非常危險,因為你從來不會知道被調(diào)用的代碼是否會依賴調(diào)用上下文( calling context )的某些未知特性。理論上來說,這些 ASM 代碼完全符合 __stdcall 約定,但仍存在出錯的可能性。我不得不選擇將原始的 Native API 處理例程放入幾乎完全相同的環(huán)境中,這意味著這些原始函數(shù)將使用最初的參數(shù)堆棧并且可以訪問所有的 CPU 寄存器,就像它們被正常調(diào)用一樣。當(dāng)然,必須接受由于插入 hook 所帶來的最低限度的危險,否則,監(jiān)控將不可能實現(xiàn)。在這里,有意義的改動就是維護堆棧中的返回地址。如果你翻回到 5-3 ,你會發(fā)現(xiàn)在進入函數(shù)時,調(diào)用者的返回地址并不位于堆棧的頂部。 SpyHookInitializeEx() 中的 hook dispatcher 占用了此地址,將它自己的 SpyHook6 標(biāo)簽的地址寫在了這里。因此,原始 Native API 處理例程將被打斷,然后進入 SpyHook6 中,這樣 hook dispatcher 才能檢查原始 Native API 處理例程的參數(shù)和它要返回的數(shù)據(jù)。

在調(diào)用原始處理例程之前, dispatcher 將建立一個 SPY_CALL (參見 列表 5-3 )控制塊,該控制塊中包含它稍候?qū)玫降膮?shù)。其中的一些參數(shù)在正確記錄 API 調(diào)用時會用到,另外一些則提供了有關(guān)調(diào)用者的信息,因此 dispatcher 可以在寫完 log 后,把控制返回給調(diào)用者,就像什么都沒有發(fā)生一樣。 Spy 設(shè)備在它的全局數(shù)據(jù)塊 DEVICE_CONTEXT 中維護著一個 SPY_CALL 結(jié)構(gòu)的數(shù)組,可通過全局變量 gpDeviceContext 來訪問。 Hook Dispatcher 通過檢查 SPY_CALL 結(jié)構(gòu)中的 InUse 成員來在數(shù)組中找到一個空的 SPY_CALL 。 Hook Dispatcher 使用 CPU 的 XCHG 指令來加載和設(shè)置該成員的值(譯注: XCHG 指令可以保證此操作為原子操作)。這一點非常重要,因為當(dāng)代碼運行于多線程環(huán)境中時,讀寫全局數(shù)據(jù)時必須采取保護措施以避免條件競爭。如果在數(shù)組中找到了一個空的 SPY_CALL , dispatcher 就會將調(diào)用者的線程 ID (通過 PsGetCurrentThreadId() 獲取)、與當(dāng)前 API 函數(shù)相關(guān)的 SPY_HOOK_ENTRY 結(jié)構(gòu)的地址以及整個參數(shù)堆棧保存到該 SPY_CALL 結(jié)構(gòu)中。需要復(fù)制的參數(shù)的字節(jié)數(shù)取自 KiArqumentTable 數(shù)組,該數(shù)組保存在系統(tǒng)的 SDT 中。如果所有的 SPY_CALL 都被使用了,原始的 API 函數(shù)處理例程將被調(diào)用而不會產(chǎn)生任何日志記錄。

必須采用 SPY_CALL 數(shù)組是因為 Windows 2000 的多線程本性。當(dāng) Native API 函數(shù)被暫停( suspended )時,這種情況就會經(jīng)常出現(xiàn) ---- 此時,另一個線程將獲得控制權(quán),然后在它自己的時間片( time slice )內(nèi)調(diào)用另一個 Native API 函數(shù)。這意味著 Spy 設(shè)備的 Hook Dispatcher 必須允許在任何時間和任何執(zhí)行點上的重進入( reenter )。如果 Hook Dispatcher 有單一的全局 SPY_CALL 存儲區(qū)域,它就可能在處于等待狀態(tài)的線程使用完之前被當(dāng)前運行的線程覆寫( overwritten )。而這種情況正是藍屏的最佳候選人。為了進一步了解 Native API 的嵌套,我在 Spy 的 DEVICE_CONTEXT 結(jié)構(gòu)中增加了 dLevel 和 dMisses 成員。無論何時只要重進入 hook dispatcher (如,向 SPY_CALL 數(shù)組中增加一個新的 SPY_CALL ) dLevel 都不會累加一個 1 。如果超過了最大嵌套層數(shù)(如, SPY_CALL 數(shù)組已滿), dMisses 就會累加一個 1 ,來標(biāo)識丟失了一個日志記錄。根據(jù)我的觀察,在實際環(huán)境下,可以很容易的發(fā)現(xiàn)嵌套層達到 4 。這表示即時在高負載( heavy-load )的情況下, Native API 也會被重進入,因此,我將嵌套層數(shù)的上限設(shè)為 256 。

在調(diào)用原始的 API 處理例程之前, Hook Dispatcher 會保存所有的 CPU 寄存器(包括 EFLAGS ),隨后執(zhí)行路徑將導(dǎo)向函數(shù)的進入點。這會在 列表 5-3 中的 SpyHook5 標(biāo)簽之前立即完成。此時, SpyHook6 將位于棧頂,僅隨其后的是調(diào)用者的參數(shù)。一旦 API 處理例程推出了,控制將被傳回到 hook dispatcher 的 SpyHook6 標(biāo)簽。從此處開始執(zhí)行的代碼也被設(shè)計為非入侵的。此時,主要目標(biāo)是允許調(diào)用者可以看到調(diào)用上下文,這和原始 API 函數(shù)建立的上下文幾乎完全一致。 Dispatcher 的主要問題是要能立即找到保存有當(dāng)前 API 調(diào)用信息的 SPY_CALL 結(jié)構(gòu)。唯一可以依賴的就是調(diào)用者的線程 ID ,該 ID 保存在 SPY_CALL 結(jié)構(gòu)的 hThread 成員中。因此, Dispatcher 循環(huán)遍歷整個 SPY_CALL 數(shù)組以尋找匹配的線程 ID 。注意,代碼不會關(guān)心 fmuse 標(biāo)志的值;這并不是必須的,因為數(shù)組中所有未使用的 SPY_CALL 結(jié)構(gòu)的 hThread 都被設(shè)為了 0 ,這是系統(tǒng)空閑線程的 ID 。循環(huán)會在到達數(shù)組結(jié)尾時終止。否則的話(譯注:即沒有找到匹配的線程 ID ), Dispatcher 不會將控制返回給調(diào)用者,因為這樣做將是致命的。在這種情況下,代碼的選擇余地很小,因此,它會進入 KeBugCheck() ,這樣做的結(jié)果當(dāng)然是使系統(tǒng)以受控的方式終止。不過這種情況應(yīng)該從來不會發(fā)生,但如果它發(fā)生了,那表示系統(tǒng)必然出現(xiàn)了很嚴重的錯誤,因此,使系統(tǒng)終止是最佳解決方案。

如果發(fā)現(xiàn)了匹配的 SPY_CALL , Hook Dispatcher 將結(jié)束它的工作。最后的動作是調(diào)用日志記錄函數(shù) SpyHookProtocol() ,需要給該函數(shù)傳入一個指向 SPY_CALL 結(jié)構(gòu)的指針。日志記錄所需的信息都保存在該結(jié)構(gòu)中。當(dāng) SpyHookProtocol() 返回后, Dispatcher 就釋放它剛才使用的 SPY_CALL ,恢復(fù)所有的 CPU 寄存器,然后返回到調(diào)用者。

API HOOK 協(xié)議

一個好的 API Spy 應(yīng)該可以在原始函數(shù)被調(diào)用后還能察看它使用的參數(shù),因為函數(shù)可能會通過傳入的緩沖區(qū)返回附加的數(shù)據(jù)。因此,日志函數(shù) SpyHookProtocol() 在 hook 例程結(jié)束時將被調(diào)用,而此時 API 函數(shù)還未返回到調(diào)用者。在討論它的實現(xiàn)秘訣之前,請先看看下面給出的兩個示例性的協(xié)議( Protocol ),它們會為你提供一個大概的方向。 5-6 是在命令行下執(zhí)行 dir c: 時產(chǎn)生的日志文件的快照。

請對比 5-6 中列出的日志項和 列表 5-6 給出的協(xié)議格式化字符串。在 示列 5-1 中, NtOpenFile() 和 NtClose() 的格式化字符串分別對應(yīng) 5-6 中的第一行和第四行。它們有著驚人的相似處;每一個格式化控制 ID 都緊隨在一個 % 號后(參考 5-2 ),與其相關(guān)的參數(shù)項將包含在協(xié)議中。不過,協(xié)議還包含一些附加的信息,這些信息明顯不屬于格式字符串。稍后我將解釋這種差異的原因。

示例 5-2 給出了一個協(xié)議項的一般格式。每一項包含相同個數(shù)的域,這些域采用分隔符隔開。這樣分隔可以使程序很容易的解析它。這些域按照如下的一組簡單的基本規(guī)則來構(gòu)建:

l 所有的數(shù)字都已十六進制表示,沒有 0 前綴或常見的前綴“ 0x ”

l 函數(shù)的多個參數(shù)由逗號隔開

l 字符串參數(shù)將位于一對雙引號中

l 結(jié)構(gòu)體成員的值由“ . ”符號隔開

圖 5-6. 命令 dir c: 的示列協(xié)議

'%s=NtOpenFile(%+,%n,%o,%i,%n, %n) '

18:sO=NtOpenFile(+46C.18,nl00001,o'??C:',i0.1,n3,n4021)lBFEE5AE05B6710,278,2

'%s=NtClose(%-l)'

lB:sO=NtClose(-46C.18='??C:')lBFEE5AE05B6710,278,l

示列 5-1. 比較格式化字符串和協(xié)議項

<#> : <status>=<function> (<arguments>) <time> , <thread>, <handles>

示列 5-2. 協(xié)議項的一般格式

l 與句柄相關(guān)的對象名稱和句柄的值采用“ = ”進行分割。

l 日期 / 時間的 stamp 為 1601-01-01 至今逝去的毫秒數(shù),其格式依賴 Windows 2000 的基本時間格式,精度可達到 1/10 毫秒。

l 線程 ID 是調(diào)用 API 函數(shù)的線程的唯一數(shù)字標(biāo)識。

l 句柄計數(shù)的狀態(tài)表示當(dāng)前注冊到 Spy 設(shè)備句柄列表中的句柄的數(shù)量。協(xié)議函數(shù)使用該列表查找與對象名稱相關(guān)的句柄。

圖 5-7. 命令 type c:boot.ini 的示列協(xié)議

圖 5-7 是在控制臺中執(zhí)行: type c:boot.ini 命令產(chǎn)生的 API Spy 協(xié)議結(jié)果。下面給出日志項中的某些列的含義:

l 在 0x31 行,調(diào)用了 NtCreateFile() 來打開 ??c:boot.ini 文件。( o”??c:boot.ini” )該函數(shù)返回的 NTSTATUS 的值為 0 ( s0 ),即 STATUS_SUCCESS ,并分配了一個新的文件句柄,其值為 0 小 8 ,該句柄屬于進程 0x46c ( +46C.18 )。因此,句柄計數(shù)從 1 增加到 2 。

l 在 0x36 行, type 命令將文件 ??c:boot.ini 的前 512 個字節(jié)( n200 )讀入位于線性地址 0x0012F5B4 處的緩沖區(qū)中,并把從 NtCreateFile() 獲取的句柄解析給 NtReadFile() 函數(shù)。系統(tǒng)成功的返回 512 字節(jié)( io.200 )。

l 在 0x39 行,將處理另一塊 512 個字節(jié)的文件塊。這一次,將到達文件的末尾,因此 NtReadFile() 僅返回了 75 個字節(jié)( io.4B )。顯然,我的 boot.ini 文件的大小為: 512+75=587 字節(jié)。

l 在 0x3C 行, NtClose() 成功的釋放了指向 ??c:boot.ini 的文件句柄( -46.18=”??c:boot.ini” ),因此,句柄計數(shù)將從 2 減少為 1 。

現(xiàn)在,你應(yīng)該已經(jīng)明白 Spy 協(xié)議的 API 是如何構(gòu)建的了,這會幫助你掌握協(xié)議生成機制的細節(jié),接下來我們將討論這一機制。在前面我曾提及過,用于日志記錄的主要 API 函數(shù)是 SpyHookProtocol() 。 列表 5-7 給出了該函數(shù),它將使用 SPY_CALL 結(jié)構(gòu)中的數(shù)據(jù)來為每個 API 函數(shù)生成一個協(xié)議記錄并將其寫入一個環(huán)形緩沖區(qū)中,這里的 SPY_CALL 結(jié)構(gòu)由 Hook Dispatcher 傳入。一個 Spy 設(shè)備的客戶端可以通過 IOCTL 調(diào)用來讀去這一協(xié)議。每個記錄項都是一行文本,每行都由單個行結(jié)束符(即 C 語言中的 ”n” )表示行的結(jié)束。通過使用內(nèi)核的 Mutext KMUTEX kmProtcol 來實現(xiàn)串行讀去協(xié)議緩沖區(qū), kmProtocol 位于 Spy 設(shè)備的全局結(jié)構(gòu) DEVICE_CONTEXT 中。 列表 5-7 中的 SpyHookWait() 和 SpyHookRelease() 函數(shù)用于請求和釋放此 Mutext 對象。所有對協(xié)議緩沖區(qū)的訪問都必須由 SpyHookWait() 預(yù)處理并在結(jié)束時由 SpyHookRelease() 處理, SpyHookProtocol() 函數(shù)展示了這種行為。

NTSTATUS SpyHookWait (void)

{

return MUTEX_WAIT (gpDeviceContext->kmProtocol);

}

// -----------------------------------------------------------------

LONG SpyHookRelease (void)

{

return MUTEX_RELEASE (gpDeviceContext->kmProtocol);

}

// -----------------------------------------------------------------

// <#>:<status>=<function>(<arguments>)<time>,<thread>,<handles>

void SpyHookProtocol (PSPY_CALL psc)

{

LARGE_INTEGER liTime;

PSPY_PROTOCOL psp = &gpDeviceContext->SpyProtocol;

KeQuerySystemTime (&liTime);

SpyHookWait ();

if (SpyWriteFilter (psp, psc->pshe->pbFormat,

psc->adParameters,

psc->dParameters))

{

SpyWriteNumber (psp, 0, ++(psp->sh.dCalls)); // <#>:

SpyWriteChar (psp, 0, ':');

// <status>=

SpyWriteFormat (psp, psc->pshe->pbFormat, // <function>

psc->adParameters); // (<arguments>)

SpyWriteLarge (psp, 0, &liTime); // <time>,

SpyWriteChar (psp, 0, ',');

SpyWriteNumber (psp, 0, (DWord) psc->hThread); // <thread>,

SpyWriteChar (psp, 0, ',');

SpyWriteNumber (psp, 0, psp->sh.dHandles); // <handles>

SpyWriteChar (psp, 0, 'n');

}

SpyHookRelease ();

return;

}

列表 5-7. 主要的 Hook 協(xié)議函數(shù) SpyHookProtocol()

如果你比較一下 列表 5-7 給出的 SpyHookProtocol() 函數(shù)的主要部分和 示列 5-2 給出的協(xié)議項的一般格式,將很容易找出那個語句生成了協(xié)議項中的哪一個域( fIEld )。這樣一來一切就很清楚了為什么 列表 5-6 中的協(xié)議字符串沒有說明整個數(shù)據(jù)項 --- 有些獨立于功能的數(shù)據(jù)將由 SpyHookProtocol() 添加,而這將不需要格式字符串的幫助。 SpyHookProtocl() 的核心調(diào)用是 SpyWriteFormat() ,該函數(shù)生成 <status>=<function>[<arguments>] 部分,這依賴于與要記錄的當(dāng)前 API 函數(shù)相關(guān)的格式字符串。請參考位于隨書光盤的 srcw2k_spy 目錄下的源文件 w2k_spy.c 和 w2k_spy.h ,以獲取 Spy 設(shè)備驅(qū)動程序中使用的 SpyWrite*() 函數(shù)的更多實現(xiàn)信息。

請注意,這些代碼稍微有些危險。這些代碼編寫與 1997 年是針對 Windows NT 4.0 的。在移植到 Windows 2000 之后,當(dāng) hook 工作一段較長時間后會偶爾引發(fā)藍屏。更糟糕的是,有些特殊的操作將立即引發(fā)藍屏,例如,在 My Favoriter 文本編輯器的 FileOpen 對話框中打開我的電腦時。在分析過多過 crash dump 后,我發(fā)現(xiàn)是由于將 NULL 指針傳遞給了某些函數(shù)從而導(dǎo)致了系統(tǒng)崩潰。一但 Spy 設(shè)備試圖使用這些指針中的某個來記錄該指針引用的數(shù)據(jù)時,系統(tǒng)就會崩潰。典型的就是,指向 IO_STATUS_BLOCK 結(jié)構(gòu)的指針,在 UNICODE_STRING 和 OBJECT_ATTRIBUTES 結(jié)構(gòu)中存在無效的字符串指針。我還發(fā)現(xiàn)某些有 Buffer 成員的 UNICODE_STRING 結(jié)構(gòu)沒有 結(jié)束符。因此,我再次強調(diào)你不應(yīng)該假定所有的 UNICODE_STRING 結(jié)構(gòu)都以 結(jié)束。在不能確定時,請使用 Length 成員,它總能正確地告訴你在 Buffer 中存放的有效的字節(jié)數(shù)。

為了修正這一問題,我為所有使用客戶指針的日志函數(shù)增加了指針有效性檢查。在結(jié)束時,我使用第四章討論過的 SpyMemoryTestAddress() 函數(shù)來檢驗一個線性地址指針是否指向一個有效的頁表項( PTE )。更詳細的信息請參考 列表 4-22 列表 4-24 。另一種可能的替代方案是使用結(jié)構(gòu)化異常( __try/__except )。

標(biāo)簽: Windows系統(tǒng)
主站蜘蛛池模板: 精品久久久久久久人人人人传媒 | 1级毛片 | 麻豆一区二区三区 | 亚洲三级在线 | 日韩在线一区二区 | 亚洲性爰| 91精品久久久久久久久 | av毛片在线免费看 | www.国产精品| 黄色一级片黄色一级片 | 国产日韩欧美一区 | 日韩精品免费在线视频 | 国产精品成人3p一区二区三区 | 亚洲精品福利网站 | 91精品久久久久 | 精品国产精品三级精品av网址 | 久久一二区 | 欧美综合一区二区三区 | 日韩成人tv | 欧美一区二区在线播放 | 精品九九九 | 亚洲九九 | 黄色操视频 | 欧美精品在线一区二区三区 | 99爱免费观看 | 欧美精品一二三 | 国产四区 | 日韩成人不卡 | 精品久久一区 | 欧美在线播放一区 | 亚洲一区二区三区四区五区午夜 | 美女视频一区 | ririsao久久精品一区 | 精品国产黄a∨片高清在线 99热婷婷 | 日韩欧美国产一区二区三区 | 懂色一区二区三区av片 | 伊人网91| 亚洲日韩欧美一区二区在线 | 一区二区三区影院 | 亚洲人成网站999久久久综合 | 在线观看中文字幕 | 日韩欧美在线播放视频 | 国产精品免费看 | 久久亚洲一区二区三区四区五区高 | 天天天操 | 97伦理在线 | 一区二区三区国产在线 | 国产成人啪精品午夜在线观看 | 亚洲精品一区二区三区不 | 在线播放91 | 麻豆freexxxx性91精品 | 麻豆精品国产91久久久久久 | av网站免费线看 | 欧美国产日韩一区 | 麻豆免费短视频 | 日韩欧美在线一区 | 久久久久国产亚洲日本 | 国产欧美在线视频 | 亚洲欧美日韩天堂 | 久久久精品影院 | 成人夜晚看av | 国精日本亚洲欧州国产中文久久 | 欧美一区在线视频 | 精品在线一区二区 | 国产a免费| 亚洲人成人一区二区在线观看 | 久久久久亚洲视频 | 国产高清在线观看 | 日韩av一区二区三区在线 | 特级做a爰片毛片免费看108 | 国产视频1区 | 午夜国产精品视频 | 国产精品视频免费观看 | 在线观看亚洲一区二区三区 | 天天插天天操 | 国产成人毛片 | 免费一区| 欧美日韩电影一区二区三区 | 国产人成精品一区二区三 | 中文字幕在线观看 | 日韩第一区 | 欧美精品一区二区三区四区五区 | 国产精品美女久久久久久免费 | 欧美精品在线一区二区三区 | 久久国产精品无码网站 | 亚洲欧洲综合 | 性色在线 | 丁香五月网久久综合 | www.日韩视频 | 久久精品在线 | 青娱乐网 | 精品国产乱码久久久久久1区2区 | 欧美一区二区三区xxxx监狱 | 亚洲一区中文字幕在线观看 | 成人在线高清视频 | 免费毛片一区二区三区久久久 | 国产精品成人在线视频 | 日韩欧美网址 | 99久久精品一区二区 | 视频二区 | 国产免费一区二区三区网站免费 | 国产偷录视频叫床高潮对白 | 欧美日本免费一区二区三区 | 色婷婷综合久久久中字幕精品久久 | 国产欧美精品一区二区三区 | 91九色porny首页最多播放 | 久草久草久| 91精品一区二区三区久久久久久 | 国产精品一二区 | 日本午夜在线 | 亚洲精色 | 日韩一区二区免费视频 | 精品一区二区三区免费看 | av亚洲在线 | 久久精品com| 精品国产一区二区三区久久久久久 | 日韩成人在线看 | 精品久久精品 | 91.成人天堂一区 | 亚洲 成人 av | 欧美一区二区大片 | 久久av一区二区三区 | 人人爱人人草 | 爱爱视频免费 | 看免费av| 99精品久久 | 亚洲精品一区二区三区99 | 欧美黄色片 | 国产精品高清在线 | 久久久久在线 | 国产综合精品一区二区三区 | 国产精品久久久久久久久久妞妞 | 毛片一区二区 | 久久男女视频 | 国产精品毛片久久久久久 | 久久视频在线看 | 国产日韩一级片 | 99久久精品国产毛片 | 欧美一级在线 | 97伦理电影网 | 丁香午夜 | 国产色在线 | 久久久久黄 | 亚洲精品一区二区三区蜜桃久 | 亚洲视频中文字幕 | 久久精品视 | 日本黄色一级片免费看 | 国产一级视频 | 日本精品免费观看 | 成人精品 | 北条麻妃99精品青青久久 | 日韩中文字幕一区二区 | 一区二区三区在线播放 | 一区二区不卡视频在线观看 | 欧美精品一区在线发布 | 久久久久一区二区三区 | 韩国精品一区二区三区 | 国产成人亚洲精品 | 成人午夜激情 | 狠狠操天天干 | 狠狠撸在线 | 99精品欧美一区二区三区综合在线 | 亚洲一级在线观看 | 91新视频| 亚洲国产日韩a在线播放性色 | 久久久久国产成人精品亚洲午夜 | 日韩视频中文字幕 | 久久精品成人 | 黄色片免费在线观看视频 | 精品国产一区在线 | 国产精品69久久久久水密桃 | www.久久| 精品国产一区二区三区av片 | 国产乱码一区二区三区 | 成人免费看黄 | 日本精品免费在线观看 | 国产精品毛片无码 | 亚洲香蕉精品 | 狠狠操综合网 | 欧美亚洲免费 | 久久综合社区 | 中文字幕日韩一区二区不卡 | 欧美日韩免费在线 | 精品在线一区二区 | 久久精品欧美一区二区三区不卡 | 免费成人在线观看 | 国产精品乱码一区二区三区 | 国产一区精品视频 | 久久精品视频一区 | 国产精品一区二区三区四区 | 曰韩毛片| 91精品国产美女在线观看 | 亚洲一区二区久久 | 亚洲视频在线观看 | 国产一区精品在线 | 日韩欧美精品一区二区三区 | 北条麻妃99精品青青久久 | 伊人99 | 天堂中文av在线 | 婷婷五月色综合 | 免费人成电影 | 欧美一级视频 | 一区二区三区高清不卡 | 国产成人精品网站 | 欧美国产视频一区 | 欧美日韩国产一区二区三区 | 欧美高清成人 | 乱轮一区| 国产中文字幕亚洲 | 色婷婷av一区二区三区软件 | 中文字幕日韩一区二区三区 | 久久精品欧美一区二区三区不卡 | 成人亚洲黄色 | 亚洲精品日韩激情在线电影 | 亚洲av毛片一区二二区三三区 | 日本不卡免费新一二三区 | av中文字幕在线播放 | 欧美成人精品一区二区男人看 | 亚洲激情在线 | 爱干视频| 成人免费视频观看视频 | 99久久精品国产一区二区成人 | 欧美一区二区三区精品 | 亚洲 欧美 另类 综合 偷拍 | 97超碰自拍| 超碰在线91 | 一级片福利 | 亚洲精品久久久久久下一站 | 在线激情视频 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 极品白嫩少妇无套内谢 | 亚洲成av人片在线观看无码 | 久草精品视频在线播放 | 一区二区在线 | 亚洲综合精品久久 | 欧美视频免费在线 | 欧美亚洲高清 | 午夜激情av| 久久这里有精品视频 | 国产精品久久久久久亚洲调教 | 日韩高清国产一区在线 | 成人精品一区二区三区中文字幕 | 激情毛片 | 国产精品视频不卡 | 精品综合久久 | 国产精品一码二码三码在线 | 日韩综合网 | 国产精品久久久久久久一区探花 | 亚洲第一免费视频网站 | 91精品国产综合久久久久久漫画 | 曰批视频在线观看 | 中文字幕亚洲欧美精品一区四区 | 国产精品精品视频一区二区三区 | 国产在线日韩 | 国产欧美日韩综合精品一区二区 | 亚州成人| 一区免费看| 日韩手机在线 | 久久免费视频国产 | 国产日韩欧美在线 | 国产欧美精品区一区二区三区 | 亚洲免费观看 | a视频在线免费观看 | 亚洲精品乱码久久久久久久 | 日韩av电影在线免费观看 | 色精品视频 | 久久久天堂 | www.伊人| 成人午夜电影在线观看 | 日韩福利在线 | 国产aaa毛片| 午夜精品一区二区三区在线视频 | 亚洲一区二区中文字幕在线观看 | 中文字幕亚洲在线观看 | 免费在线黄| 欧美天天 | 一区二区三区欧美 | 色8久久 | 台湾av在线| 国产精品自拍视频 | 久久久久久久久久久久久久久久久久久 | 国产成人福利在线 | 亚洲 中文 欧美 日韩 在线观看 | 亚洲精品福利在线 | 国精产品一区一区三区免费完 | 成年人视频免费在线看 | 91精品视频一区 | 波多野结衣一区二区三区高清 | 欧美簧片在线 | 日韩免费 | 国产伦精品久久久一区二区三区 | 黑色丝袜脚足j国产在线看68 | 亚洲精品视频在线播放 | 成年人网站免费在线观看 | 中文字幕亚洲一区 | 完全免费av| 美女网站视频免费黄 | 98精品国产高清在线xxxx天堂 | 国产精品一区二区三区四区 | 电影k8一区二区三区久久 | 久久久久亚洲美女啪啪 | 在线色网站 | 超碰在线99 | 91麻豆精品久久久久蜜臀 | av不卡在线播放 | 亚洲 欧美 日韩 在线 | 欧美三级电影在线播放 | 国产精品久久久久久久久久三级 | 波多野结衣 一区二区三区 精品精品久久 | 成人免费福利 | 日韩欧美一区二区三区免费观看 | 狠狠干狠狠干 | 国产婷婷在线视频 | 九九亚洲 | 国产高清精品一区 | 日本精品在线观看 | youjizz国产 | 成人h在线 | 综合二区| 在线欧美 | 日韩av一区二区三区在线观看 | 久久久久综合狠狠综合日本高清 | 可以在线观看的黄色 | 精品国产乱码久久久久久蜜臀 | 亚洲视频一区 | 午夜tv免费观看 | 可以免费看黄的网站 | 美女一区 | 日本黄色短片 | 国产成人精品免费视频大全 | 欧美日韩视频在线第一区 | 在线免费观看毛片 | 在线中文 | 欧美性一区二区三区 | yy6080久久伦理一区二区 | 中文字幕高清视频 | 在线欧美日韩 | 精品国产91乱码一区二区三区 | 欧美激情自拍偷拍 | 国产精品美女视频 | 青青草一区 | 99福利视频| 在线观看91 | 国产成人在线网站 | av国产精品 | 亚洲精选国产 | 日韩福利 | 伊人网在线视频免费观看 | 91久久极品 | 国产伦精品一区二区三区在线 | 特级黄一级播放 | 精品久久久久久亚洲精品 | 91精品久久 | www中文字幕 | 亚洲视频在线观看 | 亚洲精品电影网在线观看 | 日韩欧美一区二区三区免费观看 | 久久国产精品免费一区二区三区 | 老司机狠狠爱 | 亚洲国产一区二区在线观看 | 久久手机在线视频 | 亚洲精品一区二区三区在线看 | 久久涩| 久草在线| 超碰c| 久久精品视频免费看 | 午夜视频在线免费观看 | 99草草| 久久国产精品久久久久久 | 欧美成人在线免费视频 | 日韩在线短视频 | 国产 日韩 一区 | 欧美日韩不卡在线 | 欧美视频免费 | 三级黄色片在线 | 国产精品一二三四区 | 国产欧美日韩综合精品一区二区 | 综合网在线| 国产精品夜夜 | 视频精品一区 | 国产成人精品一区二区三区在线 | 看免费av | 亚洲精品乱码久久久久久麻豆不卡 | 亚州成人| 日韩欧美综合 | 亚洲成人av| 日韩2区| 亚洲国产精品久久久久久久 | 欧美日日| 久久极品 | 97人人超碰| 日韩精品一区二区三区老鸭窝 | 久久久高清 | 日韩精品一区二区三区中文字幕 | 欧美日韩成人一区 | 荡女妇边被c边呻吟视频 | 亚洲三级视频 | 欧美成人精品在线 | 午夜免费视频 | 精品欧美乱码久久久久久 | 国产精品免费观看 | 亚洲午夜在线 | 久久成人综合 | 中文在线一区二区 | 99久久精品免费看国产免费软件 | 国产一级毛片国语一级 | 特级淫片日本高清视频免费 | 欧洲亚洲视频 | 91麻豆产精品久久久久久 | 日韩亚洲| 日韩一区二区三区在线观看 | 国产精品毛片久久久久久久 | 成人不卡| 欧美日韩一区二区三区在线观看 | 天天干狠狠操 | 岛国av免费 | 999久久久国产999久久久 | 国产精品一区二区在线观看 | 国产免费久久 | 欧美日韩欧美日韩 | 久久亚洲一区二区三 | 天天干天天操 | 伊人激情影院 | 91资源在线| 成人午夜影院 | 免费激情小视频 | 91操操| 中文字幕成人av | 国产精品久久久久久久电影 | 亚洲狠狠爱 | 免费中文字幕日韩欧美 | 免费福利视频一区 | 黄色片网站视频 | 99久久99久久精品国产片果冻 | 日韩在线视频一区 | 日本久久久久久久久久久久 | 精产国产伦理一二三区 | 免费毛片视频 | 国产精品一区二区三区在线 | 国产精品久久久久久久娇妻 | 日本三级精品视频 | 日韩免费av一区二区 | 日本中文字幕一区 | 综合五月网 | 色欧美视频 | 国产一区二区三区免费播放 | 欧美在线视频一区二区 | 国产专区在线 | av中文字幕在线观看 | 久久久久久成人 | 日韩精品一区二区三区四区视频 | 欧洲亚洲精品久久久久 | 久久极品 | 国产成人精品一区二区三区四区 | 欧美一级特黄aaaaaaa色戒 | 国产精品视频一区二区三区 | www.久久久久久久 | 国产一区二区三区久久 | 在线免费观看日韩视频 | 欧美在线一区二区三区 | 成人在线观看一区 | 天天操操 | 一级毛片色一级 | 日本高清视频在线播放 | 国产成人精品午夜视频' | 欧美日韩国产一区二区三区不卡 | 久久精品网 | 丁香久久 | 2021最新热播中文字幕-第1页-看片视频 青青青久草 | 国产精品日韩三级 | 精品久久久久久久久久久院品网 | 国产精品乱码久久 | 亚洲成人观看 | www.日韩.com| 精品免费久久久久 | 国产在线视频网 | 久久精品国产一区二区电影 | 国产精品亚洲成人 | 天天澡天天狠天天天做 | 亚洲免费人成在线视频观看 | 亚洲国产精品久久人人爱 | 久久草在线视频 | 亚洲一区二区三区视频 | 国产成人精品久久久 | 一区二区视频网 | 中文字幕亚洲区 | 精品中文字幕在线观看 | 麻豆视频91 | 亚洲国产精品一区二区三区 | 国产精品视频免费 | 日日搞夜夜操 | 91精品国产综合久久久久久丝袜 | 午夜精品久久久久99蜜 | 午夜无码国产理论在线 | 91综合网| 欧美亚洲国产一区二区三区 | 精品中文字幕一区二区三区 | 欧美女优在线视频 | 精品国产鲁一鲁一区二区在线观看 | 国产一级高清视频 | 国产精品久久久久久久久久免费看 | 国产欧美精品一区二区色综合 | 免费一级片 | 一级片在线免费观看视频 | 亚洲九九 | 97国产资源 | 成人在线免费视频 | 91精品久久久久久 | 黄色av网站在线免费观看 | 日本黄色一级片视频 | 草草视频网站 | 美女视频一区 | 99久久免费视频在线观看 | 精品国产乱码一区二区三区四区 | 日韩三级中文字幕 | 在线视频亚洲 | 亚洲一区在线日韩在线深爱 | hh99me在线观看 | 国产欧美精品一区二区三区 | 日韩中文一区二区三区 | 亚洲女人天堂av | 亚洲成人精品视频 | 色网在线看 | 久久久久国产一区二区三区四区 | 亚洲男人天堂网 | 99久久国产综合精品女不卡 | 一区二区福利 | 一区视频在线 | 国产午夜精品久久 | 欧美永久精品 | 欧美一区二区三区国产精品 | 日韩av免费在线观看 | 亚洲第一黄 | 午夜毛片| 亚洲一区二区三区中文字幕 | 四虎av成人| 华人黄网站大全 | 欧美aⅴ| 日日爱视频 | 久久精品一 | 日本欧美久久久久 | √8天堂资源地址中文在线 成人欧美一区二区三区白人 | 精品国产欧美一区二区三区成人 | 黄网免费 | 天天插狠狠插 | 99精品久久久 | 99成人精品 | 国产一区二区自拍视频 | 狠狠干美女 | 成人免费视频网站 | 国产欧美精品区一区二区三区 | www久久久久 | 美女131mm久久爽爽免费 | 毛片a片| 97精品超碰一区二区三区 | 国产一区二区三区久久久久久久久 | 日本精品一区二区三区在线观看视频 | 正在播放国产一区 | 国产区福利 | 禁果av一区二区三区 | 日本精品免费 | 日本黄色电影网站 | 亚洲国产精品久久 | 国产精品国产精品国产专区不片 | 在线成人免费观看www | 日韩欧美精品在线 | 日批免费观看视频 | 久久久久久综合 | 午夜一级片 | 国产精品久久精品 | 99亚洲精品 | 日韩一区二区三区精品 | 欧美精品一区二区三区在线四季 | 欧美福利一区二区 | 高清国产一区二区三区四区五区 | 特级理论片 | 亚洲一区影院 | 久草在线视频免费播放 | 天天综合网久久综合网 | 欧美国产视频 | 久久久久亚洲一区二区三区 | 一区二区三区视频免费 | 一道本一区| 成年人看的羞羞网站 | v888av成人| 日韩福利一区二区 | 午夜日韩 | 91在线精品一区二区 | 精品一区二区6 | 亚洲精品乱码久久久久久 | 97在线免费观看 | 看片地址 | 在线看亚洲 | 欧美自拍网| 日韩在线高清视频 | 成人综合av | 91天堂| 91精品国产综合久久久蜜臀图片 | 嫩草精品 | 日韩欧美一级片 | 精品一区二区在线观看 | 国产一区二区三区av在线 | 日本私人网站在线观看 | 国产精品第52页 | jizz在亚洲| jlzzjlzz国产精品久久 | 欧洲精品在线观看 | 亚洲欧美国产精品久久久久 | av网站免费观看 | 精品国产污网站污在线观看15 | 2018啪一啪| 国产免费一区二区三区最新不卡 | 欧美一区二区三区xxxx监狱 | 国产精品美女 | 亚洲经典视频在线观看 |