成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 從實例分析ELF格式的.gnu.hash區(qū)與glibc的符號查詢?nèi)^程

從實例分析ELF格式的.gnu.hash區(qū)與glibc的符號查詢?nèi)^程

熱門標(biāo)簽:防城港市ai電銷機器人 臨滄移動外呼系統(tǒng)哪家有 不同的地圖標(biāo)注 寧夏保險智能外呼系統(tǒng)哪家好 隨州銷售外呼系統(tǒng)平臺 溫嶺代理外呼系統(tǒng) 交行外呼系統(tǒng)有哪些 怎么更改地圖標(biāo)注電話 激戰(zhàn)黃昏地圖標(biāo)注說明

前言

ELF格式的.gnu.hash節(jié)在設(shè)計上比較復(fù)雜,直接從glibc源碼進行分析的難度也比較大。今天靜下心來看了這篇精彩的文章,終于將布隆濾波器、算數(shù)運算轉(zhuǎn)為位運算等一系列細節(jié)搞懂了(值得一提的是,這篇博客十分值得花一些時間讀懂,它不僅對總體有一個較好的描述,而且還涉及了許多有益的實現(xiàn)細節(jié))。但本人愚鈍異常,沒有一個完整的walkthrough就不能覺得自己真的搞懂了一個東西。所以本文從查找一個符號的真實情況出發(fā),把ELF格式是如何組織一個符號,以及動態(tài)鏈接器如何讀取并處理這些信息以進行符號查詢的全過程詳細地講清楚。
本文假定讀者已經(jīng)讀過上文中提到的博客,并理解布隆濾波器,GNU hash采用的單一哈希策略,把取模轉(zhuǎn)為取與這些名詞。在后續(xù)有時間時我可能會對它們進行簡單介紹,但珠玉在前讓人確實不想獻丑。

本文的實現(xiàn)以及so文件均以glibc 2.31為準(zhǔn)。

符號哈希,符號表與字符表

一個符號的相關(guān)信息會在ELF文件中dynamic section的三塊出現(xiàn):.gnu.hash對應(yīng)的符號哈希,.dynsym對應(yīng)的動態(tài)符號表,.dynstr對應(yīng)的字符表。在查找符號時,動態(tài)鏈接器首先從.gnu.hash中進行查詢,得到該符號在動態(tài)符號表中的偏移。動態(tài)鏈接器根據(jù)這個偏移讀出一個符號,并找到這個符號的名字在字符表中的偏移。從字符表中讀出符號的名稱如果與要查找的符號匹配,則找到了這個符號,再從符號表中讀出符號的相關(guān)信息并返回。

64位ELF格式的符號定義如下:

// in elf.h>
typedef struct
{
  // 32 bits
  Elf64_Word	st_name;		/* Symbol name (string tbl index) */
  // 8 bit
  unsigned char	st_info;		/* Symbol type and binding */
  // 8 bit
  unsigned char st_other;		/* Symbol visibility */
  // 16 bits
  Elf64_Section	st_shndx;		/* Section index */
  // 64 bits
  Elf64_Addr	st_value;		/* Symbol value */
  // 64 bits
  Elf64_Xword	st_size;		/* Symbol size */
} Elf64_Sym;

這個數(shù)據(jù)結(jié)構(gòu)占用內(nèi)存的大小為24B,這也是合理安排成員順序以節(jié)約文件大小的一個例子。

.gnu.hash的結(jié)構(gòu)

glibc使用如下函數(shù)從ELF文件中讀取符號哈希相關(guān)信息:

