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

aurain
技術(shù)文摘
posts - 137,  comments - 268,  trackbacks - 0
關(guān)于輸入部分,我們將詳細(xì)介紹關(guān)于輸入函數(shù)的各種結(jié)構(gòu),通過(guò)一個(gè)例子來(lái)說(shuō)明輸入函數(shù)及其相關(guān)結(jié)構(gòu)是怎么放在PE文件中的。以及如何在PE文件中找到這些東西。

一 找到輸入部分在文件中位置。

1.1 得到PE Header在文件中的位置。
    通過(guò)DOS Header結(jié)構(gòu)的成員e_lfanew,可以確定PE Header的在文件中的位置。

1.2 得到文件中節(jié)的數(shù)目。
    確定PE Header的在文件中的位置之后,就可以確定PE Header中的成員FileHeader和成員OptionalHeader在文件中的位置。根據(jù) FileHeader 中的 成員NumberOfSections 的值,就可以確定文件中節(jié)的數(shù)目,也就是節(jié)表數(shù)組中元素的個(gè)數(shù)。

1.3 得到節(jié)表在文件中的位置。
    PE Header在文件中的位置加上PE Header結(jié)構(gòu)的大小就可以得到節(jié)表在文件中的開(kāi)始位置。PE Header結(jié)構(gòu)的大小可以由Signature的大小加上FileHeader的大小再加上FileHeader中的SizeOfOptionalHeade來(lái)確定。其實(shí)到目前為止SizeOfOptionalHeade也就是結(jié)構(gòu)Optional Header的大小也是固定的,所以整個(gè)PE Header結(jié)構(gòu)的大小也是固定。不過(guò)為了安全起見(jiàn),還是用Signature的大小加上FileHeader的大小再加上FileHeader中的SizeOfOptionalHeade來(lái)確定比較保險(xiǎn)。

1.4 得到輸入部分在文件中的位置。
    第1.2步中我們確定了文件中節(jié)的數(shù)目,第1.3步中我們確定了節(jié)表在文件中的位置。
    現(xiàn)在來(lái)確定輸入部分在文件中的位置。
    取得PE Header中的Optional Header中的DataDirectory數(shù)組中的第二項(xiàng),
也就是輸入部分項(xiàng)。DataDirectory[]數(shù)組的每項(xiàng)都是IMAGE_DATA_DIRECTORY結(jié)構(gòu),該結(jié)構(gòu)定義如下。
typedef struct _IMAGE_DATA_DIRECTORY {
DWORD VirtualAddress;
DWORD Size;
} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
取得DataDirectory數(shù)組中的第二項(xiàng)中的成員VirtualAddress的值。這個(gè)值就是在內(nèi)存中資源節(jié)的RVA。
如果這個(gè)RVA的值為0表示這個(gè)PE文件中沒(méi)有輸入部分。
然后根據(jù)節(jié)的數(shù)目,遍歷節(jié)表數(shù)組。也就是從0到(節(jié)表數(shù)-1)的每一個(gè)節(jié)表項(xiàng)。
每個(gè)節(jié)在內(nèi)存中的RVA的范圍是從該節(jié)表項(xiàng)的成員VirtualAddress字段的值開(kāi)始(包括這個(gè)值),
到VirtualAddress+Misc.VirtualSize的值結(jié)束(不包括這個(gè)值)。
我們遍歷整個(gè)節(jié)表,看我們?nèi)〉玫妮斎氩糠值腞VA,在哪個(gè)節(jié)表項(xiàng)的RVA范圍之內(nèi)。
如果在范圍之內(nèi),就找到了輸入部分所在節(jié)的節(jié)表項(xiàng)。
這個(gè)節(jié)表項(xiàng)中的 PointerToRawData 中的值,就是輸入部分所在節(jié)在文件中的位置。這個(gè)節(jié)表項(xiàng)中的VirtualAddress 中的值,就是輸入部分所在節(jié)在內(nèi)存中的RVA。用輸入部分的RVA減去輸入部分所在節(jié)的RVA,就可以得到輸入部分在該節(jié)內(nèi)偏移。用這個(gè)偏移加上該節(jié)的在文件中的位置,就可以得到輸入部分在文件中的位置。即DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress - SectionTable[i].VirtualAddress + SectionTable[i].PointerToRawData 。

這樣我們就得到了輸入部分在文件中開(kāi)始的位置。

