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

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

《Undocumented Windows 2000 Secrets》翻譯 --- 第四章(6)

瀏覽:144日期:2023-08-27 10:15:51

第四章 探索 Windows 2000 的內(nèi)存管理機(jī)制

翻譯: Kendiv( fcczj@263.net )

更新: Sunday, February 17, 2005

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

IOCTL 函數(shù) SPY_IO_PDE_ARRAY

SPY_IO_PDE_ARRAY 是另一個普通的函數(shù),它只是簡單的把整個頁目錄(開始于地址 0xC0300000 )復(fù)制到調(diào)用者提供的輸出緩沖區(qū)中。該緩沖區(qū)采用 列表 4-21 所示的 SPY_PDE_ARRAY 結(jié)構(gòu)。你可能已猜到,該結(jié)構(gòu)的大小正好是 4KB ,它由 1,024 個 32 位的 PDE 組成。 X86_PE 結(jié)構(gòu)將在這里使用, X86_PE 結(jié)構(gòu)代表一個一般化的頁項( page entry ),可在 列表 4-3 中找到該結(jié)構(gòu)的定義,常量 X86_PAGES_4M 定義在 列表 4-5 。 SPY_PDE_ARRAY 的結(jié)構(gòu)體成員總是頁目錄項( PDE ), X86_PE 結(jié)構(gòu)可以是 X86_PDE_4M 類型,也可以是 X86_PDE_4KB 類型,這取決于 PDE 的 PS 位的取值。

在無法保證源數(shù)據(jù)頁存在于物理內(nèi)存時,就開始復(fù)制內(nèi)存中的數(shù)據(jù)通常并不是一個好主意。不過,頁目錄是少數(shù)列外中的一個。在當(dāng)前任務(wù)處于運(yùn)行狀態(tài)時,它的頁目錄總是存在于物理內(nèi)存中。它不會被置換到頁面文件中,除非另一個任務(wù)被置換進(jìn)來。這就是為什么 CPU 的頁目錄基地址寄存器( PDBR )沒有 P ( present )位的原因, PDE 和 PTE 也類似。請參考 列表 4-3 中的 X86_PDBR 結(jié)構(gòu)的定義,以驗證這一點(diǎn)。

typedef struct _SPY_PDE_ARRAY

{

X86_PE apde [X86_PAGES_4M];

}

SPY_PDE_ARRAY, *PSPY_PDE_ARRAY, **PPSPY_PDE_ARRAY;

#define SPY_PDE_ARRAY_ sizeof (SPY_PDE_ARRAY)

列表 4-21. SPY_PDE_ARRY 結(jié)構(gòu)的定義

IOCTL 函數(shù) SPY_IO_PAGE_ENTRY

如果你對給定線性地址的 page entry 感興趣的話,這個函數(shù)就是一個很好的選擇。 列表 4-22 給出了 SpyMemoryPageEntry() 的內(nèi)部細(xì)節(jié),該函數(shù)就是用來處理 SPY_IO_PAGE_ENTRY 請求的。該函數(shù)返回的 SPY_PAGE_ENTRY 結(jié)構(gòu)本質(zhì)上是一個 X86_PE page entry (定義于 列表 4-3 ),不過這里增加了兩個新成員(為了使用方便): dSize 和 fPresent 。其中 dSize 成員用于說明頁的大小(以字節(jié)為單位),其值不是 X86_PAGE_4KB ( 4,096 字節(jié))就是 X86_PAGE_4MB ( 4,194,304 字節(jié)); fPresent 成員用來說明頁是否存在于物理內(nèi)存中。這個標(biāo)志必須和 SpyMemoryPageEntry() 自身的返回值進(jìn)行對比,即使 fPresent 為 FALSE ,函數(shù)自身的返回值也可為 TRUE 。此時,提供的線性地址時有效的,但它指向的數(shù)據(jù)頁已被置換到了頁面文件中。這種情況可通過設(shè)置 page entry 的第 10 位(即 列表 4-22 中出現(xiàn)的 PageFile )來表示。當(dāng) P 位(該位屬于 X86_PNPE 結(jié)構(gòu))被置 0 時, PageFile 就會被設(shè)置。請參考本章稍早討論過的 X86_PNPE 結(jié)構(gòu)的細(xì)節(jié)。 X86_PNPE 結(jié)構(gòu)代表一個 page-not-persent entry ,該結(jié)構(gòu)定義于 列表 4-3