// in elf/dl-lookup.c
void
_dl_setup_hash (struct link_map *map)
{
  Elf_Symndx *hash;

  if (__glibc_likely (map->l_info[ELF_MACHINE_GNU_HASH_ADDRIDX] != NULL))
    {
      // 一個指向32位長內(nèi)存的指針,用來讀取哈希相關(guān)變量,故名hash32
      Elf32_Word *hash32
	= (void *) D_PTR (map, l_info[ELF_MACHINE_GNU_HASH_ADDRIDX]);
      map->l_nbuckets = *hash32++;
      Elf32_Word symbias = *hash32++;
      Elf32_Word bitmask_nwords = *hash32++;
      /* Must be a power of two.  */
      assert ((bitmask_nwords  (bitmask_nwords - 1)) == 0);
      map->l_gnu_bitmask_idxbits = bitmask_nwords - 1;
      map->l_gnu_shift = *hash32++;

      map->l_gnu_bitmask = (ElfW(Addr) *) hash32;
      hash32 += __ELF_NATIVE_CLASS / 32 * bitmask_nwords;

      map->l_gnu_buckets = hash32;
      hash32 += map->l_nbuckets;
      map->l_gnu_chain_zero = hash32 - symbias;

      /* Initialize MIPS xhash translation table.  */
      ELF_MACHINE_XHASH_SETUP (hash32, symbias, map);

      return;
    }
  // 以下處理古老的DT_HASH項,現(xiàn)已不用
  if (!map->l_info[DT_HASH])
    return;
  hash = (void *) D_PTR (map, l_info[DT_HASH]);//Q: what about some non-GNU ELFs

  map->l_nbuckets = *hash++;
  /* Skip nchain.  */
  hash++;
  map->l_buckets = hash;
  hash += map->l_nbuckets;
  map->l_chain = hash;
}

上述代碼讀取了關(guān)鍵變量賦值:l_nbuckets,symbias,bitmask_nwords,l_gnu_shift,l_gnu_buckets,l_gnu_chain_zero。其中,以“l(fā)”開頭的變量存儲在ELF文件的link_map中,具體定義見link.h>。還有不是從文件中讀出的變量l_gnu_bitmask_idxbits,它們的具體含義為:

  • l_nbuckets:使用哈希桶的數(shù)量
  • symbias:動態(tài)符號表中外部不能訪問的符號數(shù)量,但它們?nèi)匀徽加昧藙討B(tài)符號表項
  • bitmask_nwords:使用bitmask_nwords個字作為布隆濾波器的向量
  • l_gnu_shift:為使用同一哈希函數(shù)實現(xiàn)k=2的布隆濾波器,需要右移的位數(shù)
  • l_gnu_buckets:哈希桶的開始地址
  • l_gnu_chain_zero:符號哈希值的開始地址
  • l_gnu_bitmask_idxbits:為對bitmask_nwords取?;癁槿∨c,由bitmask_nwords-1而來

為了便于理解,將.gnu.hash節(jié)中的內(nèi)容畫成示意圖:

以libc為例。檢查對應(yīng)字段的值:

$ objdump -s /lib/x86_64-linux-gnu/libc.so.6 | grep .gnu.hash -A 5

Contents of section .gnu.hash:
 38a0 (f3030000)        (0c000000)      (00010000)            (0e000000)     ................
      ->l_nbuckets=1011 ->symbias=12    ->bitmask_nwords=256  ->l_gnu_shift=14
 38b0 (00301044 a0200201) (8803e690 c5458c00)  .0.D. .......E..
      ->第一個bloom word 0x010220a044103000                  
 38c0 c4005800 07840070 c280010d 8a0c4104  ..X....p......A.
 38d0 10008840 32082a40 88543c2d 200e3248  ...@2.*@.T- .2H
 38e0 2684c08c 04080002 020ea1ac 1a0666c8  .............f.

可以看到symbias=12,即有12個內(nèi)部符號:

$ readelf -s /lib/x86_64-linux-gnu/libc.so.6 | head -n 20

Symbol table '.dynsym' contains 2367 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND __libpthread_freeres
     2: 0000000000000000     0 OBJECT  GLOBAL DEFAULT  UND _rtld_global@GLIBC_PRIVATE (33)
     3: 0000000000000000     0 OBJECT  GLOBAL DEFAULT  UND __libc_enable_secure@GLIBC_PRIVATE (33)
     4: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __tls_get_addr@GLIBC_2.3 (34)
     5: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND _dl_exception_create@GLIBC_PRIVATE (33)
     6: 0000000000000000     0 OBJECT  GLOBAL DEFAULT  UND _rtld_global_ro@GLIBC_PRIVATE (33)
     7: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND __tunable_get_val@GLIBC_PRIVATE (33)
     8: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND _dl_find_dso_for_object@GLIBC_PRIVATE (33)
     9: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _dl_starting_up
    10: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND __libdl_freeres
    11: 0000000000000000     0 OBJECT  GLOBAL DEFAULT  UND _dl_argv@GLIBC_PRIVATE (33)
    12: 00000000000ab970    33 FUNC    GLOBAL DEFAULT   16 __strspn_c1@GLIBC_2.2.5
    13: 0000000000089260   352 FUNC    GLOBAL DEFAULT   16 putwchar@@GLIBC_2.2.5
    14: 00000000001324f0    20 FUNC    GLOBAL DEFAULT   16 __gethostname_chk@@GLIBC_2.4
    15: 00000000000ab9a0    44 FUNC    GLOBAL DEFAULT   16 __strspn_c2@GLIBC_2.2.5
    16: 000000000014f580   218 FUNC    GLOBAL DEFAULT   16 setrpcent@@GLIBC_2.2.5

