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

Linux內(nèi)核加載ELF文件源碼分析,你學(xué)會了嗎?

安全 應(yīng)用安全
每一種系統(tǒng)支持的可執(zhí)行文件都對應(yīng)一個linux_binfmt對象,統(tǒng)一注冊在一個鏈表中,通過register_binfmt和unregister_binfmt函數(shù)編輯鏈表。在執(zhí)行可執(zhí)行程序時,內(nèi)核通過list_for_each_enrty遍歷鏈表中注冊的linux_binfmt對象,使用正確的加載方式進行加載。

一、源碼版本

1)版本:V6.3-rc7,x86
2)elf文件加載源碼:fs/binfmt_elf.c

二、Linux可執(zhí)行文件注冊

Linux支持多種不同格式的可執(zhí)行程序,這些可執(zhí)行 程序的加載方式由linux\binfmts.h文件中的linux_binfmt結(jié)構(gòu)體進行定義:

struct linux_binfmt {
    struct list_head lh;
    struct module *module;
    int (*load_binary)(struct linux_binprm *);
    int (*load_shlib)(struct file *);
#ifdef CONFIG_COREDUMP
    int (*core_dump)(struct coredump_params *cprm);
    unsigned long min_coredump;   /* minimal dump size */
#endif
} __randomize_layout;

結(jié)構(gòu)體定義了可執(zhí)行程序的3中不同的加載模式:

加載模式

備注

load_binary

讀取可執(zhí)行文件內(nèi)容并加載當(dāng)前進程建立新的執(zhí)行環(huán)境

load_shlib

動態(tài)加載共享庫到已有進程

core_dump

存放當(dāng)前進程的執(zhí)行上下文到core文件中

每一種系統(tǒng)支持的可執(zhí)行文件都對應(yīng)一個linux_binfmt對象,統(tǒng)一注冊在一個鏈表中,通過register_binfmt和unregister_binfmt函數(shù)編輯鏈表。在執(zhí)行可執(zhí)行程序時,內(nèi)核通過list_for_each_enrty遍歷鏈表中注冊的linux_binfmt對象,使用正確的加載方式進行加載。
elf文件的linux_binfmt對象結(jié)構(gòu)如下,該結(jié)構(gòu)體定義了elf文件由load_elf_binary函數(shù)加載:

static struct linux_binfmt elf_format = {
    .module     = THIS_MODULE,
    .load_binary    = load_elf_binary,
    .load_shlib = load_elf_library,
#ifdef CONFIG_COREDUMP
    .core_dump  = elf_core_dump,
    .min_coredump   = ELF_EXEC_PAGESIZE,
#endif
};

三、load_elf_binary函數(shù)分析

1、文件格式校驗

struct elfhdr *elf_ex = (struct elfhdr *)bprm->buf;
 
retval = -ENOEXEC;
/* First of all, some simple consistency checks */
if (memcmp(elf_ex->e_ident, ELFMAG, SELFMAG) != 0)
    goto out;
 
    if (elf_ex->e_type != ET_EXEC && elf_ex->e_type != ET_DYN)
        goto out;
    if (!elf_check_arch(elf_ex))
        goto out;
    if (elf_check_fdpic(elf_ex))
        goto out;
    if (!bprm->file->f_op->mmap)
        goto out;

程序首先讀取了e_ident中的魔數(shù)并進行了校驗,elf_ident是ELF文件最頭部的一個長度為16字節(jié)的數(shù)組,不區(qū)分架構(gòu)和系統(tǒng)位數(shù)。e_ident起始的4個字節(jié)固定為\0x7fELF,通過校驗該位可以確定是否為elf文件。
然后識別文件是否為可執(zhí)行文件或動態(tài)鏈接文件,ELF文件當(dāng)前主要有4種格式,分別為可重定位文件(ET_REL)、可執(zhí)行文件(ET_EXEC)、共享目標(biāo)文件(ET_DYN)和core文件(ET_CORE)。load_elf_binary函數(shù)只負(fù)責(zé)解析exec和dyn文件。
最后還解析了文件依賴的系統(tǒng)架構(gòu)等必要項。

2、讀取程序頭

static struct elf_phdr *load_elf_phdrs(const struct elfhdr *elf_ex,
                       struct file *elf_file)
{
    struct elf_phdr *elf_phdata = NULL;
    int retval = -1;
    unsigned int size;
 
    /*
     * If the size of this structure has changed, then punt, since
     * we will be doing the wrong thing.
     */
    if (elf_ex->e_phentsize != sizeof(struct elf_phdr))
        goto out;
 