SpyMemoryPageEntry() 首先假定目標(biāo)頁是 4MB 頁,然后,從系統(tǒng)的 PDE 數(shù)組(此數(shù)組起始于 0xC0300000 )中復(fù)制指定線性地址的 PDE 到 SPY_PAGE_ENTRY 結(jié)構(gòu)體的 pe 成員。如果 P 位不為 0 ,則肯定存在下一級的頁或頁表,所以接下來檢查 PS 位以確定頁面大小。如果 PS 位不為 0 ,則表示此 PDE 指向一個 4MB 數(shù)據(jù)頁,工作到此就可結(jié)束了 ------SpyMemoryPageEntry() 返回 TRUE ,并且 SPY_PAGE_ENTRY 結(jié)構(gòu)體的 fPresent 成員也同時被設(shè)為 TRUE 。如果 PS 位為 0 ,則 PDE 指向的是一個 PTE ,所以代碼從起始于 0xC0000000 的數(shù)組中提取該 PTE ,并檢查它的 P 位。如果不為 0 ,則包含指定線性地址的 4KB 頁存在于物理內(nèi)存中,此時, SpyMemoryPageEntry() 和 fPresent 都會報告 TRUE 。否則,找到的必定是一個 page-not-present entry ,因此 SpyMemoryPageEntry() 返回 TRUE ,不過僅當(dāng) PageFile 位不為 0 時, fPresent 成員才會被設(shè)為 FALSE 。

typedef struct _SPY_PAGE_ENTRY

{

X86_PE pe;

DWord dSize;

BOOL fPresent;

}

SPY_PAGE_ENTRY, *PSPY_PAGE_ENTRY, **PPSPY_PAGE_ENTRY;

#define SPY_PAGE_ENTRY_ sizeof (SPY_PAGE_ENTRY)

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

BOOL SpyMemoryPageEntry (PVOID pVirtual,

PSPY_PAGE_ENTRY pspe)

{

SPY_PAGE_ENTRY spe;

BOOL fOk = FALSE;

spe.pe = X86_PDE_ARRAY [X86_PDI (pVirtual)];

spe.dSize = X86_PAGE_4M;

spe.fPresent = FALSE;

if (spe.pe.pde4M.P)

{

if (spe.pe.pde4M.PS)

{

fOk = spe.fPresent = TRUE;

}

else

{

spe.pe = X86_PTE_ARRAY [X86_PAGE (pVirtual)];

spe.dSize = X86_PAGE_4K;

if (spe.pe.pte4K.P)

{

fOk = spe.fPresent = TRUE;

}

else

{

fOk = (spe.pe.pnpe.PageFile != 0);

}

}

}

if (pspe != NULL) *pspe = spe;

return fOk;

}

列表 4-22. 查詢 PDE 和 PTE

需要注意的是, SpyMemoryPageEntry() 不能識別被置換出物理內(nèi)存的 4MB 頁。如果 PDE 指向的 4MB 頁并不存在,將無法判斷給定的線性地址是否有效的,以及該頁是否還保存在當(dāng)前頁面文件中。 4MB 頁僅用于內(nèi)核內(nèi)存范圍: 0x80000000----0x9FFFFFFF 。不過我從來沒見過這樣的一個頁被置換出去,即使物理內(nèi)存極端少的時候也沒有過,因此我不需要檢查任何與此相關(guān)的 page-not-present entrIEs 。

IOCTL 函數(shù) SPY_IO_MEMORY_DATA

SPY_IO_MEMORY_DATA 函數(shù)是重量級函數(shù)中的一個,因為它可以復(fù)制任意數(shù)量的內(nèi)存數(shù)據(jù)到調(diào)用者提供的緩沖區(qū)中。正如你可能還記得的那樣,用戶模式下的應(yīng)用程序很容易傳入一個無效的地址。因此,該函數(shù)在觸及源地址之前,會非常謹(jǐn)慎的檢驗這些地址的有效性。記住,藍(lán)屏可以潛伏在內(nèi)核模式的任何地方。

調(diào)用程序通過傳入一個 SPY_MEMORY_BLOCK 結(jié)構(gòu)來請求一個內(nèi)存塊中的數(shù)據(jù),在 列表 4-23 的頂部給出了該結(jié)構(gòu)體的定義,該結(jié)構(gòu)體會指定內(nèi)存塊的地址和大小。為了方便,此處的地址被定義為一個 union ,以允許將其解釋為一個字節(jié)類型的數(shù)組( PBYTE pbAddress )或解釋為一個無類型的指針( PVOID pAddress )。 列表 4-23 中的 SpyInputMemory() 函數(shù)將從 IOCTL 的輸入緩沖區(qū)中復(fù)制該結(jié)構(gòu)。其搭檔函數(shù) SpyOutputMemory() (在 列表 4-23 的末尾處)只是 SpyMemoryReadBlock() 的一個外包而已, 列表 4-24 給出了 SpyMemoryReadBlock() 函數(shù)。 SpyOutputMemory() 的主要職責(zé)是在 SpyMemoryReadBlock() 讀取數(shù)據(jù)后,返回適當(dāng)?shù)?NTSTATUS 值。