可見符號0-11為內(nèi)部符號。

查找符號

下面以查找符號printf為例,介紹符號查找的過程。

首先使用下面的哈希函數(shù)生成符號的32位哈希:

// in elf/dl-lookup.c
static uint_fast32_t
dl_new_hash (const char *s)
{
  uint_fast32_t h = 5381;
  for (unsigned char c = *s; c != '\0'; c = *++s)
    h = h * 33 + c;
  return h  0xffffffff;
}

得到printf的哈希值為0x156b2bb8。
隨后計算布隆濾波器需要的兩個hashbit:

unsigned int hashbit1 = new_hash  (__ELF_NATIVE_CLASS - 1);
    unsigned int hashbit2 = ((new_hash >> l->l_gnu_shift)  (__ELF_NATIVE_CLASS - 1));

得到hashbit1 = 56,hashbit2 = 44。
找到該hash對應(yīng)的bloom word:

  const Elf64_Addr *bitmask = l->l_gnu_bitmask;
    // l->l_gnu_bitmask_idxbits = bitmask_nwords - 1,將取模變?yōu)槿∨c
    // (new_hash / __ELF_NATIVE_CLASS)  l->l_gnu_bitmask_idxbits = 174
    Elf64_Addr bitmask_word = bitmask[(new_hash / __ELF_NATIVE_CLASS)  l->l_gnu_bitmask_idxbits];

printf對應(yīng)的hash在第174個bloom word處,它的值位于bloom word的開始地址0x38b0+174*8=3e20
檢查3e20處對應(yīng)的值:

$ objdump -s /lib/x86_64-linux-gnu/libc.so.6 | grep " 3e20 "

 3e20 d0884a41 c0703429 10ec4303 92003103  ..JA.p4)..C...1.

其bloom word為0x293470c0414a88d0。
將其右移56位:0b0010 1001
將其右移44位:0b10 1001 0011 0100 0111
二者的最后一位均為1,說明布隆濾波器不能拒絕這個哈希值。

這時在對應(yīng)的哈希桶上進行尋找:

Elf32_Word bucket = l->l_gnu_buckets[new_hash % l->l_nbuckets];

由于0x156b2bb8 % 1011 = 295,需要找到第296個哈希桶。
而哈希桶的起始地址為l_gnu_bitmask + 64 / 32 * bitmask_nwords = 0x40b0,對應(yīng)哈希桶的地址為0x40b0+295*4=0x454c。
查看0x454c處對應(yīng)的哈希桶內(nèi)容:

$ objdump -s /lib/x86_64-linux-gnu/libc.so.6 | grep " 4540 "

 4540 77020000 00000000 7a020000 **7c020000**  w.......z...|...

哈希桶的內(nèi)容為0x27c。
而l_gnu_chain_zero的地址為:

  l_gnu_chain_zero = l_gnu_buckets + l_nbuckets - symbias;

可計算出l_gnu_chain_zero的地址為0x504c,所以第296個哈希桶包含的真正哈希位于0x504c+27c*4=0x5a3c
查看具體的哈希內(nèi)容:

$ objdump -s /lib/x86_64-linux-gnu/libc.so.6 | grep " 5a30 " -A 2

 5a30 ade8dbbb 142dcb13 bb86f85f e6952000  .....-....._.. .
 5a40 **b82b6b15** 0a05f1d5 deb6427f 856177fd  .+k.......B..aw.
 5a50 1ae585e7 ec296fa8 1ae585e7 29ce248f  .....)o.....).$.

于0x5a40處找到我們之前計算的哈希0x156b2bb8(注意小端序)。
此時,這個符號在.gnu.hash的下標(biāo),就是它在動態(tài)符號表中的(下標(biāo)-symbias)。但由于之前l(fā)_gnu_chain_zero已經(jīng)整體減掉了symbias,所以此處用該符號的地址減掉l_gnu_chain_zero可直接得到符號在符號表中的下標(biāo)。
0x5a40 - 0x504c = 0x9f4 = 2548,由于一個哈希值為4字節(jié),故下標(biāo)為2548 / 4 = 637