二 PE文件中的輸入部分。

    輸入部分,如果要調(diào)用別的PE文件中的輸出函數(shù),需要那些東西呢?首先需要知道所需函數(shù)在哪個(gè)文件中,比如函數(shù) NtRaiseHardError 就在PE文件 ntdll.dll 中。所以我們需要一個(gè)文件名。而如何找到某個(gè)函數(shù)的入口地址呢,我們還需要知道該函數(shù)的函數(shù)名,或者改函數(shù)的序號(hào),通過(guò)這兩者的任一種,我們就可以找到該函數(shù)的入口地址(如果不知道為什么,請(qǐng)看 JIURL PE 格式學(xué)習(xí)總結(jié)(二)-- PE文件中的輸出函數(shù))。所以我們還需要函數(shù)名或者序號(hào),這兩者之一。PE文件的輸入部分,有這些內(nèi)容。我們還可以想到,當(dāng)一個(gè)PE文件被執(zhí)行的時(shí)候,它會(huì)把所用的輸入函數(shù)所在的每一個(gè)文件載入內(nèi)存,并且,根據(jù)函數(shù)名或者序號(hào),獲得每一個(gè)輸入函數(shù)的入口地址,存放起來(lái),在程序執(zhí)行的時(shí)候使用。還有就是,一個(gè)可執(zhí)行文件一般都使用好幾個(gè)PE文件(通常是dll)的輸出函數(shù)。所以需要有多個(gè)dll(就說(shuō)成dll吧,提供輸出函數(shù)的PE文件差不多都是dll,下面就按dll說(shuō))的相關(guān)信息。

    前面我們已經(jīng)得到了輸入部分在文件中開(kāi)始的位置,在輸入部分的最開(kāi)始,是一個(gè)IMAGE_IMPORT_DESCRIPTOR 結(jié)構(gòu)數(shù)組,這個(gè)數(shù)組的最后一個(gè)元素內(nèi)容全為空,標(biāo)示著這個(gè)數(shù)組的結(jié)束,這個(gè)數(shù)組的每個(gè)元素,保存著一個(gè)dll的相關(guān)信息。緊跟著這個(gè)IMAGE_IMPORT_DESCRIPTOR數(shù)組的是幾個(gè)緊挨著的DWORD數(shù)組, 數(shù)組的每個(gè)元素存有函數(shù)名字符串的RVA,或者直接保存序號(hào),每個(gè)數(shù)組的最后一項(xiàng)為空,標(biāo)示結(jié)束。這幾個(gè)數(shù)組之后,緊跟著的是dll名字的字符串和各個(gè)輸入函數(shù)名結(jié)構(gòu)。 

IMAGE_IMPORT_DESCRIPTOR 結(jié)構(gòu)在WINNT.H中定義如下。

typedef struct _IMAGE_IMPORT_DESCRIPTOR {
union {
DWORD Characteristics; // 0 for terminating null import descriptor
DWORD OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
};
DWORD TimeDateStamp; // 0 if not bound,
// -1 if bound, and real date\time stamp
// in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
// O.W. date/time stamp of DLL bound to (Old BIND)

DWORD ForwarderChain; // -1 if no forwarders
DWORD Name;
DWORD FirstThunk; // RVA to IAT (if bound this IAT has actual addresses)
} IMAGE_IMPORT_DESCRIPTOR;

這個(gè)結(jié)構(gòu)長(zhǎng)度為20個(gè)字節(jié),共有5個(gè)字段。
各字段含義如下:

OriginalFirstThunk:(在WINNT.H中Characteristics這個(gè)叫法已經(jīng)不對(duì)了)這里實(shí)際上保存著一個(gè)RVA,這個(gè)RVA指向一個(gè)DWORD數(shù)組,這個(gè)數(shù)組可以叫做輸入查詢(xún)表。每個(gè)數(shù)組元素,或者叫一個(gè)表項(xiàng),保存著一個(gè)指向函數(shù)名的RVA或者保存著一個(gè)函數(shù)的序號(hào)。
TimeDateStamp:當(dāng)這個(gè)值為0的時(shí)候,表明還沒(méi)有bind。不為0的話,表示已經(jīng)bind過(guò)了。有關(guān)bind的內(nèi)容后面介紹。
ForwarderChain:
Name:一個(gè)RVA,這個(gè)RVA指向一個(gè)ascii以空字符結(jié)束的字符串,這個(gè)字符串就是本結(jié)構(gòu)對(duì)應(yīng)的dll文件的名字。
FirstThunk:一個(gè)RVA,這個(gè)RVA指向一個(gè)DWORD數(shù)組,這個(gè)數(shù)組可以叫輸入地址表。如果bind了的話,這個(gè)數(shù)組的每個(gè)元素,就是一個(gè)輸入函數(shù)的入口地址。