SpyMemoryReadBlock() 通過一個 SPY_MEMORY_DATA 結(jié)構(gòu)返回它讀到的內(nèi)存數(shù)據(jù)。該結(jié)構(gòu)定義于 列表 4-25 。我選擇了一中不同的定義方式,因為 SPY_MEMORY_DATA 是一個針對變量大小的數(shù)據(jù)類型。基本上,它包含一個名為 smb 的 SPY_MEMORY_BLOCK 結(jié)構(gòu),隨后是一個 WORD 類型的數(shù)組,名為 awData[] 。該數(shù)組的長度由 smb 的 dBytes 成員給出。為了允許方便的按預(yù)定大小定義 SPY_MEMORY_DATA 的全局或局部實體,該結(jié)構(gòu)的定義采用了一個宏 ----SPY_MEMORY_DATA_N() 。該宏的唯一參數(shù)用于指定 awData[] 數(shù)組的大小。實際的結(jié)構(gòu)體定義在宏定義之后,它提供的結(jié)構(gòu)體中包含一個長度為 0 的 awData[] 數(shù)組。 SPY_MEMORY_DATA__() 宏首先計算 SPY_MEMORY_DATA 結(jié)構(gòu)的全部大小,然后按這一大小分配結(jié)構(gòu)中的數(shù)組,剩下的定義允許將 WORD 型的數(shù)據(jù)加入數(shù)組或從數(shù)組中取出。顯然,每個 WORD 的低半位包含內(nèi)存數(shù)據(jù)的字節(jié)數(shù),高半位作為標(biāo)志位。現(xiàn)在,僅有第 8 位有意義,用于表示位于 0—7 位的內(nèi)存字節(jié)數(shù)是否有效。

typedef struct _SPY_MEMORY_BLOCK

{

union

{

PBYTE pbAddress;

PVOID pAddress;

};

DWORD dBytes;

}

SPY_MEMORY_BLOCK, *PSPY_MEMORY_BLOCK, **PPSPY_MEMORY_BLOCK;

#define SPY_MEMORY_BLOCK_ sizeof (SPY_MEMORY_BLOCK)

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

NTSTATUS SpyInputMemory (PSPY_MEMORY_BLOCK psmb,

PVOID pInput,

DWORD dInput)

{

return SpyInputBinary (psmb, SPY_MEMORY_BLOCK_, pInput, dInput);

}

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

NTSTATUS SpyOutputMemory (PSPY_MEMORY_BLOCK psmb,

PVOID pOutput,

DWORD dOutput,

PDWORD pdInfo)

{

NTSTATUS ns = STATUS_BUFFER_TOO_SMALL;

if (*pdInfo = SpyMemoryReadBlock (psmb, pOutput, dOutput))

{

ns = STATUS_SUCCESS;

}

return ns;

}

列表 4-23. 處理內(nèi)存塊

DWORD SpyMemoryReadBlock (PSPY_MEMORY_BLOCK psmb,

PSPY_MEMORY_DATA psmd,

DWORD dSize)

{

DWORD i;

DWORD n = SPY_MEMORY_DATA__ (psmb->dBytes);

if (dSize >= n)

{

psmd->smb = *psmb;

for (i = 0; i < psmb->dBytes; i++)

{

psmd->awData [i] =

(SpyMemoryTestAddress (psmb->pbAddress + i)

? SPY_MEMORY_DATA_VALUE (psmb->pbAddress [i], TRUE)

: SPY_MEMORY_DATA_VALUE (0, FALSE));

}

}

else

{

if (dSize >= SPY_MEMORY_DATA_)

{

psmd->smb.pbAddress = NULL;

psmd->smb.dBytes = 0;

}

n = 0;

}

return n;

}

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

BOOL SpyMemoryTestAddress (PVOID pVirtual)

{

return SpyMemoryPageEntry (pVirtual, NULL);

}

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

BOOL SpyMemoryTestBlock (PVOID pVirtual,

DWORD dBytes)

{

PBYTE pbData;

DWORD dData;

BOOL fOk = TRUE;

if (dBytes)

{

pbData = (PBYTE) ((DWORD_PTR) pVirtual & X86_PAGE_MASK);

dData = (((dBytes + X86_OFFSET_4K (pVirtual) - 1)

/ PAGE_SIZE) + 1) * PAGE_SIZE;

do {

fOk = SpyMemoryTestAddress (pbData);

pbData += PAGE_SIZE;

dData -= PAGE_SIZE;

}

while (fOk && dData);

}

return fOk;

}

列表 4-24. 復(fù)制內(nèi)存塊中的數(shù)據(jù)

SpyMemoryTestAddress() 用于測試數(shù)據(jù)的有效性, SpyMemoryReadBlock() 針對要讀取的每個字節(jié)都會調(diào)用 SpyMemoryTestAddress() 。 SpyMemoryTestAddress() 在 列表 4-24 的下半部分給出,該函數(shù)只是簡單的調(diào)用 SpyMemoryPageEntry() ,不過傳入的第二個參數(shù)為 NULL 。 SpyMemoryPageEntry() 在討論 SPY_IO_PAGE_ENTRY 時已經(jīng)介紹過( 列表 4-22 )。將其 PSPY_PAGE_ENTRY 指針參數(shù)設(shè)為 NULL ,意味著調(diào)用者不關(guān)心指定線性地址對應(yīng)的 page entry ,因此,如果線性地址有效,函數(shù)將返回 TRUE 。在 SpyMemoryPageEntry() 的上下文中,僅當(dāng)一個線性地址對應(yīng)的數(shù)據(jù)頁存在于物理內(nèi)存中,或者位于頁面文件中,該地址才是有效的。注意,這種行為與 ntoskrnl.exe 中的 API 函數(shù) MmIsAddressValid() 并不一致,當(dāng)指定的頁不存在于物理內(nèi)存中時, MmIsAddressValid() 總是返回 FALSE ,即使這個有效的數(shù)據(jù)據(jù)頁位于頁面文件中也會如此。 列表 4-24 中的另一個函數(shù) SpyMemoryTestBlock() 是 SpyMemoryTestAddress() 的增強(qiáng)版。它可測試一個內(nèi)存區(qū)域的有效性,它每次可測試指定塊中的 4,096 個字節(jié),直到測試完區(qū)域中的所有頁為止。