找到動態(tài)符號表的起始地址:

$ objdump -s /lib/x86_64-linux-gnu/libc.so.6 | grep .dynsym -A 1

Contents of section .dynsym:
 07548 00000000 00000000 00000000 00000000  ................

上文中提到,64位ELF文件中一個符號的長度位24字節(jié),故符號在符號表上的起始地址應(yīng)當(dāng)為0x7548 + 24*637 = 0xb100
找到動態(tài)符號表對應(yīng)位置的內(nèi)容:

$ objdump -s /lib/x86_64-linux-gnu/libc.so.6 | grep " 0b0f8 " -A 1

 0b0f8 16000000 00000000 **f3040000** 12001000  ................
 0b108 104e0600 00000000 cc000000 00000000  .N..............

讀出符號在字符表上的偏移量為0x4f3。
找到字符表的起始地址:

$ objdump -s /lib/x86_64-linux-gnu/libc.so.6 | grep .dynstr -A 1

Contents of section .dynstr:
 15330 00786472 5f755f6c 6f6e6700 5f5f7763  .xdr_u_long.__wc

起始地址為0x15330,故該符號的地址為0x15330 + 0x4f3 = 0x15823

讀出字符表對應(yīng)位置的值:

$ objdump -s /lib/x86_64-linux-gnu/libc.so.6 | grep " 15820 " -A 1

 15820 494f5f**70** 72696e74 66007265 67697374  IO_printf.regist
 15830 65725f70 72696e74 665f6675 6e637469  er_printf_functi

查找到了符號printf,它是IO_printf的別名,在字符表中為了節(jié)省空間將二者合并了。

這樣,就完成了一次符號查詢的全過程。

以上就是從實例分析ELF格式的.gnu.hash區(qū)與glibc的符號查找的詳細內(nèi)容,更多關(guān)于ELF格式的.gnu.hash區(qū)與glibc的符號查找的資料請關(guān)注腳本之家其它相關(guān)文章!