輸入查詢(xún)表,就是OriginalFirstThunk所指向的那個(gè)DWORD數(shù)組,它的每一個(gè)元素是一個(gè)DWORD值,當(dāng)最高位為1時(shí),低31位中的值,就是一個(gè)序號(hào)。當(dāng)最高位為0時(shí),這個(gè)元素的值就是一個(gè)指向一個(gè)輸入函數(shù)名結(jié)構(gòu)的RVA。這個(gè)數(shù)組的最后一個(gè)元素值為空,表示數(shù)組的結(jié)束。

輸入函數(shù)名結(jié)構(gòu),在WINNT.H中定義如下。

typedef struct _IMAGE_IMPORT_BY_NAME {
WORD Hint;
BYTE Name[1];
} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;

這個(gè)結(jié)構(gòu)的長(zhǎng)度不定,有兩個(gè)成員。第一個(gè)成員是一個(gè)WORD類(lèi)型,長(zhǎng)2個(gè)字節(jié),保存著輸入函數(shù)的序號(hào)。第二個(gè)成員是一個(gè)ascii字符串,這個(gè)字符串是輸入函數(shù)的名字。為了保證字對(duì)齊,可能會(huì)在ascii結(jié)束符\0之后再填充一個(gè)\0。比如,1b 01 4e 74 54 65 72 6d 69 6e 61 74 65 50 72 6f 63 65 73 73 00 00 ,如果不填充最后一個(gè)00的話,長(zhǎng)度為21個(gè)字節(jié),不是字對(duì)齊。所以要填充一個(gè)00。

輸入地址表,就是FirstThunk所指向的那個(gè)DWORD數(shù)組,它的每一個(gè)元素是一個(gè)DWORD值。如果程序已經(jīng)bind了的話,(判斷依據(jù)是TimeDateStamp,TimeDateStamp為0則沒(méi)有bind)那么這里的每個(gè)元素的值,就是一個(gè)輸入函數(shù)的入口地址。如果沒(méi)有bind的話,那么在本pe文件執(zhí)行時(shí),載入器會(huì)載入dll文件,獲得每一個(gè)輸入函數(shù)的入口地址,并填入這個(gè)輸入地址表的每一項(xiàng)中。(這些是我猜的,大家但愿我猜對(duì)吧)這個(gè)數(shù)組的最后一個(gè)元素值為空,表示數(shù)組的結(jié)束。

bind,從上面的介紹中可以看到,如果沒(méi)有bind的話,每次pe文件被執(zhí)行時(shí),載入器都要查詢(xún)一遍每個(gè)函數(shù)的入口地址,所以為了優(yōu)化這一點(diǎn),就有了bind,把入口點(diǎn)直接存在輸入地址表中。

載入器會(huì)載入所需要的dll。注意一下沒(méi)有bind的情況下,載入器對(duì)輸入部分所要做的事情。總之,在載入之后,所需的dll(根據(jù)文件名)已經(jīng)都被載入到內(nèi)存。并且輸入地址表中的每一個(gè)元素都是一個(gè)輸入函數(shù)的入口地址了。

下面我們來(lái)看一個(gè)例子,通過(guò)例子就可以明白是怎么回事了。

我們的例子是Win2k中的exe文件csrss.exe。為了防止大家版本不同,本文附帶了這個(gè)PE文件。

每個(gè)結(jié)構(gòu)的不同成員用 / 分開(kāi)。每行是一個(gè)結(jié)構(gòu)。可以用16進(jìn)制編輯器打開(kāi)附帶的 routetab.dll 對(duì)照著看。
括號(hào)中內(nèi)容為注釋。