#define SPY_MEMORY_DATA_N(_n)

struct _SPY_MEMORY_DATA_##_n

{

SPY_MEMORY_BLOCK smb;

WORD awData [_n];

}

typedef SPY_MEMORY_DATA_N (0)

SPY_MEMORY_DATA, *PSPY_MEMORY_DATA, **PPSPY_MEMORY_DATA;

#define SPY_MEMORY_DATA_ sizeof (SPY_MEMORY_DATA)

#define SPY_MEMORY_DATA__(_n) (SPY_MEMORY_DATA_ + ((_n) * WORD_))

#define SPY_MEMORY_DATA_BYTE 0x00FF

#define SPY_MEMORY_DATA_VALID 0x0100

#define SPY_MEMORY_DATA_VALUE(_b,_v)

((WORD) (((_b) & SPY_MEMORY_DATA_BYTE ) |

((_v) ? SPY_MEMORY_DATA_VALID : 0)))

列表 4-25. SPY_MEMORY_DATA 的定義

將置換出去的頁作為有效的地址范圍有一個很重要的好處:當(dāng) SpyMemoryReadBlock() 試圖讀取這些頁中的第一個字節(jié)時,這些頁就會被很快的再次調(diào)入內(nèi)存中。稍后給出的內(nèi)存 Dump 工具如果依賴 MmIsAddressValid() ,有時就會拒絕顯示指定地址范圍中的數(shù)據(jù)(即使 5 分鐘之前,它還可以顯示這些數(shù)據(jù)),而這僅僅是因為這些頁可能已被傳送到了頁面文件中。

IOCTL 函數(shù) SPY_IO_MEMORY_BLOCK

SPY_IO_MEMORY_BLOCK 依賴于 SPY_IO_MEMORY_DATA ,因為它也是從任意地址復(fù)制內(nèi)存塊到調(diào)用者的緩沖區(qū)中。主要的區(qū)別是: SPY_IO_MEMORY_DATA 試圖復(fù)制所有可讀取的字節(jié),而對于 SPY_IO_MEMORY_BLOCK 來說,只要請求的范圍中包含無效地址它就會失敗,一個字節(jié)也不會復(fù)制。第 6 章中需要這個函數(shù)來將位于內(nèi)核空間中的數(shù)據(jù)結(jié)構(gòu)傳遞給用戶模式下的程序。這一要求顯然會大大限制這個函數(shù),所以若一個結(jié)構(gòu)體中包含無法讀取的字節(jié),就跳過它們,僅復(fù)制可讀取的字節(jié)。

和 SPY_IO_MEMORY_DATA 類似, SPY_IO_MEMORY_BLOCK 期望輸入一個 SPY_MEMORY_BLOCK 結(jié)構(gòu)來指定要復(fù)制的內(nèi)存塊的基地址和大小。返回的數(shù)據(jù),將是原始數(shù)據(jù)的 1:1 復(fù)制品。輸出緩沖區(qū)必須足夠容納要復(fù)制的全部內(nèi)容。否則,將會報告一個錯誤,并且不會返回任何數(shù)據(jù)。

IOCTL 函數(shù) SPY_IO_HANDLE_INFO

和前面介紹的 SPY_IO_PHSICAL 類似,這個函數(shù)允許用戶模式下的程序調(diào)用其他途經(jīng)無法調(diào)用的內(nèi)核模式 API 。內(nèi)核驅(qū)動程序可通過 ntoskrnl.exe 導(dǎo)出的 obReferenceObjectByHandle() 來獲取由句柄描述的對象的指針。而在 Win32 下沒有對等的函數(shù)。不過,應(yīng)用程序可以命令 Spy 設(shè)備執(zhí)行這一函數(shù),并返回對象的指針。 列表 4-26 展示了由 SpyDispatcher() 調(diào)用的 SpyOutputHandleInfo() 函數(shù)。可通過 SpyInputHandle() 獲(定義于 列表 4-10 )取輸入的句柄。

列表 4-26 頂部的 SPY_HANDLE_INFO 結(jié)構(gòu)包含與句柄相關(guān)的對象體的指針,以及該句柄的屬性,這兩個都會由 ObReferenceObjectByHandle() 返回。特別重要的一點(diǎn)是:如果 ObReferenceObjectByHandle() 調(diào)用成功,就必須調(diào)用 ObDereferenceObject() 來將對象的引用計數(shù)器恢復(fù)到先前的值。如果沒有這樣做,將會導(dǎo)致“對象引用漏洞”。