標(biāo)簽:青海 紅河 阜陽 河源 忻州 無錫 哈密 沈陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《從實例分析ELF格式的.gnu.hash區(qū)與glibc的符號查詢?nèi)^程》,本文關(guān)鍵詞  從,實例分析,ELF,格式,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《從實例分析ELF格式的.gnu.hash區(qū)與glibc的符號查詢?nèi)^程》相關(guān)的同類信息!
  • 本頁收集關(guān)于從實例分析ELF格式的.gnu.hash區(qū)與glibc的符號查詢?nèi)^程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    精品久久久久久无码国产| 亚洲女优在线| 久久综合九色综合97_久久久| 国产在线精品一区二区三区不卡| 欧美人妻一区二区三区| 新版的欧美在线视频| 97视频精彩视频在线观看| 成年人视频在线网站| 成人免费一区二区三区视频| 亚洲va男人天堂| 欧美二区视频| 日本性视频网| 国产精品1024久久| 精品国产鲁一鲁一区二区三区| 亚洲精品久久久久久| 国产麻豆高清视频在线第一页| 国产女主播av| 九九热精品国产| 欧美日韩激情四射| av在线免费观看网| 精品88久久久久88久久久| 成**人特级毛片www免费| 男男互摸gay网站| 调教+趴+乳夹+国产+精品| 午夜爽爽爽男女免费观看影院| 欧美日韩久久久一区| 任你弄精品视频免费观看| 国内精品卡一卡二卡三新区| 91精品国产综合久久久久| 亚洲社区在线观看| 精精国产xxxx视频在线中文版| 91国内精品在线视频| 色婷婷粉嫩av| 久久综合免费视频影院| 日本欧美色综合网站免费| 成人黄色国产精品网站大全在线免费观看| www.久久爱.cn| 亚洲午夜久久久久久久久电影网| 国产专区在线视频| 欧美夫妻性视频| 日韩成人一区二区三区在线观看| 亚洲一卡二卡在线| 美女久久久精品| 国产精品久久久一区| 欧亚精品中文字幕| 91久久精品网| 北条麻妃在线一区二区免费播放| 欧美性猛交xxxx免费看蜜桃| 日韩一区二区三区视频在线| 久久久久久久一区二区| 国产视频在线看| 欧美成a人片在线观看久| 欧美在线三级电影| 99免费在线视频观看| 伊人天天久久大香线蕉av色| 小荡货+程雪柔| 92国产在线视频| 精品综合久久久| 亚洲精品成人av| 欧美日韩在线视频一区二区| 国产精品久久久久久久久久久久久久久| 国产欧美在线一区二区| 日韩激情视频在线| 蜜月aⅴ免费一区二区三区| www.先锋影音av| 噜噜噜久久亚洲精品国产品小说| 日本一区二区欧美| 中文区中文字幕免费看| 日韩 欧美 高清| 图片小说视频色综合| 亚洲成人动漫在线观看| 91福利视频导航| 国产经典中年夫妇盗摄| 涩涩屋成人免费视频软件| 欧美色综合一区二区三区| 伊人久久亚洲综合| 亚洲精品一区二区三区影院忠贞| 神马一区二区影院| avav在线播放| 肥熟一91porny丨九色丨| 白嫩情侣偷拍呻吟刺激| 欧洲av一区| 二区三区偷拍浴室洗澡视频| 天堂在线视频免费| 少妇人妻丰满做爰xxx| 国产伦精一区二区三区| 成人区精品一区二区婷婷| 91蝌蚪在线观看视频| 黄色成人免费网| 在线人体午夜视频| 人妻少妇精品无码专区| 精品一区二区三区在线观看视频| 欧美成人一区二区三区电影| 欧美日韩在线精品一区二区三区| 91精品在线看| 欧美成人三级电影在线| 日产精品久久久久久久蜜臀| 国产成人三级视频| 色爽爽爽爽爽爽爽爽| 超碰在线观看97| 国产最新免费视频| 黄色无遮挡网站| 97se亚洲综合在线| 少妇又紧又色又爽又刺激视频| 精产国品一区二区| 亚洲一级av毛片| 久久久国产一区二区| 精品免费一区二区三区蜜桃| 日韩av免费看网站| 精品毛片一区二区三区| 激情五月色综合国产精品| 中文字幕伦理免费在线视频| 亚洲一区二区中文字幕在线观看| 欧美成人精品一区二区男人看| 欧美日韩国产一区二区三区| 国产黄色免费看| 国产精品毛片一区二区在线看| 黄色av网站在线观看| 成人午夜激情视频| 欧美不卡三区| 在线播放网站| 精品少妇一区二区三区| 国产自产高清不卡| 亚洲一区二区四区蜜桃| 99精品视频在线观看免费播放| 外国电影一区二区| 亚洲欧美日韩国产yyy| 波多野结衣中文字幕在线播放| 国产野外战在线播放| 久久久不卡网国产精品一区| 欧美成人一区在线观看| 67194成人在线观看| 国产一区二区免费视频| 国内外成人免费在线视频| 精品久久sese| 亚洲精品播放| 国产精品第一视频| 中文字幕高清20页| 欧美性大战久久久| 欧美日韩中文在线视频| 在线免费观看a视频| 久久久国产精品网站| 免费成人蒂法网站| 国产一级在线观看视频| 一级片黄色免费| 亚洲成人av免费看| 欧洲专线二区三区| 无码国产精品一区二区色情男同| 欧美一级在线免费观看| 欧美综合在线第二页| 91免费国产在线观看| 成人免费视频在线观看| 国产视频精品va久久久久久| 色婷婷久久综合中文久久蜜桃av| 天天av导航| 久久久久久三级| 色综合一区二区日本韩国亚洲| 四虎久久影院| 欧美日韩老妇| 这里只有精品视频| 91成人综合网| 综合另类专区| 9i看片成人免费看片| 国产精品av免费在线观看| 久久成人精品| 麻豆精品一区二区av白丝在线| 国产尤物av一区二区三区| 亚洲国产综合91精品麻豆| 91久久精品www人人做人人爽| 日本不卡一区在线| 国产高潮久久久| 国产精品久久久久久久久妇女| 蜜芽tv福利在线视频| 97超碰国产在线| 国产精品露出视频| 日产日韩在线亚洲欧美| 在线看片你懂的| 99热在线只有精品| 少妇愉情理伦片bd| 日本aⅴ大伊香蕉精品视频| 亚洲a区在线视频| 欧美淫片网站| 日本高清在线观看视频| 91高潮精品免费porn| 欧美性极品xxxx做受| 在线成人免费网站| 久久久黄色av| 日韩av快播网址| 国产麻豆麻豆| 欧美日韩爱爱视频| 国产女主播在线播放| 国产一区在线免费| 欧美一区午夜精品| 国产精品欧美亚洲777777| heyzo在线播放| 天天射天天干天天| 久久福利免费视频| 中文字幕在线观看国产| 91精品久久久久久久久久不卡| 亚洲国产一区二区三区高清| 中文字幕精品—区二区日日骚| 久久网站热最新地址| 日本精品中文字幕| 看片的网站亚洲| 国产二区视频在线播放| 免费a在线看| 2024最新电影免费在线观看| 久草资源在线视频| 激情欧美一区二区三区在线观看| 欧美乱大交xxxx| 欧美日韩一卡二卡| 神马日本精品| 久久久久欧美精品| 国产欧美日韩| 日韩欧美精品在线视频| 国产精品69精品一区二区三区| 久久精品—区二区三区舞蹈| 奇米影视第四狠狠777| 黑巨茎大战欧洲金发美女| 女人av一区| 久久av中文| 日本中文字幕网址| 久久精品99久久香蕉国产色戒| 3d玉蒲团在线观看| 毛片手机在线观看| 色狠狠久久av五月综合| 九七伦理97伦理| 国产精品成人一区二区三区夜夜夜| 亚洲欧美一区二区三区在线播放| 欧美一区少妇| 羞羞小视频视频| 亚洲精品伦理在线| 国产精品毛片a∨一区二区三区| 国产精品无码永久免费不卡| 888奇米影视| 欧美精选一区| 国产日本亚洲高清| 黄页网站在线观看视频| 国产精华一区二区三区| 欧美久久久久久久久| seba5欧美综合另类| 久久久久久com| 成人性做爰aaa片免费看不忠| 国产乡下妇女做爰视频| 波多野结衣在线一区二区| 午夜激情一区二区| 久久精品视频2| 国产在线视频精品视频免费看| 香蕉久久夜色精品| 成人国产在线视频| 免费一级片网址| 天堂网在线观看| 伦理电影国产精品| 在线看片黄色| 综合一区中文字幕| 成人在线一区| 成年人视频在线免费观看| 91精选在线| 影音先锋在线中文| 国产区av在线| 午夜激情一区二区| 真实的国产乱xxxx在线91| 99视频在线精品国自产拍免费观看| 91九色在线看| xfplay每日更新av资源在线| 四季久久免费一区二区三区四区| 亚洲日本青草视频在线怡红院| 久久99精品久久久野外观看| 黄色三级生活片| 性高潮视频在线观看| 欧美体内she精视频在线观看| 在线一区视频观看| 精油按摩中文字幕久久| 中文字幕在线观看免费视频| 八戒八戒神马在线电影| 欧美a级黄色大片| 最新版天堂资源中文官网| 亚洲精品一区二区三区蜜桃久| 久久中文字幕二区| 极品白嫩丰满美女无套| 亚洲春色综合另类校园电影| 天堂网在线免费观看| 欧美激情第10页| 人妻丰满熟妇av无码区hd| 路边理发店露脸熟妇泻火| 久久er99热精品一区二区| 日韩有吗在线观看| 在线成人高清不卡| 亚洲人做受高潮| 国产一级生活片| 亚洲AV无码成人精品区明星换面| 久久久久国产精品| 亚洲深夜激情| 亚洲免费色视频| 午夜视频在线观看一区二区三区| 日韩欧美国产成人| 欧美日韩黄色影视| 成人黄色免费看| segui88久久综合| 在线观看黄色| 欧美xxx另类| 国产亚洲视频系列| 国产在线一区二| 亚洲精品少妇网址| eeuss影院www免费视频| 国产精品免费入口| 日韩hmxxxx| 免费超碰在线| 一区二区三区日韩欧美精品| 午夜在线观看视频网站| 国产特级黄色片| 国产av无码专区亚洲av| 三级黄色免费观看| 亚洲国产精品一区二区久久恐怖片| 嫩草伊人久久精品少妇av杨幂| 欧美人体大胆444www| 亚洲国产精品自拍视频| 欧美三区四区| 91国产在线精品| 久久99精品久久久久婷婷| 国产夫妻性生活视频| 999国产精品视频免费| 成年人三级网站| av毛片久久久久**hd| 亚洲一区视频在线| 精品国产网站在线观看| 黑人精品一区二区| 先锋资源中文字幕|