用開(kāi)始講到的尋找輸入部分在文件中位置的方法,我們找到了輸入部分在文件中的位置為000008DCh。
我們來(lái)計(jì)算一下第一個(gè)IMAGE_IMPORT_DESCRIPTOR中的OriginalFirstThunk,Name,F(xiàn)irstThunk。
輸入部分所在節(jié)的開(kāi)始rva(由DataDirectory[2]得到)為1000h。輸入部分在節(jié)在文件中的位置為600h。
Name為rva(值從結(jié)構(gòu)中可以看到是0000135e,如果你不明白為什么是0000135e而不是5e130000的話,請(qǐng)看 《JIURL PE 格式學(xué)習(xí)總結(jié)(一)》中關(guān)于 big-endian和little-endian的介紹),則Name相對(duì)于所在節(jié)開(kāi)始處的偏移為135e-1000。而Name在文件中的位置為Name在相對(duì)于所在節(jié)開(kāi)始的偏移加上所在節(jié)開(kāi)始處在文件中的位置。所以Name在文件中的位置為135eh-1000h+600h=95eh。同樣方法我們可以算出, OriginalFirstThunk:
1318-1000+600=918。FirstThunk:1000-1000+600=600。

000008DC: 18 13 00 00 / ff ff ff ff / ff ff ff ff / 5e 13 00 00 / 00 10 00 00 
(結(jié)構(gòu)IMAGE_IMPORT_DESCRIPTOR,每個(gè)代表一個(gè)dll。可以看到兩個(gè)IMAGE_IMPORT_DESCRIPTOR,所以本PE文件的輸入函數(shù),是由兩個(gè)dll提供的。第三個(gè)全為空,表示結(jié)束。)
000008F0: 20 13 00 00 / ff ff ff ff / ff ff ff ff / c2 13 00 00 / 08 10 00 00 
(結(jié)構(gòu)IMAGE_IMPORT_DESCRIPTOR)
00000904: 00 00 00 00 / 00 00 00 00 / 00 00 00 00 / 00 00 00 00 / 00 00 00 00  
(全為空,表示結(jié)束IMAGE_IMPORT_DESCRIPTOR數(shù)組結(jié)束)
00000918: 44 13 00 00 (文件中的地址為1344-1000+600=944,指向一個(gè)輸入函數(shù)名結(jié)構(gòu))
0000091C: 00 00 00 00 (為空,一個(gè)輸入查詢(xún)表結(jié)束)
00000920: 84 13 00 00 (文件中的地址為1384-1000+600=984,指向一個(gè)輸入函數(shù)名結(jié)構(gòu))
00000924: 98 13 00 00 (1398-1000+600=998)
00000928: 6a 13 00 00 (136a-1000+600=96a)
0000092C: ae 13 00 00 (13ae-1000+600=9ae)
00000930: cc 13 00 00 (13cc-1000+600=9cc)
00000934: dc 13 00 00 (13dc-1000+600=9dc)
00000938: ee 13 00 00 (13ee-1000+600=9ee)
0000093C: 0e 14 00 00 (140e-1000+600=a0e)
00000940: 00 00 00 00 (為空,一個(gè)輸入查詢(xún)表結(jié)束)
00000944: 18 00 / 43 73 72 53 65 72 76 65 72 49 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 00
(輸入函數(shù)名結(jié)構(gòu) IMAGE_IMPORT_BY_NAME hint為18 Name為 "CsrServerInitialization.")
0000095E: 43 53 52 53 52 56 2e 64 6c 6c 00 00 
(第一個(gè)IMAGE_IMPORT_DESCRIPTOR的Name指向這里"CSRSRV.dll")
0000096A: 00 01 / 4e 74 53 65 74 49 6e 66 6f 72 6d 61 74 69 6f 6e 50 72 6f 63 65 73 73 00
("NtSetInformationProcess.")
00000984: 1c 01 / 4e 74 54 65 72 6d 69 6e 61 74 65 54 68 72 65 61 64 00
00000998: 1b 01 / 4e 74 54 65 72 6d 69 6e 61 74 65 50 72 6f 63 65 73 73 00 00
000009AE: d8 00 / 4e 74 52 61 69 73 65 48 61 72 64 45 72 72 6f 72 00 00
000009C2: 6e 74 64 6c 6c 2e 64 6c 6c 00
000009CC: 0d 00 / 44 62 67 42 72 65 61 6b 50 6f 69 6e 74 00 
000009DC: 4a 01 / 52 74 6c 41 6c 6c 6f 63 61 74 65 48 65 61 70 00
000009EE: 85 02 / 52 74 6c 55 6e 69 63 6f 64 65 53 74 72 69 
6e 67 54 6f 41 6e 73 69 53 74 72 69 6e 67 00 00
00000A0E: 30 02 / 52 74 6c 4e 6f 72 6d 61 6c 69 7a 65 50 72 6f 63 65 73 73 50 61 72 61 6d 73 00
00000A2A: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000A3A: ...