    /* Sanity check the number of program headers... */
    /* ...and their total size. */
    size = sizeof(struct elf_phdr) * elf_ex->e_phnum;
    if (size == 0 || size > 65536 || size > ELF_MIN_ALIGN)
        goto out;
 
    elf_phdata = kmalloc(size, GFP_KERNEL);
    if (!elf_phdata)
        goto out;
 
    /* Read in the program headers */
    retval = elf_read(elf_file, elf_phdata, size, elf_ex->e_phoff);
 
out:
    if (retval) {
        kfree(elf_phdata);
        elf_phdata = NULL;
    }
    return elf_phdata;
}

程序頭是描述與程序執(zhí)行直接相關(guān)的目標(biāo)文件結(jié)構(gòu)信息,用于在文件中定位各個段的映像,同時包含其他一些用來為程序創(chuàng)建進程映像所必須的信息。

3、讀取解釋器段

elf_ppnt = elf_phdata;
    for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++) {
        char *elf_interpreter;
 
        if (elf_ppnt->p_type == PT_GNU_PROPERTY) {
            elf_property_phdata = elf_ppnt;
            continue;
        }
 
        if (elf_ppnt->p_type != PT_INTERP)
            continue;
 
        /*
         * This is the program interpreter used for shared libraries -
         * for now assume that this is an a.out format binary.
         */
        retval = -ENOEXEC;
        if (elf_ppnt->p_filesz > PATH_MAX || elf_ppnt->p_filesz < 2)
            goto out_free_ph;
 
        retval = -ENOMEM;
        elf_interpreter = kmalloc(elf_ppnt->p_filesz, GFP_KERNEL);
        if (!elf_interpreter)
            goto out_free_ph;
 
        retval = elf_read(bprm->file, elf_interpreter, elf_ppnt->p_filesz,
                  elf_ppnt->p_offset);
        if (retval < 0)
            goto out_free_interp;
        /* make sure path is NULL terminated */
        retval = -ENOEXEC;
        if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0')
            goto out_free_interp;
 
        interpreter = open_exec(elf_interpreter);
        kfree(elf_interpreter);
        retval = PTR_ERR(interpreter);
        if (IS_ERR(interpreter))
            goto out_free_ph;
 
        /*
         * If the binary is not readable then enforce mm->dumpable = 0
         * regardless of the interpreter's permissions.
         */
        would_dump(bprm, interpreter);
 
        interp_elf_ex = kmalloc(sizeof(*interp_elf_ex), GFP_KERNEL);
        if (!interp_elf_ex) {
            retval = -ENOMEM;
            goto out_free_file;
        }
 
        /* Get the exec headers */
        retval = elf_read(interpreter, interp_elf_ex,
                  sizeof(*interp_elf_ex), 0);
        if (retval < 0)
            goto out_free_dentry;
 
        break;
 
out_free_interp:
        kfree(elf_interpreter);
        goto out_free_ph;
    }

如果程序需要動態(tài)鏈接,則需要加載解釋器段(PT_INTERP),程序遍歷所有的程序頭,識別到解釋器段后,讀取該段的內(nèi)容。解釋器段實際上是標(biāo)明解釋器程序文件路徑的字符串,內(nèi)核根據(jù)字符串指向的文件,使用open_exec函數(shù)打開解釋器。

4、棧可執(zhí)行屬性及其他定制信息獲取

elf_ppnt = elf_phdata;
    for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++)
        switch (elf_ppnt->p_type) {
        case PT_GNU_STACK:
            if (elf_ppnt->p_flags & PF_X)
                executable_stack = EXSTACK_ENABLE_X;
            else
                executable_stack = EXSTACK_DISABLE_X;
            break;
 
        case PT_LOPROC ... PT_HIPROC:
            retval = arch_elf_pt_proc(elf_ex, elf_ppnt,
                          bprm->file, false,
                          &arch_state);
            if (retval)
                goto out_free_dentry;
            break;
        }

同樣通過for循環(huán)遍歷,如果識別到棧屬性段(PT_GNU_STACK),根據(jù)程序頭中的p_flags標(biāo)志位判定棧的可執(zhí)行屬性。如果識別到處理器專用語義段(PT_LOPROC至PT_HIPROC之間),則調(diào)用arch_elf_pt_proc函數(shù)完成相應(yīng)的配置。

5、讀取解釋器

