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

絕頂技術(shù):斷點+內(nèi)存映射組合的CLR超強Bug?

開發(fā) 前端
CLR調(diào)用C#入口Main的匯編代碼里面下的斷點,運行到.Ctor然后報了異常。這個異常的排查過程如上所示,但是依然有疑惑。就是為啥通過VS調(diào)試C#源代碼則不會報這個異常。難道VS直接運行C#源代碼跟CLR調(diào)用略有不同?

前言

你見過斷點+內(nèi)存映射,制造了一個另類隱藏極深,強悍的BUG嗎?這是一個虛擬機CLR的BUG。不同于之前所遇見的BUG這次費時最多,但是問題已然清晰。本篇來看下。

友情提示:學(xué)會本篇,你就是絕級的高手,足可笑傲當(dāng)世。

概括

1.問題說明

BUG的起因在后面,先看看問題的描述。假如說遇到這樣一個問題,在某個地址(以Addr1表示)下了一個斷點,程序繼續(xù)運行,就會某個地方拋出一個異常,首先確認(rèn)的是這段運行的代碼是完全沒有問題的。也就是說這個異常只會在下了斷點之后,才會拋出。查看堆棧,這個異常非常清晰明了,那就是程序運行過程中某個字段(filed1)的值為0。而通過這個字段也就是field1的空值去訪問field1的成員變量,自然是報了異常。

問題很簡單,似乎馬上就找到了異常出錯的地方,也就是field1==0造成的。但為什么field1會為空?它在哪里被賦值的,導(dǎo)致它是空值?跟下斷點有什么關(guān)系?這些都沒解決。

問題一:field1在哪里被賦值的?

經(jīng)過跟蹤發(fā)現(xiàn),field1是通過Windows API的兩個函數(shù)MapViewOfFileEx,MapViewOfFile進(jìn)行內(nèi)存映射來賦值的。這兩個內(nèi)存映射函數(shù)映射了兩個內(nèi)存地址。

MapViewOfFileEx映射的是可讀,可寫,可執(zhí)行的內(nèi)存地址(以pRX來表示)。也即是:

FILE_MAP_EXECUTE | FILE_MAP_READ | FILE_MAP_WRITE

MapViewOfFile映射的是可讀,可寫的內(nèi)存地址(以pRW來表示),也即是:

FILE_MAP_READ | FILE_MAP_WRITE

當(dāng)往pRW內(nèi)存地址寫入數(shù)值,pRX也同時寫入相應(yīng)的數(shù)值,這就是內(nèi)存映射。這里就是field1被賦值的地方。

問題二:為什么會導(dǎo)致field1空值?

上面說的是,在某個地址也就是上面說的Addr1這個地方下了一個斷點,跟蹤發(fā)現(xiàn),如果不在Addr1處下斷點,那么field1不等于0,也就不會報異常,如果在Addr1處下斷點,那么field1等于0,導(dǎo)致了異常的發(fā)生。

這個BUG很詭異,難道是斷點造成的?

繼續(xù)跟蹤發(fā)現(xiàn),如果在離Addr1偏移量很遠(yuǎn)的地址下斷點,則不會導(dǎo)致了field1==0,如果在Addr1地址上下偏移的地方下斷點(也就是偏移比較近的位置),則會導(dǎo)致field1等于0。難道Addr1地址的上下偏移范圍跟field1有一定的關(guān)聯(lián)?
繼續(xù)跟蹤發(fā)現(xiàn),field的值在Addr1地址的后面,它的值本身也是一個地址。每塊內(nèi)存都有一個起始地址,姑且叫Base。那么filed,Addr1,Base的組成如下圖所示:

圖片圖片

可以看到Addr1和field1的起始地址都是Base,而Base則是被MapViewOfFileEx Windows API內(nèi)存映射的起始地址。Addr1則是被映射的這塊內(nèi)存里面的某個函數(shù)中的某個地址。這里假如說它是程序入口Main函數(shù)的函數(shù)頭地址,也可以是Main函數(shù)中間的某個地址。如下圖:

圖片圖片

因為實際上在Addr1處下了斷點,也即是在被MapViewOfFileEx映射的內(nèi)存地址里面下了斷點。在內(nèi)存映射里面下了斷點,就會導(dǎo)致了通過MapViewOfFile映射的內(nèi)存pRW賦值的時候,pRX會被賦值不上的情況。