00000600: 38 1f f8 5f 
00000604: 00 00 00 00 (為空,一個(gè)輸入地址表結(jié)束)
00000608: 6d f0 f8 77
0000060C: d8 c3 f8 77
00000610: a5 b7 f8 77
00000614: 38 a4 f9 77
00000618: df f9 f9 77
0000061C: 6b 97 fc 77
00000620: ec e5 f8 77
00000624: 18 2c f9 77
00000628: 00 00 00 00 (為空,一個(gè)輸入地址表結(jié)束)

本例比較可惜的是,在兩個(gè)輸入查詢(xún)表中,都是函數(shù)名結(jié)構(gòu)的RVA,沒(méi)有直接的序號(hào)(是序號(hào)還是RVA的判別方法為,看最高位是否為1,為1,其余部分表示序號(hào)。為0,整個(gè)字段表示RVA)。

三 遍歷PE文件中的輸入

    用while循環(huán),遍歷IMAGE_IMPORT_DESCRIPTOR數(shù)組的每個(gè)元素(每個(gè)可以找到一個(gè)dll的信息和該dll提供的輸入函數(shù))。當(dāng)某元素的值都為空時(shí),表示遍歷到了數(shù)組的最后。而對(duì)于IMAGE_IMPORT_DESCRIPTOR數(shù)組的一個(gè)元素,再用while循環(huán),遍歷IMAGE_IMPORT_DESCRIPTOR中,兩個(gè)RVA所指的兩個(gè)DWORD數(shù)組,輸入查詢(xún)表和輸入地址表。判斷結(jié)束的條件也是看,是否數(shù)組元素的值已經(jīng)為空了。也就是while(..){..while(..){}..}這樣就可獲得每一個(gè)有關(guān)輸入的內(nèi)容。

    實(shí)現(xiàn)遍歷輸入的源程序,可以參考 PEDUMP - Matt Pietrek 1995 。《Windows95系統(tǒng)程式設(shè)計(jì)大奧秘》附書(shū)源碼中有。


本文所使用的PE文件csrss.exe

posted on 2009-06-29 13:56 閱讀(580) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Windows開(kāi)發(fā)

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(17)

隨筆分類(lèi)(138)

隨筆檔案(137)