if (interpreter) {
        retval = -ELIBBAD;
        /* Not an ELF interpreter */
        if (memcmp(interp_elf_ex->e_ident, ELFMAG, SELFMAG) != 0)
            goto out_free_dentry;
        /* Verify the interpreter has a valid arch */
        if (!elf_check_arch(interp_elf_ex) ||
            elf_check_fdpic(interp_elf_ex))
            goto out_free_dentry;
 
        /* Load the interpreter program headers */
        interp_elf_phdata = load_elf_phdrs(interp_elf_ex,
                           interpreter);
        if (!interp_elf_phdata)
            goto out_free_dentry;

解釋器也是一個elf文件,這里讀取解釋器以便于后續(xù)操作

6、加載程序段

for(i = 0, elf_ppnt = elf_phdata;
    i < elf_ex->e_phnum; i++, elf_ppnt++) {
    int elf_prot, elf_flags;
    unsigned long k, vaddr;
    unsigned long total_size = 0;
    unsigned long alignment;
 
    if (elf_ppnt->p_type != PT_LOAD)
        continue;

加載所有類型為PT_LOAD的段,當(dāng)處理第1個PT_LOAD段時,如果文件為dyn類型,還需要對其進行地址隨機化。隨機化時還需要區(qū)分解釋器或者其他普通so文件,對于解釋器,為避免程序發(fā)生沖突,程序固定從ELF_ET_DYN_BASE開始計算偏移進行加載。

if (!first_pt_load) {
    elf_flags |= MAP_FIXED;
} else if (elf_ex->e_type == ET_EXEC) {
    elf_flags |= MAP_FIXED_NOREPLACE;
} else if (elf_ex->e_type == ET_DYN) {
    if (interpreter) {
        load_bias = ELF_ET_DYN_BASE;
        if (current->flags & PF_RANDOMIZE)
            load_bias += arch_mmap_rnd();
        alignment = maximum_alignment(elf_phdata, elf_ex->e_phnum);
        if (alignment)
            load_bias &= ~(alignment - 1);
        elf_flags |= MAP_FIXED_NOREPLACE;
    } else
        load_bias = 0;
 
    load_bias = ELF_PAGESTART(load_bias - vaddr);
    total_size = total_mapping_size(elf_phdata,
                    elf_ex->e_phnum);
    if (!total_size) {
        retval = -EINVAL;
        goto out_free_dentry;
    }
}

一切就緒后,通過elf_map函數(shù)建立用戶空間虛擬地址空間與目標(biāo)映像文件中段的映射

error = elf_map(bprm->file, load_bias + vaddr, elf_ppnt,
                elf_prot, elf_flags, total_size);

7、裝載程序入口地址

if (interpreter) {
        elf_entry = load_elf_interp(interp_elf_ex,
                        interpreter,
                        load_bias, interp_elf_phdata,
                        &arch_state);
        if (!IS_ERR_VALUE(elf_entry)) {
            /*
             * load_elf_interp() returns relocation
             * adjustment
             */
            interp_load_addr = elf_entry;
            elf_entry += interp_elf_ex->e_entry;
        }
        if (BAD_ADDR(elf_entry)) {
            retval = IS_ERR_VALUE(elf_entry) ?
                    (int)elf_entry : -EINVAL;
            goto out_free_dentry;
        }
        reloc_func_desc = interp_load_addr;
 
        allow_write_access(interpreter);
        fput(interpreter);
 
        kfree(interp_elf_ex);
        kfree(interp_elf_phdata);
    } else {
        elf_entry = e_entry;
        if (BAD_ADDR(elf_entry)) {
            retval = -EINVAL;
            goto out_free_dentry;
        }
    }

對于需要解釋器的程序,需要先通過load_elf_interp函數(shù)裝入解釋器的映像,并將程序入口點設(shè)置為解釋器的入口地址,對于不需要解釋器的文件,直接讀取elf_header中的入口點虛擬地址即可。

8、添加參數(shù)和環(huán)境變量等配置信息

retval = create_elf_tables(bprm, elf_ex, interp_load_addr,
               e_entry, phdr_addr);
if (retval < 0)
    goto out;
 
mm = current->mm;
mm->end_code = end_code;
mm->start_code = start_code;
mm->start_data = start_data;

本文作者:jixiaokui, 轉(zhuǎn)載請注明來自

責(zé)任編輯:武曉燕 來源: FreeBuf.COM
相關(guān)推薦

2023-08-26 21:34:28

Spring源碼自定義

2022-10-18 17:59:46

Bootstrap源碼父類

2023-03-08 08:42:55

MySQLcost量化

2023-01-28 10:40:56

Java虛擬機代碼

2022-09-22 12:03:14

網(wǎng)絡(luò)安全事件

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-06-27 07:21:51

前端開發(fā)坑點

2023-08-01 12:51:18

WebGPT機器學(xué)習(xí)模型

2024-01-02 12:05:26

Java并發(fā)編程

2024-07-31 08:26:47

2023-06-08 07:34:19

HDFS小文件壓縮包

2024-09-30 09:05:46

Linux網(wǎng)絡(luò)延遲

2024-02-06 08:33:54

文件系統(tǒng)SSD

2022-11-06 14:46:28

腳本windows文件

2024-09-27 10:27:50

2023-01-30 09:01:54

圖表指南圖形化

2024-08-06 09:47:57

點贊
收藏

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

国产精品午夜在线| 久久久久久久波多野高潮日日| 69堂精品视频| 欧洲精品在线播放| 日韩大胆视频| 蜜桃视频在线观看一区二区| 九九九久久久久久| 久久精品国产亚洲av久| 婷婷激情成人| 亚洲成人av一区二区三区| 手机在线观看国产精品| 亚洲第一页在线观看| 美女尤物久久精品| 欧美日韩成人在线视频| 国产高潮呻吟久久| 亚洲视频国产| 欧美亚男人的天堂| 精品视频在线观看一区| 在线观看黄av| 91免费视频观看| 91视频婷婷| 成人黄色免费网| 99亚洲伊人久久精品影院红桃| 中文字幕亚洲一区二区三区五十路 | 久久精品亚洲天堂| 成人美女视频| 亚洲综合色视频| 亚洲高清在线播放| 三级在线电影| 国产91高潮流白浆在线麻豆| 国产精品视频不卡| 五月婷婷中文字幕| 黄色日韩精品| 乱亲女秽乱长久久久| 国产中年熟女高潮大集合| av综合网页| 6080yy午夜一二三区久久| 激情综合网俺也去| 依依综合在线| 午夜精品久久久| a级片一区二区| 成人在线视频亚洲| 国产精品国产三级国产| 欧美日韩无遮挡| 男人天堂av网| 从欧美一区二区三区| 91久久久久久久久| 国产永久免费视频| 开心九九激情九九欧美日韩精美视频电影| 欧美在线中文字幕| 中文字幕亚洲高清| 在线视频免费在线观看一区二区| 欧美激情视频一区二区| 免费毛片在线播放免费| 欧美福利电影在线观看| 欧美xxxx14xxxxx性爽| 男人在线观看视频| 91一区二区| 日韩中文字幕国产精品| 蜜桃av.com| 91精品啪在线观看国产18 | 成人免费毛片糖心| 国产成人精品免费视| 亚洲视频视频在线| 久久午夜精品视频| 欧美aaaa视频| 美女视频久久黄| 欧美日韩国产精品综合| 欧美婷婷在线| 66m—66摸成人免费视频| 天天操天天干视频| 久久天堂精品| 国产欧美精品日韩| 精品人妻aV中文字幕乱码色欲| 国产精品一区在线观看你懂的| http;//www.99re视频| 亚洲欧美国产高清va在线播放| 成人深夜在线观看| 久久久水蜜桃| 1769视频在线播放免费观看| 中文字幕视频一区二区三区久| 视色,视色影院,视色影库,视色网| 爆操欧美美女| 五月天一区二区三区| 两根大肉大捧一进一出好爽视频| 日韩免费va| 欧美男女性生活在线直播观看| 五月天av在线播放| 日韩精品视频在线看| 亚洲国产精品久久久久| 精品人妻一区二区免费视频| av亚洲在线观看| 欧美乱妇40p| 免费的毛片视频| 久久99精品久久久久久动态图| 波多野结衣精品久久| 日本在线丨区| 亚洲三级在线免费| 99视频在线免费播放| 粉嫩91精品久久久久久久99蜜桃| 日韩一区二区三区高清免费看看| 国产精品一区二区入口九绯色| 久久影视一区| 欧美一级大片在线免费观看| 91美女精品网站| 蜜桃一区二区三区在线观看| 国产亚洲精品自在久久| av一本在线| 亚洲二区在线视频| 久热精品在线观看视频| 久久男人av| www.色综合| 欧美a视频在线观看| 国产乱人伦偷精品视频不卡| 欧美精品亚洲精品| 日本在线观看高清完整版| 91久久精品网| 中文字幕在线播放一区| 91精品啪在线观看国产18| 日本最新高清不卡中文字幕| 国产叼嘿视频在线观看| 亚洲国产精品传媒在线观看| 久草热视频在线观看| 美女精品久久| 这里只有视频精品| 东京热一区二区三区四区| 国产精品亚洲一区二区三区妖精 | 国产精品高潮呻吟久久av黑人| 欧美特级特黄aaaaaa在线看| 最新中文字幕一区二区三区| 国产精品99久久免费黑人人妻| 国产精品22p| 欧美大片在线看| 亚洲一区二区天堂| 国产视频一区二区在线观看| 干日本少妇首页| 精品伊人久久久| 色综合老司机第九色激情| ,亚洲人成毛片在线播放| 国产肉丝袜一区二区| aa在线免费观看| 久9re热视频这里只有精品| 欧美激情视频一区二区| 超碰在线观看av| 亚洲精品福利视频网站| 北条麻妃亚洲一区| 一区二区三区在线观看免费| 91免费版网站入口| 黄色动漫在线| 91精品国产色综合久久| 亚洲国产123| 国产乱子伦视频一区二区三区| 中文字幕黄色大片| www.久久草.com| 欧美精品免费播放| 亚洲精品久久久久久久久久久久久久| 亚洲男人的天堂在线观看| 伊人精品视频在线观看| 欧美va亚洲va日韩∨a综合色| 亚洲xxxx视频| 1区2区3区在线| 亚洲精品国产免费| 国产婷婷色一区二区在线观看| 99久久国产综合精品麻豆| 99精品人妻少妇一区二区| 欧美激情在线精品一区二区三区| 日本亚洲欧洲色α| se在线电影| 欧美一区二区私人影院日本| 中文字幕影音先锋| 9久草视频在线视频精品| 5月婷婷6月丁香| 欧美一级本道电影免费专区| 国产精品爽爽爽爽爽爽在线观看| 久久77777| 欧美精品一区二区久久婷婷| 免费观看成人毛片| 中文字幕一区二区5566日韩| 苍井空张开腿实干12次| 亚洲自啪免费| 一区二区三区国产福利| 日本高清精品| 日韩暖暖在线视频| 嫩草在线视频| 亚洲精品动漫久久久久| av首页在线观看| 亚洲欧美日韩中文字幕一区二区三区| 香蕉视频污视频| 日本午夜一区二区| 男女激情免费视频| 欧美久久精品一级c片| 亚洲999一在线观看www| 欧美巨大丰满猛性社交| 中文字幕精品—区二区| 亚洲av永久无码国产精品久久| 欧美日韩人人澡狠狠躁视频| 亚洲色图日韩精品| 岛国精品一区二区| 亚洲娇小娇小娇小| 日韩天天综合| 国产卡一卡二在线| 在线亚洲a色| 岛国视频一区| 免费日韩成人| 性欧美亚洲xxxx乳在线观看| 日韩精品成人av| 日韩精品视频观看| 99国产精品欲| 在线免费观看不卡av| 精品少妇一二三区| 国产精品国产精品国产专区不蜜 | 久久精品视频一区二区三区| 潘金莲一级淫片aaaaa| 免费看日韩精品| 日韩av黄色网址| 很黄很黄激情成人| 日韩视频在线免费播放| 久久99蜜桃| 精品视频导航| www.豆豆成人网.com| 国产欧美日韩视频| 午夜精品成人av| 午夜伦理精品一区| 中国av在线播放| 中文字幕精品一区久久久久 | 国产日韩成人精品| 国产三级生活片| 久久九九国产| 五十路熟女丰满大屁股| 欧美一区视频| 亚洲最新免费视频| blacked蜜桃精品一区| 蜜桃传媒视频第一区入口在线看| 大奶一区二区三区| 99国产视频| 日韩区欧美区| 91人人爽人人爽人人精88v| 成人国产在线| 国产精品香蕉在线观看| av亚洲一区二区三区| 青青青国产精品一区二区| а√在线天堂官网| 久久久久久亚洲精品| 日本片在线观看| 日韩网站免费观看| 视频免费一区| 日韩精品一二三四区| 偷拍精品一区二区三区| 日韩一级高清毛片| 国产又粗又黄又爽的视频| 欧美日韩一区精品| 一本色道久久综合亚洲| 欧美日韩三级在线| 中文字幕 国产| 欧美午夜精品理论片a级按摩| 日本黄色一级视频| 在线中文字幕不卡| 亚洲最大成人av| 欧美久久久久中文字幕| 国产精品人妻一区二区三区| 欧美丰满美乳xxx高潮www| 97人人爽人人爽人人爽 | 亚洲欧美另类视频| 亚洲国产成人精品女人久久久| 免费观看a视频| 日韩电影第一页| 国产色在线 com| 日韩最新中文字幕电影免费看| 巨大荫蒂视频欧美大片| 欧美多人乱p欧美4p久久| 白浆视频在线观看| 日本久久91av| 欧美黄色a视频| 国产成人精品日本亚洲11 | 激情综合一区二区三区| 免费观看黄网站| 白白色亚洲国产精品| 欧美特级黄色录像| 亚洲欧洲日韩一区二区三区| 玖玖爱免费视频| 色婷婷亚洲婷婷| 91禁在线观看| 亚洲精品在线一区二区| 国产日产精品久久久久久婷婷| 日韩一区二区三区国产| 青青青国内视频在线观看软件| 7m精品福利视频导航| 成人mm视频在线观看| 亚洲综合在线中文字幕| 日本亚洲不卡| 自拍另类欧美| 蘑菇福利视频一区播放| 日韩成人精品视频在线观看| 成人激情文学综合网| 美女av免费看| 午夜欧美一区二区三区在线播放| 久久久蜜桃一区二区| 日韩精品最新网址| 福利片在线观看| 久久久久久伊人| 自拍偷拍亚洲图片| 欧美精品成人一区二区在线观看 | 日本手机在线视频| 秋霞影院一区二区| 日韩少妇一区二区| 中文字幕一区二区三区精华液 | 欧美喷潮久久久xxxxx| 蜜桃视频久久一区免费观看入口| 亚洲三级 欧美三级| 色爱综合区网| 国产色婷婷国产综合在线理论片a| 久久久久久毛片免费看| 精品国产三级a∨在线| 久久夜色精品| 美女扒开腿免费视频| 国产精品的网站| 久久久精品视频网站| 精品国产91乱码一区二区三区| 国产高清视频在线播放| 97在线视频一区| 精品国产三级| 亚洲国产高清国产精品| 亚洲尤物精选| 奇米777第四色| 一区二区日韩av| 国产精品久久777777换脸| 亚洲一级一级97网| 男人最爱成人网| 精选一区二区三区四区五区| 韩国在线视频一区| 伊人五月天婷婷| 国产精品久久久久久久久久免费看 | 亚洲三级电影网站| 亚洲中文无码av在线| 精品无码久久久久久国产| 狂野欧美激情性xxxx欧美| 99re在线播放| 中文字幕日韩一区二区不卡| 在线观看日本www| 国产精品欧美久久久久一区二区| 日韩熟女一区二区| 亚洲欧美日韩爽爽影院| 成人亚洲欧美| 欧美精品免费观看二区| 亚洲一区激情| 好吊日免费视频| 色噜噜狠狠色综合中国| 美国一级片在线免费观看视频| 欧洲亚洲在线视频| 免费成人高清在线视频theav| 免费在线激情视频| 久久久久久久久久久黄色| 成人免费毛片男人用品| 亚洲欧洲日韩国产| av高清一区| 中文字幕成人一区| 国产在线不卡视频| 欧美精品xxxxx| 亚洲的天堂在线中文字幕| 免费看男女www网站入口在线| 久久日韩精品| 日本女优在线视频一区二区| 欧美乱大交做爰xxxⅹ小说| 制服丝袜亚洲播放| 中文在线观看免费| 精品亚洲欧美日韩| 日日夜夜免费精品| 又色又爽的视频| 日韩视频免费观看高清完整版在线观看 | 伊人网站在线观看| 久久这里只有精品视频首页| 日韩欧美另类中文字幕| 国精产品一区一区三区视频| 337p粉嫩大胆噜噜噜噜噜91av | 韩国成人二区| 日韩欧美手机在线| 国产综合色产在线精品| 精品视频在线观看免费| 日韩精品高清视频| 激情久久99| 久操手机在线视频| 久久综合九色综合欧美98| 亚洲网站免费观看| 欧美精品九九久久| 欧美人与拘性视交免费看| 久久99999| 亚洲一区二区四区蜜桃| 精品视频三区| 91传媒视频免费| 久久久成人网| 一区视频免费观看| 国产视频精品va久久久久久| 台湾天天综合人成在线| 国产二级片在线观看| 日韩美女啊v在线免费观看| 天堂在线中文网| 成人国产亚洲精品a区天堂华泰| 亚洲激情专区| www.毛片com| 亚洲人成网站色ww在线|