pRX和pRW如下圖所示:

圖片圖片

如果把這個斷點,下在MapViewOfFileEx映射的內(nèi)存范圍之外,則不會存在賦值不上的情況。

這里可以確定的就是,在內(nèi)存映射的范圍內(nèi)下斷點,斷點會干擾內(nèi)存映射范圍內(nèi)的數(shù)值。

2.檢測上面結(jié)論是否正確

上面只是問題的分析,如果想要檢驗上面所述BUG問題是否正確。則需要代碼加以輔助證明。

下面是一段內(nèi)存映射的代碼:

#include<stdio.h>
#include<Windows.h>


#define DPTR(type) type*
#define VAL32(x) x
#define HIDWORD(_qw)    ((ULONG)((_qw) >> 32))
#define LODWORD(_qw)    ((ULONG)(_qw))


#define VIRTUAL_ALLOC_RESERVE_GRANULARITY (64*1024) 


typedef DPTR(IMAGE_DOS_HEADER) PTR_IMAGE_DOS_HEADER;
typedef DPTR(IMAGE_NT_HEADERS) PTR_IMAGE_NT_HEADERS;
typedef long long int64_t;
typedef unsigned long long uint64_t;
static const uint64_t MaxDoubleMappedSize = 2048ULL * 1024 * 1024 * 1024;


typedef unsigned __int64 ULONG_PTR, * PULONG_PTR;
typedef ULONG_PTR TADDR;


extern "C" IMAGE_DOS_HEADER __ImageBase;
typedef UINT32  COUNT_T;


template <typename T> inline T ALIGN_UP(T val, size_t alignment)
{
    return (T)ALIGN_UP((size_t)val, alignment);
}


void* GetClrModuleBase()
{
    return (void*)&__ImageBase;
}


IMAGE_NT_HEADERS* FindNTHeaders(TADDR m_base)
{
    return PTR_IMAGE_NT_HEADERS(m_base + VAL32(PTR_IMAGE_DOS_HEADER(m_base)->e_lfanew));
}
COUNT_T GetVirtualSize(TADDR base)
{
    return FindNTHeaders(base)->OptionalHeader.SizeOfImage;
}
void main()
{
    size_t pMaxExecutableCodeSize = (size_t)MaxDoubleMappedSize;


    void* pHandle = CreateFileMapping(
        INVALID_HANDLE_VALUE,    // use paging file
        NULL,                    // default security
        PAGE_EXECUTE_READWRITE | SEC_RESERVE,  // read/write/execute access
        HIDWORD(MaxDoubleMappedSize),                       // maximum object size (high-order DWORD)
        LODWORD(MaxDoubleMappedSize),   // maximum object size (low-order DWORD)
        NULL);


    SIZE_T sizeOfLargePage = GetLargePageMinimum();
    int nCount = 10;
    PVOID pAddr = VirtualAlloc(NULL, sizeOfLargePage * nCount, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);


    MEMORY_BASIC_INFORMATION mbi;
    VirtualQuery(pAddr, &mbi, sizeof mbi);


    void* base = GetClrModuleBase();
    SIZE_T base1 = (SIZE_T)base;
    SIZE_T size = GetVirtualSize((TADDR)base1);
    SIZE_T reach = 0x7FFF0000u;
    BYTE* g_preferredRangeMin = (base1 + size > reach) ? (BYTE*)(base1 + size - reach) : (BYTE*)0;
    BYTE* g_preferredRangeMax = (base1 + reach > base1) ? (BYTE*)(base1 + reach) : (BYTE*)-1;
    
    BYTE* pStart;
    pStart = g_preferredRangeMin + (g_preferredRangeMax - g_preferredRangeMin) / 8;
    pStart += 0x1000 * 0x00000003;
    BYTE* tryAddr = pStart; //(BYTE*)ALIGN_UP((BYTE*)pStart, VIRTUAL_ALLOC_RESERVE_GRANULARITY);


    BYTE* pRX = (BYTE*)MapViewOfFileEx((HANDLE)pHandle,
        FILE_MAP_EXECUTE | FILE_MAP_READ | FILE_MAP_WRITE,
        HIDWORD((int64_t)0),
        LODWORD((int64_t)0),
        0x0000000000010000,
        g_preferredRangeMax);


    VirtualAlloc(pRX, 0x0000000000010000, MEM_COMMIT, PAGE_EXECUTE_READ);


        MEMORY_BASIC_INFORMATION mbInfo;
    VirtualQuery((LPCVOID)pRX, &mbInfo, sizeof(mbInfo));


    void* pRW = (BYTE*)MapViewOfFile((HANDLE)pHandle,
        FILE_MAP_READ | FILE_MAP_WRITE,
        HIDWORD((int64_t)0),
        LODWORD((int64_t)0),
        0x0000000000010000);


    VirtualAlloc(pRW, 0x0000000000010000, MEM_COMMIT, PAGE_READWRITE);


    char abc[] = "abc";
    memcpy(pRW, abc, 3);
    VirtualQuery((LPCVOID)pRX, &mbInfo, sizeof(mbInfo));
}