網(wǎng)絡(luò)開(kāi)發(fā)

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 502449
  • 排名 - 37

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一区二区三区不卡视频在线观看| 久久九九精品| 欧美在线视频网站| 激情成人亚洲| 女人天堂亚洲aⅴ在线观看| 最新亚洲电影| 一本色道久久88综合日韩精品| 欧美日韩精品一区二区在线播放| 亚洲午夜av电影| 久久亚洲综合网| 日韩一区二区高清| 国产精品日韩一区二区| 久久精品动漫| 亚洲精品国久久99热| 午夜视频久久久| 亚洲国产毛片完整版| 欧美视频在线观看免费| 久久国产日韩欧美| 亚洲精品婷婷| 欧美一区二区精品在线| 最新精品在线| 国产伦精品一区二区| 你懂的视频一区二区| 亚洲一区二区在线| 亚洲福利电影| 久久久福利视频| 宅男66日本亚洲欧美视频 | 欧美精品在线视频观看| 亚洲一二三区在线观看| 欧美激情一区二区久久久| 午夜激情综合网| 亚洲欧洲精品一区二区精品久久久| 国产精品国产自产拍高清av| 久久天堂精品| 午夜精品影院在线观看| 亚洲国产精品va在线看黑人动漫 | 久久九九精品| 亚洲图片欧美日产| 亚洲欧洲一区二区在线播放| 国产欧美一区二区精品忘忧草| 欧美激情第三页| 久久综合久久久久88| 亚洲欧美视频在线| 亚洲最快最全在线视频| 亚洲第一精品影视| 久久最新视频| 久久国产精品久久久久久| 亚洲视频免费在线| 亚洲精品在线观看免费| 亚洲高清一二三区| 国产一区二区三区在线观看视频 | 久久国产色av| 亚洲欧美日韩精品久久久久| 日韩一级成人av| 亚洲激情av| 亚洲国产精品久久久久久女王| 久久综合久久综合九色| 久久久国产精品亚洲一区 | 亚洲欧美经典视频| 中日韩在线视频| 日韩亚洲视频在线| 亚洲人精品午夜在线观看| 亚洲国产成人精品久久| 欧美r片在线| 欧美二区在线看| 欧美激情精品久久久久久免费印度| 老司机凹凸av亚洲导航| 久久看片网站| 另类av一区二区| 欧美福利精品| 亚洲高清成人| 亚洲精品自在久久| 一本久久精品一区二区| 亚洲四色影视在线观看| 亚洲一区精品电影| 午夜精品久久99蜜桃的功能介绍| 亚洲一区二区精品在线| 午夜在线视频观看日韩17c| 欧美与欧洲交xxxx免费观看 | 亚洲精品视频中文字幕| 日韩一二三在线视频播| 宅男噜噜噜66一区二区66| 在线亚洲伦理| 亚洲欧美一区二区精品久久久| 午夜视频在线观看一区| 久久久久免费观看| 欧美a级一区二区| 亚洲国产精品久久久久婷婷884 | 一本色道久久综合亚洲二区三区| 亚洲美女电影在线| 亚洲午夜精品在线| 欧美亚洲尤物久久| 久久先锋影音| 欧美连裤袜在线视频| 国产精品久久久久久久久久久久久久 | 国产精品久久二区| 国产视频在线观看一区二区三区| 国内精品久久久久久久果冻传媒 | 91久久精品美女| 一区二区三区欧美激情| 欧美亚洲日本国产| 欧美aⅴ99久久黑人专区| 亚洲三级电影全部在线观看高清| 亚洲网站啪啪| 久久综合影音| 国产精品色在线| 亚洲电影激情视频网站| 亚洲一区在线播放| 久久综合999| 一区二区三区高清在线| 久久国产欧美精品| 欧美日韩亚洲天堂| 黄色亚洲在线| 亚洲一区在线观看免费观看电影高清| 久久国产欧美| 亚洲伦理久久| 久久久久久久久久久一区| 欧美日韩亚洲一区二区三区四区| 国产在线视频不卡二| 日韩亚洲欧美一区| 老巨人导航500精品| 亚洲日本中文字幕区| 午夜在线a亚洲v天堂网2018| 久久久精品动漫| 欧美日韩情趣电影| 在线国产亚洲欧美| 香蕉尹人综合在线观看| 亚洲国产视频a| 久久国产精品久久精品国产| 欧美午夜精彩| 日韩亚洲视频在线| 你懂的网址国产 欧美| 亚洲在线中文字幕| 欧美日韩国产片| 亚洲国产高清自拍| 久久九九电影| 亚洲综合成人在线| 欧美午夜宅男影院| 99国产精品99久久久久久| 久久综合九九| 欧美在线www| 国产欧美一区二区三区沐欲| 亚洲天堂av在线免费观看| 亚洲国产综合91精品麻豆| 久久精品国产亚洲a| 国产日韩在线不卡| 亚洲欧美日韩在线观看a三区| 亚洲精品日韩综合观看成人91| 久久久久在线观看| 国产偷国产偷精品高清尤物| 先锋亚洲精品| 亚洲自拍偷拍一区| 国产精品区二区三区日本 | 一区二区久久| 欧美日韩一区二区三区四区在线观看 | 国际精品欧美精品| 久久精品亚洲| 欧美一级黄色录像| 国产亚洲综合精品| 久久久视频精品| 久久成人精品一区二区三区| 国产日韩欧美制服另类| 欧美专区日韩专区| 欧美一区二区三区在| 国产日韩欧美综合在线| 久久久久久久综合狠狠综合| 久久国产精品一区二区三区| 国产自产v一区二区三区c| 久久久精品999| 久久久久久久97| 91久久久一线二线三线品牌| 亚洲激情一区二区| 欧美日韩午夜剧场| 亚洲欧美激情精品一区二区| 午夜精品www| 在线观看国产日韩| 欧美黄色日本| 欧美三级日韩三级国产三级| 亚洲欧美在线视频观看| 欧美亚洲免费高清在线观看| 黑人一区二区三区四区五区| 欧美国产一区视频在线观看| 欧美激情一区二区在线 | 另类亚洲自拍| 免费在线观看一区二区| 这里只有精品在线播放| 亚洲一区在线直播| 国内外成人免费视频| 亚洲电影免费在线| 欧美午夜寂寞影院| 久久免费国产精品1| 欧美mv日韩mv国产网站app| 一区二区三区四区国产| 午夜精品婷婷| 亚洲精品视频二区| 亚洲自啪免费| 亚洲日本电影| 亚洲综合视频在线| 亚洲国产精品久久久久秋霞影院 | 亚洲精品国产欧美|