typedef struct _SPY_HANDLE_INFO

{

PVOID pObjectBody;

DWORD dHandleAttributes;

}

SPY_HANDLE_INFO, *PSPY_HANDLE_INFO, **PPSPY_HANDLE_INFO;

#define SPY_HANDLE_INFO_ sizeof (SPY_HANDLE_INFO)

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

NTSTATUS SpyOutputHandleInfo (HANDLE hObject,

PVOID pOutput,

DWORD dOutput,

PDWORD pdInfo)

{

SPY_HANDLE_INFO shi;

OBJECT_HANDLE_INFORMATION ohi;

NTSTATUS ns = STATUS_INVALID_PARAMETER;

if (hObject != NULL)

{

ns = ObReferenceObjectByHandle (hObject,

STANDARD_RIGHTS_READ,

NULL, KernelMode,

&shi.pObjectBody, &ohi);

}

if (ns == STATUS_SUCCESS)

{

shi.dHandleAttributes = ohi.HandleAttributes;

ns = SpyOutputBinary (&shi, SPY_HANDLE_INFO_,

pOutput, dOutput, pdInfo);

ObDereferenceObject (shi.pObjectBody);

}

return ns;

}

列表 4-26. 通過句柄引用一個對象

標(biāo)簽: Windows系統(tǒng)
主站蜘蛛池模板: 国产精品日产欧美久久久久 | 精品精品 | www.久久久| 欧美日韩精品一区 | 国产精品久久久久久久久久免费 | 中文字幕在线看 | 日韩久久一区二区 | 日韩中文字幕在线 | aⅴ色国产 欧美 | 一区二区在线电影 | 日韩超碰在线观看 | 久久久999精品视频 五月天婷婷在线视频 | 国产日韩欧美三级 | 玖玖操| 精品欧美一区二区在线观看 | 色图综合 | 91免费看 | 国产在线国产 | 欧美久久精品一级c片 | 久久久精品久久久 | 杨门女将寡妇一级裸片看 | 久久精品网 | 91看片淫黄大片一级在线观看 | www,四虎 | 人人射人人舔 | 毛片99 | 天天综合网网欲色 | 国产精品美女久久久久久免费 | 国产精品美女久久久久久不卡 | 亚洲看片网站 | 国产二区精品 | 国产欧美日韩精品在线 | 国产精品一区人伦免视频播放 | 国产精品99久久久久久宅男 | 精品久久伊人 | 成人xxx | 能在线观看的黄色网址 | 午夜在线电影 | 中文字幕在线观看一区二区三区 | 国产精品中文字幕在线播放 | 国产精品自产拍在线观看 | 91久久精品一区二区别 | 欧美在线观看一区 | 亚洲国产日韩a在线播放性色 | 成人影院网站ww555久久精品 | 午夜tv| 国产精品美女久久久久aⅴ国产馆 | 99久久精品免费看国产一区二区三区 | 91欧美在线 | 精品国产三级 | 成人二区| 午夜精品视频在线观看 | 99久久这里只有精品 | 久久久久精 | 青青草久久 | 一区二区三区免费网站 | 一级视频网站 | 一级毛片大全免费播放 | 成人一区二区在线观看 | 91精品视频在线播放 | 亚洲高清在线 | 成人免费看片 | 免费视频一区二区 | 日韩不卡 | 亚洲精品国产精品国自产 | 久久久久久久9 | 欧美第一视频 | 久久精品视频一区 | 久久精品成人一区二区三区蜜臀 | 亚洲激情视频 | 日韩欧美综合 | 欧美视频精品 | 欧洲亚洲视频 | 精品成人在线 | 精品国产一区二区三区在线观看 | 成人免费在线观看 | 亚洲无吗天堂 | 成人av播放| 欧美高清成人 | 日韩一区二区三区在线视频 | 在线久草 | 色吊丝2288sds中文字幕 | 日本一区二区精品 | 欧美精品日韩 | 国产精品视频导航 | 日韩精品一区二区三区 | 久久精品123 | 亚洲成人免费视频 | 精品久久一区二区三区 | 欧美日韩在线免费观看 | baoyu123成人免费看视频 | 一级黄色毛片免费 | 国产天堂网 | 国产午夜精品久久久久免费视高清 | 99亚洲| 免费在线观看国产 | 午夜午夜精品一区二区三区文 | 国产视频中文字幕 | 日本久久久一区二区三区 | 在线观看成人高清 | 香蕉av777xxx色综合一区 | 国产精品一区二区三区在线 | 日批免费视频 | 成人午夜sm精品久久久久久久 | 亚洲精品久久久久久久久久久久久 | 亚洲美女视频在线观看 | 嫩草网站在线观看 | 精品一区二区在线观看 | 久久久久国 | 日韩视频在线观看一区 | 亚洲精品在线视频 | www.日韩视频 | 精品国产乱码久久久久久蜜臀 | 91av爱爱 | 久久成人18免费网站 | 后进极品白嫩翘臀在线视频 | 成人午夜电影网 | 中文字幕亚洲视频 | 九九热精品视频 | 精品国产青草久久久久福利 | 亚洲国内精品 | 亚洲一区中文字幕在线 | 欧美大片一区 | 中文字幕国产 | 欧美二区三区视频 | 日本三级电影免费 | 国产视频精品在线观看 | 久久精品久久久久久久久久16 | 精品一区二区三区免费 | 福利亚洲 | 免费成人在线视频网站 | 国产中文字幕一区 | 色欧美日韩 | 亚洲精品久久久久久下一站 | 国产美女久久 | 99视频在线播放 | 夜夜骑首页 | 色婷婷久久 | 欧美精品成人一区二区三区四区 | 91视频国产网站 | 成人精品久久久 | 男人天堂视频网 | xnxx 美女19| 亚洲成人精品影视 | 成人在线免费 | 国产日韩精品入口 | 久在线视频 | 国产精品亚洲成在人线 | 国产精品片aa在线观看 | 久久国产精品亚洲 | 久久国产成人 | 久草新视频在线观看 | 色婷婷综合在线 | 婷婷激情五月 | 91精品国产一区二区 | 国产精品25p | 中文在线一区二区 | 在线观看污片 | 九九精品视频在线观看 | 日韩欧美国产一区二区三区 | 99re6热在线精品视频播放 | 午夜精品久久久久 | 国产一区二区三区免费播放 | 日韩一区二区不卡 | 伊人yinren22综合开心 | 日韩中文字幕在线 | 成人免费视频观看视频 | 精品久久国产 | 国产真实乱全部视频 | 在线看国产| 午夜精品影院 | 国产美女在线播放 | 久久久.com| 麻豆精品一区二区 | 91av国产在线视频 | 精品一区二区av | 国产精品777一区二区 | 91尤物网站网红尤物福利 | 91在线免费观看 | 在线免费国产 | 欧美一区二区三区精品 | 国产精品一区二区在线看 | 国产伦精品一区二区三区四区视频 | 81精品国产乱码久久久久久 | 欧美福利一区二区 | 欧美视频免费 | 亚洲黄色一区二区 | 日韩一片 | 亚洲国产网站 | 成人v片| 欧美一区二区三区精品 | 99在线视频播放 | 91高清免费看 | 亚洲高清视频在线观看 | 国产精品一区二区三区在线播放 | 日韩免费在线视频 | 欧美久久精品一级c片 | 国产在线小视频 | 日韩福利在线 | 国产视频福利在线观看 | 亚洲毛片在线观看 | 天天夜操| 亚洲一区二区三区四区 | 操人网站 | 精品视频一区二区 | 午夜tv免费观看 | 欧美日韩激情在线一区二区三区 | sis001亚洲原创区 | av不卡电影在线观看 | 一区二区日韩精品 | 日韩av免费在线播放 | 亚洲国产日韩a在线播放性色 | 亚洲精品久久一区二区三区 | 免费看毛片的网站 | 欧美全黄 | 精品自拍视频 | 正在播放国产精品 | 久久大陆| 日本亚洲精品成人欧美一区 | 在线播放亚洲 | 国产97在线 | 亚洲 | 精品国产91乱码一区二区三区 | 日韩久久网 | 欧美精品免费在线 | 亚洲男人的天堂在线观看 | 欧美激情视频一区二区三区 | 狠狠操操| 亚洲美女视频 | 日韩国产 | 亚洲午夜在线 | www.国产精品 | 中文字幕一区二区三区四区 | 欧美在线播放 | 色婷婷av一区二区三区大白胸 | 97久久久 | 国产视频久久 | 欧美视频二区 | 欧美日韩视频在线第一区 | 国产精品91av | 亚洲成人毛片 | 成人在线视频观看 | 精品久久久久一区二区国产 | 精品视频一区在线观看 | 91久久久久 | 51国产午夜精品免费视频 | 欧美日韩在线看 | 成人在线视频网站 | 中文字幕一二三区 | 男人亚洲天堂网 | 91人人| 久久久精品网站 | 成人午夜激情 | 亚洲毛片| 国产一区二区精品在线观看 | 日韩一区欧美 | 精品国产乱码久久久久久1区2区 | 91精品久久久久久久久 | 久久久久久1| 国产伦精品一区二区三区四区视频 | 免费高清一级毛片 | 国产精品久久久久aaaa九色 | 精品日韩欧美 | 久久99这里只有精品 | 欧美精品片 | 久久一二三四 | 亚洲成人黄色 | 亚洲综合视频一区 | 色综合久久久久 | 色综合久久久久 | 最新免费视频 | 成人一级片视频 | 夜夜爽99久久国产综合精品女不卡 | 亚洲欧美精品一区二区三区 | 午夜免费影院 | 一本色道精品久久一区二区三区 | 国产真实精品久久二三区 | 一a毛片| 涩涩视频在线看 | 亚洲国产精品区 | 91久久91久久精品免观看 | 欧美日本免费 | 一二三区精品 | 天天澡天天狠天天天做 | 成人激情视频在线播放 | 国产婷婷精品 | 91精品国产色综合久久不卡98 | 亚洲大尺度视频 | 日韩一区二区三区av | 日韩专区视频 | 久久久久久久国产 | 国产日韩一区二区三免费高清 | 欧美精品久久久 | 精品国产91亚洲一区二区三区www | 国产精品毛片 | 成人免费视频网站在线观看 | 久久婷婷麻豆国产91天堂 | 视频一区免费观看 | 国产中文视频 | 永久黄网站色视频免费 | 日本欧美久久久久免费播放网 | 国产传媒在线视频 | 日本中文字幕一区 | 97人人爱| 国产精品丝袜视频 | 91av在线免费看 | 亚洲精品美女视频 | 女人毛片 | 国产精品久久久久免费a∨ 欧洲精品一区 | 激情欧美一区二区三区中文字幕 | 538在线精品 | 国产日韩亚洲欧美 | 黄色一级在线观看 | 精品日韩欧美一区二区三区在线播放 | av大片 | 久久黄色 | 欧美精品一区自拍a毛片在线视频 | 一区在线视频 | 国产日韩精品一区二区 | 一区二区三区四区日韩 | 一区二区三区国产好 | 亚洲av毛片一级二级在线 | 亚洲一区成人在线观看 | 久久av一区 | www.久久精品 | 波多野结衣一区在线观看 | 精品国产不卡一区二区三区 | 久久九 | 亚洲精品视频在线播放 | 天天干狠狠干 | 一级电影院 | 亚洲狠狠爱一区二区三区 | 亚洲狠狠久久综合一区77777 | 久久先锋 | 亚洲精品成人悠悠色影视 | 国内精品99 | 亚洲欧美一区二区三区在线 | 日韩欧美在线一区二区 | 精品免费一区二区 | 日韩欧美a级v片免费播放 | 日韩在线观看一区 | 99精品欧美一区二区三区综合在线 | 涩久久 | 日韩国产免费观看 | 91成人免费看| 亚洲精品一区久久久久久 | 欧美视频第一页 | 一级黄色毛片免费 | 精品在线视频观看 | 国产福利片在线观看 | 一级欧美在线 | 日日干夜夜操 | 精品在线视频一区 | 日本一区二区三区四区 | 中文字幕在线精品 | 国产精品成av人在线视午夜片 | 黄色一级毛片 | 国产偷自视频区视频 | 国产亚洲视频在线观看 | 国产午夜精品美女视频明星a级 | 国产精品女人视频 | 亚洲精品国产综合 | 美女视频一区 | 北条麻妃一区二区三区在线 | 国产精品日韩欧美一区二区三区 | 日韩1 | 欧美一区二区三区四区不卡 | 国产精品久久免费观看spa | 超碰激情 | 国产一区二区黑人欧美xxxx | jjzz18国产 | 国产一区 | 在线中文字幕av | 欧美精品一区二区三区在线 | 成人精品视频一区二区三区 | 亚洲精品日韩精品 | 在线欧美亚洲 | 日韩a∨| 久久久久久久久久久久网站 | 色综合久久久久 | 欧美一区二区三区在线 | 久久国产区 | 欧美国产日韩一区 | 古典武侠第一页久久777 | 成人高清视频在线 | 97国产在线 | 久久窝| 亚洲成人免费在线观看 | 青青久视频 | 日韩一区中文字幕 | 色偷偷噜噜噜亚洲男人 | 久久社区 | 亚洲精品一区二区三区在线 | avmans最新导航地址 | 国产成人精品一区二 | av在线第一页| 福利网站在线观看 | 一级黄色片在线 | 国产欧美一区二区 | 久久不射电影网 | 午夜影院免费版 | 高清一区二区 | www.黄色片视频 | 久久亚洲一区 | 成人av片在线观看 | 国产综合视频在线观看 | 久久久久久成人 | 国产免费av在线 | 激情福利视频 | 成人免费视频网 | 国产福利视频在线观看 | 中国91视频 | 久久99精品国产.久久久久 | 国产视频二 | 在线看一级片 | 亚洲国产精品久久久男人的天堂 | 精品国产一区二区三区久久久蜜月 | 精品国产乱码久久久久久1区2区 | 欧美3区| 91免费在线看 | 亚洲精品在线免费看 | 色综合一区二区三区 | 中字一区| 久久午夜影院 | 久久天堂 | 亚洲高清视频在线观看 | 91麻豆精品国产91久久久久 | 九九热这里都是精品 | 毛片免费观看 | 三级在线观看 | 成人欧美一区二区三区在线播放 | 国产91视频一区二区 | 婷婷五综合 | 国产一区二区三区免费播放 | 欧美精品福利视频 | 中文字幕二区 | 伊人狠狠 | 久久99精品久久久久久琪琪 | 国产日韩一区二区 | 成人欧美一区二区三区 | a级在线 | 中文字幕不卡在线88 | 999精品在线 | 欧美日韩精品在线 | 日韩福利视频导航 | 黄色国产大片 | 一区二区三区成人 | 国产伦精品一区二区三区四区视频 | 在线视频一区二区三区 | 午夜免费小视频 | 香蕉大人久久国产成人av | 中文av在线播放 | 欧洲美女7788成人免费视频 | 欧美日韩成人在线播放 | 久久青青 | 中文字幕一区日韩精品欧美 | 亚洲日韩中文字幕一区 | 国产18av| 欧美一性一交 | 亚洲欧洲免费视频 | 国产一区二区三区免费看 | 久久人爽 | 久久99深爱久久99精品 | 国语av在线 | 天天干人人 | 欧美精品一区二区三区在线四季 | 欧美三级视频在线播放 | 国产精品久久一区 | 亚洲国产精品久久久久婷婷老年 | 91精品国产一区二区 | 国产精品污www在线观看 | 久久久久久国产精品 | 免费看的黄色网 | 久久亚洲国产精品日日av夜夜 | 综合精品久久久 | va在线观看 | 午夜午夜精品一区二区三区文 | 久久伊| 午夜精品一区 | 国产不卡视频在线观看 | 国产做a爱片久久毛片 | 国产亚洲欧美一区 | 国产xvideos免费视频播放 | 免费一级毛片 | 免费日韩av | 久草免费福利 | 国产图区 | 99精品一级欧美片免费播放 | 亚洲精品久久久久久久久久久 | 国产一级一级片 | 黄色日本视频 | 欧美9999| 亚洲精品一区在线观看 | 国产精品日本一区二区在线播放 | 国产成人免费视频网站视频社区 | 伊人网站 | 久久精品色欧美aⅴ一区二区 | 国产精品二区三区 | 国产做a | 欧美日韩精品一区二区 | av片在线观看 | 亚洲网色 | av在线免费观看网站 | 亚洲综合社区 | 手机看片国产精品 | 欧美亚洲专区 | 1000部精品久久久久久久久 | 久久久久久久久久久免费视频 | 亚洲高清www | 一区二区国产精品 | 久久综合久久久 | 国产免费黄视频 | 久久国内 | 国产高清第一页 | 天天综合网7799精品 | 久久久精品影院 | 免费国产视频在线观看 | 日韩精品在线观看视频 | 国产高清视频 | 国产高清精品一区二区三区 | 精国产品一区二区三区四季综 | 中文字幕久久综合 | 色吊丝在线| 精品xxxx户外露出视频 | 久久精品一区二区三区四区 | 久久精品中文字幕 | av手机在线播放 | 九九免费视频 | 欧美精品导航 | 一区二区成人 | 免费看国产一级特黄aaaa大片 | 国产精品一区一区三区 | 黑人巨大精品欧美一区二区小视频 | 亚洲 欧美 日韩 精品 | 日韩一本 | 龙珠z国语291集普通话 | 久久久久久亚洲精品 | 国产专区一区 | 日本在线免费 | 日韩欧美精品区 | 91精品一区二区三区久久久久久 | 伊人干综合 | 欧美性hd | 成年人免费在线视频 | 九九热热九九 | 日本在线视频一区 | 国产欧美精品区一区二区三区 | 亚洲国产精品视频 | 欧美三级视频 | 欧美一级二级三级视频 | 国产精品久久影院 | 久久成人av | 一区二区视屏 | 在线草| av在线精品 | 国产视频精品视频 | 欧美视频一区二区 | 91在线观看网站 | 台湾av片 | 久久人妖 | 欧美男人的天堂 | 亚洲一区二区中文 | 欧美大片一区二区 | 九色在线 | 91精品久久久久久久久久 | 在线视频中文字幕 | 夜夜春精品视频高清69式 | 狠狠操麻豆 | 成人影院av | 国产激情视频在线观看 | 日韩精品在线网站 | 成人免费一区二区三区视频网站 | 久久综合爱 | 伊人久久爱| 天天操夜夜操免费视频 | 亚洲国产精品成人 | 久久亚洲精品国产一区 | 免费毛片视频 | 在线看免费观看日本 | www.久久精品| 国产成人在线电影 | 黄色小视频免费观看 | 一区二区免费 | 亚洲一区久久 | 久久99国产精品 | 三级黄色片在线免费观看 | 国产一级毛片在线视频 | 国产成人精品一区二区三区四区 | 99精品视频免费在线观看 | 国产精品久久久久久久久久东京 | 国产精品久久久久久久久污网站 | 欧美视频在线免费 | 免费爱爱视频 | 国产精品成av人在线视午夜片 | 噜噜噜视频在线观看 | 伊人免费网| 欧美一区视频 | 亚洲人成人一区二区在线观看 | 久久久久久毛片免费播放 | 亚洲综合一区二区三区 | 狠狠操综合网 | 色婷婷久久久久swag精品 | 欧美日韩在线免费观看 | 欧美精品在线一区二区三区 | 成人影院av | 欧美日韩久久精品 | 成人在线免费视频观看 | 天堂中文资源在线 | 女人毛片a毛片久久人人 | 成人欧美一区二区三区白人 | 免费看片一区二区三区 | 免费毛片网站 | 99精品欧美一区二区三区综合在线 | 亚洲国产精品久久久久婷婷老年 | 亚洲人成人一区二区在线观看 | 日精品 |