以上例子,進(jìn)行了一個內(nèi)存模擬映射。通過以上例子,觀察發(fā)現(xiàn)。當(dāng)在pRX所在地址范圍內(nèi)下斷點,則會導(dǎo)致當(dāng)往pRW里面賦值的時候,pRX賦值不上的情況,如下pRX地址處匯編代碼:

Address:00007ff739180000() //pRX Address
00007FF73917FFFC  ?? ?????? 
00007FF73917FFFD  ?? ?????? 
00007FF73917FFFE  ?? ?????? 
00007FF73917FFFF  ?? ?????? 
00007FF739180000  add         byte ptr [rax],al  
00007FF739180002  add         byte ptr [rax],al  
00007FF739180004  add         byte ptr [rax],al  
00007FF739180006  add         byte ptr [rax],al

這里來到了pRX的地址00007ff739180000處,在pRX地址向后偏移2個字節(jié)處下斷點,也即00007FF739180002。

然后在pRW地址處進(jìn)行賦值,如下pRW處內(nèi)存展示:

Address:0x000001BEE1610000 //pRW Memory
0010000000000000 0010000000000000 0000000000000000 0000000000000000 
0000000000000000 0000000000000000

這里的pRW地址是0x000001BEE1610000。

往它的第一個八字節(jié)賦值了:0010000000000000。然后看下pRX的的內(nèi)存,如下:

Addres:0x00007FF739180000  //pRX Memory
0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000

可以看到在被MapViewOfFileEx映射的內(nèi)存范圍內(nèi)下斷點之后,pRW的賦值并不能更改pRX的值。這就導(dǎo)致了開頭的異常BUG。

3.代碼還原

通過以上理論分析和代碼分析,基本上確定了,這個BUG就是斷點+內(nèi)存映射造成的。如果把斷點下在內(nèi)存映射的范圍內(nèi)的某個一個地址上,則會導(dǎo)致內(nèi)存賦值的失敗。如果不下斷點,或者斷點不在內(nèi)存映射范圍內(nèi),則不存在這種情況。這應(yīng)該是微軟Windows內(nèi)核的一個BUG。以上就是全部用戶態(tài)的BUG展示了,如果想要更深一些,則需要追蹤Windows內(nèi)核,這個有時間再研究。

這個BUG起因于,CLR調(diào)用C#入口Main的匯編代碼里面下的斷點,運行到.Ctor然后報了異常。這個異常的排查過程如上所示,但是依然有疑惑。就是為啥通過VS調(diào)試C#源代碼則不會報這個異常。難道VS直接運行C#源代碼跟CLR調(diào)用略有不同?

責(zé)任編輯:武曉燕 來源: 江湖評談
相關(guān)推薦

2018-10-10 14:14:51

Linux內(nèi)存映射

2009-10-22 17:39:34

CLR內(nèi)存管理

2024-03-13 00:00:01

可視化技術(shù)氣泡圖

2021-04-27 13:56:49

內(nèi)存.映射地址

2021-07-21 09:02:44

開發(fā)技能代碼

2023-03-01 10:37:51

2018-09-05 17:14:36

戴爾

2013-10-12 13:01:51

Linux運維內(nèi)存管理

2009-07-24 10:00:38

.NET 4.0內(nèi)存映

2021-11-11 05:00:02

JavaMmap內(nèi)存

2019-11-11 13:40:45

Python 開發(fā)編程語言

2023-07-24 10:54:58

CLR優(yōu)化空間

2020-09-17 08:28:08

內(nèi)存映射反向

2011-04-25 17:15:39

MongodbMMAP

2012-06-20 14:16:36

Java內(nèi)存映射

2009-09-18 13:05:59

.NET CLR

2022-08-02 09:02:17

虛擬內(nèi)存操作系統(tǒng)

2009-10-19 14:25:16

靜態(tài)構(gòu)造函數(shù)

2009-09-18 09:59:39

C# CLR

2009-09-18 10:18:30

CLR Via
點贊
收藏

51CTO技術(shù)棧公眾號

日韩视频一二区| 欧美人与性动交α欧美精品图片| 麻豆精品网站| 日韩在线视频线视频免费网站| 成人性生交视频免费观看| 第四色日韩影片| 久久一夜天堂av一区二区三区 | 免费精品视频一区二区三区| 中文字幕网址在线| 亚洲高清资源| 在线观看免费高清视频97| 免费欧美一级片| 性感美女一区二区在线观看| 一区二区三区四区精品在线视频 | 波多野结衣在线免费观看| 9999热视频在线观看| 国产区在线观看成人精品| 91在线在线观看| 天天综合久久综合| 亚洲黄色大片| 久久艳片www.17c.com| 国产麻豆天美果冻无码视频| 经典三级久久| 91久久免费观看| 日韩精品一区在线视频| 国产三区在线观看| 久久婷婷国产综合精品青草| 成人在线视频网址| 国产一区二区小视频| 老鸭窝91久久精品色噜噜导演| 欧美成人精品在线播放| 毛片视频免费播放| 伊人久久综合影院| 亚洲第一精品久久忘忧草社区| 亚洲自拍第三页| 另类中文字幕国产精品| 欧美视频国产精品| 日本国产在线播放| 日本精品600av| 亚洲欧洲www| 亚洲一区二区自拍偷拍| 黄色小视频在线观看| 91偷拍与自偷拍精品| 99影视tv| www.色播.com| 国产麻豆一精品一av一免费| 国产精品网址在线| 免费精品一区二区| 老牛国产精品一区的观看方式| 性欧美暴力猛交69hd| 国产精品a成v人在线播放| 午夜亚洲福利| 欧美极品美女视频网站在线观看免费 | 欧美交换配乱吟粗大25p| 日韩免费啪啪| 国产精品久久久久影院| 永久久久久久| 麻豆视频在线观看免费网站| 国产精品国产自产拍高清av | 日韩欧美三级| 日韩在线免费高清视频| 日本综合在线观看| 色喇叭免费久久综合| 日韩在线视频二区| 少妇愉情理伦三级| 欧美黄色录像片| 久久香蕉频线观| 欧美另类视频在线观看| 激情欧美一区| 欧美亚洲午夜视频在线观看| 中文字幕日韩免费| 蜜臀久久99精品久久久画质超高清| 国产精品久久久久一区二区| 亚洲一区在线观| 国产在线精品一区二区不卡了 | 精品人妻无码一区二区色欲产成人| 国产精品亚洲一区二区三区在线 | 久久综合影院| 在线精品国产欧美| 欧美精品成人久久| 国产一区二区你懂的| 国产99久久精品一区二区 夜夜躁日日躁| 日韩人妻精品中文字幕| 久久精品99国产精品日本| 91情侣偷在线精品国产| 风流老熟女一区二区三区| 91一区二区在线| 亚洲欧美国产不卡| 青青草原国产在线| 色噜噜狠狠色综合中国| 午夜精品久久久久久久99热影院| 精品一区二区三区中文字幕在线 | 久久久久亚洲AV成人无码国产| 奇米狠狠一区二区三区| www.日韩.com| 日本三级片在线观看| 久久夜色精品| 91黄在线观看| 国产福利在线看| 亚洲免费观看高清在线观看| 人妻精品无码一区二区三区| 欧美黄色成人| 亚洲精品电影网在线观看| 天堂网av2018| 国产精品久久久亚洲一区| 国产专区欧美专区| 青青国产在线| 一区二区三区丝袜| 中文字幕第80页| 国产精品欧美大片| zzijzzij亚洲日本成熟少妇| 免费日韩一级片| 狠狠色伊人亚洲综合成人| 久久天天狠狠| 色在线视频网| 538在线一区二区精品国产| 国产精品揄拍100视频| 欧美国产三级| 国产精品一区二区性色av| 免费观看的毛片| 亚洲欧美区自拍先锋| 又色又爽又高潮免费视频国产| xxxxxhd亚洲人hd| 日韩亚洲欧美中文高清在线| 无码人妻av免费一区二区三区| 成人污视频在线观看| 超碰超碰超碰超碰超碰| 国产91精品在线| 亚洲欧美日韩网| 日韩字幕在线观看| 岛国av在线一区| 久久久久亚洲av无码专区喷水| 99re66热这里只有精品4| 精品性高朝久久久久久久| 久久黄色免费视频| 国产一区二区三区av电影| 伊人久久大香线蕉av一区| 新片速递亚洲合集欧美合集| 日韩av中文字幕在线| 日本少妇毛茸茸高潮| 国产.欧美.日韩| 国产精品久久国产| 日韩视频一二区| 久操成人在线视频| 精品国产99久久久久久宅男i| 国产精品久久久久国产精品日日| 美女网站免费观看视频| 国产免费播放一区二区| 日本91av在线播放| 国产毛片av在线| 欧洲国产伦久久久久久久| 丰满圆润老女人hd| 久久综合九色| 色一情一乱一伦一区二区三欧美 | 77777影视视频在线观看| 在线观看视频一区二区欧美日韩| 小早川怜子久久精品中文字幕| 亚洲综合精品四区| 欧美日韩综合另类| 你懂得影院夜精品a| 亚洲深夜福利网站| 国产精品尤物视频| 国产精品久久久久婷婷二区次| 国产一二三四在线视频| 欧美电影免费| 亚洲精品欧美日韩专区| 99热国产在线中文| 精品久久久网站| 国产超碰人人爽人人做人人爱| 久久影院电视剧免费观看| 538在线视频观看| 日韩免费高清| 粉嫩高清一区二区三区精品视频| 波多野结依一区| 亚洲欧美另类国产| 一区二区日韩视频| 亚洲精品成人在线| 艳妇乳肉亭妇荡乳av| 久久一区欧美| 伊人久久99| 美国成人xxx| 国产精品视频yy9099| 天堂av在线电影| 亚洲欧美在线一区| 国产精品一区二区三区在线免费观看 | 欧美一区二区高清| 日韩欧美不卡视频| 国产精品人成在线观看免费| 欧美一级大片免费看| 蜜桃伊人久久| 9999在线观看| 欧美自拍视频| 成人午夜两性视频| 午夜影院在线播放| 另类图片亚洲另类| 青青免费在线视频| 日韩欧美高清dvd碟片| 久久久久久91亚洲精品中文字幕| 国产精品久久午夜夜伦鲁鲁| 日韩综合第一页| 蜜臀国产一区二区三区在线播放 | 牛牛精品在线| 国产亚洲欧美视频| 国产成人自拍一区| 欧美视频在线播放| 青青操免费在线视频| 亚洲图片激情小说| 国产ts在线播放| 成人精品电影在线观看| 天天干天天操天天玩| 宅男噜噜噜66国产日韩在线观看| 99热一区二区三区| 欧美美乳视频| 国产三区二区一区久久| 亚洲色图图片| 国产精品美女www| 色偷偷偷在线视频播放| 久久国产视频网站| 性开放的欧美大片| 亚洲精品一二区| 蜜桃视频污在线观看| 91精品久久久久久久99蜜桃| 午夜一区二区三区四区| 亚洲成人一二三| 好吊色视频在线观看| 国产精品麻豆久久久| 青娱乐国产视频| 97精品国产露脸对白| 美国黄色一级视频| 国产一区二区三区免费| 亚欧激情乱码久久久久久久久| 久久久久国产精品一区二区| 久久久亚洲精品无码| 亚洲午夜视频| 国产精品视频一二三四区| 欧美激情黄色片| 午夜欧美一区二区三区免费观看| 亚洲激情77| 久久久com| 在线观看欧美理论a影院| 久久久久久国产精品一区| 国产精品香蕉| 精品免费一区二区三区蜜桃| 精品网站aaa| 激情欧美一区二区三区中文字幕| 国产精品调教| 精品蜜桃一区二区三区| 国产三级精品三级在线观看国产| 成人午夜电影在线播放| 日韩一区二区三区高清在线观看| 69174成人网| 超碰在线成人| 精品久久sese| 免费精品国产| 欧美一区二区三区在线播放| 久久成人av| 相泽南亚洲一区二区在线播放 | 天码人妻一区二区三区在线看| 精品久久久久久久久久国产| 成人毛片在线播放| 欧美在线视频你懂得| 亚洲综合五月天婷婷丁香| 欧美精品一卡二卡| 国产草草影院ccyycom| 欧美大片国产精品| 婷婷在线观看视频| 亚洲片国产一区一级在线观看| 精品电影在线| 俺去亚洲欧洲欧美日韩| av文字幕在线观看| 欧美激情一区二区三区高清视频| 鲁鲁在线中文| 国产精品久久久久av| 国产日韩中文在线中文字幕| 99免费在线视频观看| 欧美色图五月天| 日韩黄色影视| 女人天堂亚洲aⅴ在线观看| 国产真实老熟女无套内射| 羞羞答答国产精品www一本 | 国产精品1区二区.| 99久久人妻无码中文字幕系列| 久久精品欧美日韩| 精品国产视频一区二区三区| 性做久久久久久免费观看| 午夜影院免费在线观看| 777色狠狠一区二区三区| 好吊色一区二区三区| 亚洲人成电影网| a级毛片免费观看在线| 91精品国产91久久久久| 成人黄色毛片| 国产欧美日韩伦理| 日韩大片在线| 国产精品裸体瑜伽视频| 久久精品国产99国产| 国产精品无码在线| 成人免费小视频| 黄色在线免费观看| 欧美一级片免费看| 黄视频在线播放| 欧美国产视频一区二区| 精品成人av| 国产欧美日本在线| 亚洲澳门在线| 少妇激情一区二区三区| 成人毛片老司机大片| 天堂网av2018| 色菇凉天天综合网| 亚洲黄色在线观看视频| 色噜噜亚洲精品中文字幕| 国产一二三在线| 99热国产免费| 91精品综合| 国产高清视频网站| 91碰在线视频| 国产亚洲精品av| 8x8x8国产精品| 国产永久免费高清在线观看| 国语对白做受69| 日本一区二区三区视频在线看 | 色三级在线观看| 人妖精品videosex性欧美| 国产精品1luya在线播放| 中文字幕在线乱| 久久精品国产成人一区二区三区| 国产jjizz一区二区三区视频| 性做久久久久久久免费看| 亚洲av无码一区二区三区性色| 色噜噜狠狠色综合网图区| 一区二区视频免费完整版观看| 久久青青草原一区二区| 亚洲美女少妇无套啪啪呻吟| 国产成人av免费观看| 亚洲欧美区自拍先锋| 888奇米影视| www.精品av.com| 亚洲影视资源| 综合一区中文字幕| 精品一区二区三区影院在线午夜| av永久免费观看| 精品视频在线免费观看| 在线日本视频| 国产人妖伪娘一区91| 日本电影一区二区| 三年中国国语在线播放免费| 欧美国产一区二区在线观看| 久久精品视频2| 国产一区二区三区18| 成人自拍视频网| 亚洲国内在线| 老色鬼精品视频在线观看播放| 国产成人精品视频免费| 制服.丝袜.亚洲.另类.中文| 精品国产白色丝袜高跟鞋| 91av一区二区三区| 好吊一区二区三区| 一本加勒比波多野结衣| 欧美性xxxx极品hd欧美风情| 国产视频在线看| 国产欧美一区二区三区在线看| 国产精品二区不卡| 精品国产乱码久久久久久1区二区 91网址在线观看精品 | 欧美午夜影院一区| 色开心亚洲综合| 亚洲xxx大片| 亚洲专区在线| 97在线观看免费视频| 91麻豆精品国产91久久久久久 | 一级片免费在线观看视频| 一区二区视频在线看| 色婷婷在线视频| 国产成人福利网站| 色喇叭免费久久综合网| 日本少妇一区二区三区| 精品美女永久免费视频| 福利视频在线导航| 7777精品久久久大香线蕉小说| 一区二区三区国产盗摄| 熟女高潮一区二区三区| 欧美区一区二区三区| 免费在线播放电影| 日本一区二区在线视频观看| 国内精品国产成人| 日韩精品国产一区二区| 在线播放日韩av| 美女精品久久| 亚洲欧洲日产国码无码久久99| 国产精品少妇自拍| 蜜桃在线一区二区| 国产精品一二区| 激情久久一区| 激情五月激情综合| 日韩精品欧美激情| 亚洲欧美一级| 日韩欧美精品在线观看视频| 日韩理论片一区二区| 日本一区二区三区在线观看视频| 国产欧美日韩高清| 国产深夜精品|