亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? htne.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
字號:
/* *	HT Editor *	htne.cc * *	Copyright (C) 1999-2002 Stefan Weyergraf * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	This program is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *	GNU General Public License for more details. * *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "log.h"#include "endianess.h"#include "htiobox.h"#include "htne.h"#include "htneent.h"#include "htnehead.h"#include "htneimp.h"#include "htnenms.h"#include "htneobj.h"#include "htneimg.h"#include "htnewexe.h"#include "nestruct.h"#include "tools.h"#include <stdlib.h>#include <string.h>static format_viewer_if *htne_ifs[] = {	&htneheader_if,	&htnesegments_if,	&htneimports_if,	&htneentrypoints_if,	&htnenames_if,	&htneimage_if,	0};ne_import_rec::ne_import_rec(uint a, uint mod, bool b, uint i){	addr = a;	module = mod;	byname = b;	ord = i;}int ne_import_rec::compareTo(const Object *obj) const{	ne_import_rec *b=(ne_import_rec*)obj;	if (module == b->module) {		if (byname == b->byname) {			if (byname) {				return name_ofs - b->name_ofs;			} else {				return ord - b->ord;			}		}		return byname - b->byname;	}	return module - b->module;}static ht_view *htne_init(Bounds *b, File *file, ht_format_group *format_group){	byte nemagic[2];	FileOfs h = get_newexe_header_ofs(file);	file->seek(h);	file->read(nemagic, 2);	if ((nemagic[0]!=NE_MAGIC0) || (nemagic[1]!=NE_MAGIC1))		return 0;	ht_ne *g=new ht_ne();	g->init(b, file, htne_ifs, format_group, h);	return g;}format_viewer_if htne_if = {	htne_init,	0};void ht_ne::init(Bounds *b, File *f, format_viewer_if **ifs, ht_format_group *format_group, FileOfs h){	ht_format_group::init(b, VO_BROWSABLE | VO_SELECTABLE | VO_RESIZE, DESC_NE, f, false, true, 0, format_group);	VIEW_DEBUG_NAME("ht_ne");	String fn;	LOG("%y: NE: found header at 0x%08qx", &file->getFilename(fn), h);	ht_ne_shared_data *ne_shared = ht_malloc(sizeof (ht_ne_shared_data));	shared_data = ne_shared;	ne_shared->fake_segment = 0;	ne_shared->hdr_ofs = h;	ne_shared->entrypoints = NULL;	ne_shared->imports = NULL;	ne_shared->v_image = NULL;	file->seek(h);	file->readx(&ne_shared->hdr, sizeof ne_shared->hdr);	createHostStruct(&ne_shared->hdr, NE_HEADER_struct, little_endian);	/* read segment descriptors */	ne_shared->segments.segment_count = ne_shared->hdr.cseg;	ne_shared->segments.segments = ht_malloc(sizeof (NE_SEGMENT) * ne_shared->segments.segment_count);	bool reloc_needed = false;	NE_SEGMENT *s = ne_shared->segments.segments;	file->seek(h+ne_shared->hdr.segtab);	for (uint32 i = 0; i < ne_shared->segments.segment_count; i++) {		file->readx(s, sizeof *s);		createHostStruct(s, NE_SEGMENT_struct, little_endian);		if (s->flags & NE_HASRELOC) reloc_needed = true;		s++;	}	/* read entrypoint descriptors */	FileOfs o = h + ne_shared->hdr.enttab;	NE_ENTRYPOINT_HEADER e;	file->seek(o);	file->readx(&e, sizeof e);	createHostStruct(&e, NE_ENTRYPOINT_HEADER_struct, little_endian);	o += sizeof e;	Array *ep = new Array(true);	uint32 index = 1;	while (o<h+ne_shared->hdr.enttab+ne_shared->hdr.cbenttab) {		for (int i=0; i<e.entry_count; i++) {			if (e.seg_index==0) {			} else if (e.seg_index==0xff) {				o+=sizeof (NE_ENTRYPOINT_MOVABLE);								NE_ENTRYPOINT_MOVABLE me;				file->readx(&me, sizeof me);				createHostStruct(&me, NE_ENTRYPOINT_MOVABLE_struct, little_endian);				ep->forceSetByIdx(index, new ht_ne_entrypoint(index, me.seg, me.offset, 0));			} else {				o+=sizeof (NE_ENTRYPOINT_FIXED);								NE_ENTRYPOINT_FIXED fe;				file->seek(o);				file->readx(&fe, sizeof fe);				createHostStruct(&fe, NE_ENTRYPOINT_FIXED_struct, little_endian);				ep->forceSetByIdx(index, new ht_ne_entrypoint(index, e.seg_index, fe.offset, 0));			}			index++;		}		file->seek(o);		file->readx(&e, sizeof e);		createHostStruct(&e, NE_ENTRYPOINT_HEADER_struct, little_endian);		o += sizeof e;	}	ne_shared->entrypoints = ep;	/* read module names */	o = h + ne_shared->hdr.modtab;	FileOfs no = h + ne_shared->hdr.imptab;	file->seek(o);	ne_shared->modnames_count = ne_shared->hdr.cmod;	ne_shared->modnames = ht_malloc(sizeof *ne_shared->modnames * ne_shared->modnames_count);	for (uint i=0; i<ne_shared->hdr.cmod; i++) {		char buf[2];		file->seek(o+i*2);		if (file->read(buf, 2) != 2) break;		int w = createHostInt(buf, 2, little_endian);		file->seek(no+w);		ne_shared->modnames[i] = file->readstrp();	}	/* do relocations */	if (reloc_needed) {		ht_ne_reloc_file *rf = new ht_ne_reloc_file(file, false, (ht_ne_shared_data*)shared_data);		if (relocate(rf)) {			rf->finalize();			file = rf;			own_file = true;			LOG("%y: NE: relocations present, relocation simulation layer enabled", &fn);		} else {			LOG_EX(LOG_WARN, "%y: NE relocations seem to be corrupted.", &fn);			errorbox("%y: NE relocations seem to be corrupted.", &fn);			delete rf;		}	}	ht_format_group::init_ifs(ifs);}void ht_ne::done(){	ht_format_group::done();	ht_ne_shared_data *ne_shared = (ht_ne_shared_data*)shared_data;	if (ne_shared->segments.segments) {		free(ne_shared->segments.segments);	}		if (ne_shared->modnames) {		for (uint i=0; i<ne_shared->modnames_count; i++) {			free(ne_shared->modnames[i]);		}		free(ne_shared->modnames);	}		delete ne_shared->entrypoints;	delete ne_shared->imports;	free(shared_data);}void ht_ne::loc_enum_start(){//	loc_enum=true;}bool ht_ne::loc_enum_next(ht_format_loc *loc){#if 0	ht_ne_shared_data *sh=(ht_ne_shared_data*)shared_data;	if (loc_enum) {		loc->name="ne";		loc->start=sh->hdr_ofs;		loc->length=file->get_size()-loc->start;	/* FIXME: ENOTOK */				loc_enum=false;		return true;	}#endif	return false;}bool ht_ne::create_fake_segment(){	ht_ne_shared_data *ne_shared = (ht_ne_shared_data*)shared_data;	uint i = ne_shared->hdr.cseg;	NE_SEGMENT *newsegs = ht_malloc(sizeof *newsegs * (ne_shared->segments.segment_count+1));	memcpy(newsegs, ne_shared->segments.segments, sizeof *newsegs * ne_shared->segments.segment_count);	ne_shared->segments.segment_count++;	free(ne_shared->segments.segments);	ne_shared->segments.segments = newsegs;	newsegs[i].offset = 0;	newsegs[i].size = 0;	newsegs[i].flags = NE_DATA;	newsegs[i].minalloc = 0;		// = 64k	ne_shared->fake_segment = i;	return true;}bool ht_ne::relocate(ht_reloc_file *rf){	ht_ne_shared_data *ne_shared = (ht_ne_shared_data*)shared_data;	if (!create_fake_segment()) return false;	AVLTree *imports = new AVLTree(true);	int fake_entry_count = 0;	/* if selfload only relocate first segment. Is this "The Right Thing" ? */	/* Works for me though. */	uint c = (ne_shared->hdr.flags & NE_FLAGS_SELFLOAD) ? 1 : ne_shared->segments.segment_count;	for (uint32 i = 0; i < c; i++) {		if (ne_shared->segments.segments[i].flags & NE_HASRELOC) {			FileOfs seg_ofs = NE_get_seg_ofs(ne_shared, i);			FileOfs f = seg_ofs + NE_get_seg_psize(ne_shared, i);			char buf[2];			file->seek(f);			file->readx(buf, 2);			f += 2;			int c = createHostInt(buf, 2, little_endian);			for (int j = 0; j < c; j++) {				NE_RELOC_HEADER reloc;				file->seek(f);				file->readx(&reloc, sizeof reloc);				createHostStruct(&reloc, NE_RELOC_HEADER_struct, little_endian);				f += sizeof reloc;				switch (reloc.flags & NE_RF_RT_MASK) {				case NE_RF_INTERNAL: {					NE_RELOC_INTERNAL sreloc;					file->readx(&sreloc, sizeof sreloc);					createHostStruct(&sreloc, NE_RELOC_INTERNAL_struct, little_endian);					f += sizeof sreloc;					if (sreloc.seg == 0xff) {//		                              	ne_shared->entrypoint->;						if (!relocate_single(rf, i, seg_ofs + reloc.src_ofs, reloc.type, reloc.flags, 0xf1, 0)) return false;					} else {						if (!relocate_single(rf, i, seg_ofs + reloc.src_ofs, reloc.type, reloc.flags, sreloc.seg, sreloc.ofs)) return false;					}					break;				}				case NE_RF_IMPORT_ORD: {					NE_RELOC_IMPORT sreloc;					file->readx(&sreloc, sizeof sreloc);					createHostStruct(&sreloc, NE_RELOC_IMPORT_struct, little_endian);					f += sizeof sreloc;					if (imports->insert(new ne_import_rec(fake_entry_count, sreloc.module, false, sreloc.ord))) {//						if (!relocate_single(rf, i, seg_ofs + reloc.src_ofs, reloc.type, reloc.flags, 0xf2, sreloc.ord)) return false;						if (!relocate_single(rf, i, seg_ofs + reloc.src_ofs, reloc.type, reloc.flags, ne_shared->fake_segment+1, fake_entry_count)) return false;						fake_entry_count++;					}					break;				}				case NE_RF_IMPORT_NAME: {					NE_RELOC_IMPORT sreloc;					file->readx(&sreloc, sizeof sreloc);					createHostStruct(&sreloc, NE_RELOC_IMPORT_struct, little_endian);					f += sizeof sreloc;					if (imports->insert(new ne_import_rec(fake_entry_count, sreloc.module, true, sreloc.name_ofs))) {//						if (!relocate_single(rf, i, seg_ofs + reloc.src_ofs, reloc.type, reloc.flags, 0xf3, sreloc.name_ofs)) return false;						if (!relocate_single(rf, i, seg_ofs + reloc.src_ofs, reloc.type, reloc.flags, ne_shared->fake_segment+1, fake_entry_count)) return false;						fake_entry_count++;					}					break;				}				case NE_RF_OSFIXUP: {					NE_RELOC_FIXUP sreloc;					file->readx(&sreloc, sizeof sreloc);					createHostStruct(&sreloc, NE_RELOC_FIXUP_struct, little_endian);					f += sizeof sreloc;					if (!relocate_single(rf, i, seg_ofs + reloc.src_ofs, reloc.type, reloc.flags, 0xdead, 0xcafebabe)) return false;					break;				}				}			}		}	}	ne_shared->imports = imports;	return true;}bool ht_ne::relocate_single(ht_reloc_file *rf, uint seg, FileOfs ofs, uint type, uint flags, uint16 value_seg, uint16 value_ofs){	ht_ne_shared_data *ne_shared = (ht_ne_shared_data*)shared_data;	while (1) {		if (flags & NE_RF_ADD) break;		switch (type & NE_RT_MASK) {		case NE_RT_SEG16:		case NE_RT_PTR32:		case NE_RT_OFS16:		case NE_RT_PTR48:		case NE_RT_OFS32:			break;		case NE_RT_OFS8:			/* FIXME: we want to read a uint16 (offset) out of the file,			   but we can't because there's only one relocated			   byte. Maybe I dont understand NE relocs completely. */		default:			/* unknown relocation record */			return false;		}		rf->insert_reloc(ofs, new ht_ne_reloc_entry(type, flags & NE_RF_ADD, value_seg, value_ofs));		char buf[2];		file->seek(ofs);		file->readx(buf, 2);		uint16 r = createHostInt(buf, 2, little_endian);		if (r == 0xffff) break;		NEAddress a = NE_MAKE_ADDR(seg+1, r);		if (!NE_addr_to_ofs(ne_shared, a, &ofs)) {			return false;		}	}	return true;}/* *	CLASS ht_ne_entrypoint */ht_ne_entrypoint::ht_ne_entrypoint(uint Ordinal, uint Seg, uint Offset, uint Flags){	ordinal = Ordinal;	seg = Seg;	offset = Offset;	flags = Flags;	name = NULL;}ht_ne_entrypoint::~ht_ne_entrypoint(){	free(name);}/* *	CLASS ht_ne_reloc_entry */ht_ne_reloc_entry::ht_ne_reloc_entry(uint Mode, bool Add, uint16 Seg, uint16 Ofs){	mode = Mode;	add = Add;	seg = Seg;	ofs = Ofs;}/* *	CLASS ht_ne_reloc_file */ht_ne_reloc_file::ht_ne_reloc_file(File *s, bool os, ht_ne_shared_data *d)	: ht_reloc_file(s, os)	{	data = d;}void ht_ne_reloc_file::reloc_apply(Object *reloc, byte *data){	ht_ne_reloc_entry *e = (ht_ne_reloc_entry*)reloc;	switch (e->mode & NE_RT_MASK) {		case NE_RT_OFS8:			createForeignInt(data, e->ofs, 1, little_endian);			break;		case NE_RT_SEG16:			createForeignInt(data, e->seg, 2, little_endian);			break;		case NE_RT_OFS16:			createForeignInt(data, e->ofs, 2, little_endian);			break;		case NE_RT_PTR32:			createForeignInt(data, e->ofs, 2, little_endian);			createForeignInt(data+2, e->seg, 2, little_endian);			break;		case NE_RT_OFS32:			createForeignInt(data, e->ofs, 4, little_endian);			break;		case NE_RT_PTR48:			createForeignInt(data, e->ofs, 4, little_endian);			createForeignInt(data+4, e->seg, 2, little_endian);			break;	}}bool ht_ne_reloc_file::reloc_unapply(Object *reloc, byte *data){	return false;//	ht_ne_reloc_entry *e = (ht_ne_reloc_entry*)reloc;}/* * */FileOfs NE_get_seg_ofs(ht_ne_shared_data *NE_shared, uint i){	return (NE_shared->segments.segments[i].offset << NE_shared->hdr.align);}NEAddress NE_get_seg_addr(ht_ne_shared_data *NE_shared, uint i){	return NE_MAKE_ADDR(i+1, 0);}uint NE_get_seg_psize(ht_ne_shared_data *NE_shared, uint i){	return (NE_shared->segments.segments[i].size || !NE_shared->segments.segments[i].offset)		   ? NE_shared->segments.segments[i].size : 0x10000;//	return NE_shared->segments.segments[i].size;}uint NE_get_seg_vsize(ht_ne_shared_data *NE_shared, uint i){	return NE_shared->segments.segments[i].minalloc ? NE_shared->segments.segments[i].minalloc : 0x10000;//	return NE_shared->segments.segments[i].minalloc;}bool NE_addr_to_segment(ht_ne_shared_data *NE_shared, NEAddress Addr, int *segment){	for (uint i = 0; i < NE_shared->segments.segment_count; i++) {		NEAddress base = NE_get_seg_addr(NE_shared, i);		uint evsize = MAX(NE_get_seg_vsize(NE_shared, i), NE_get_seg_psize(NE_shared, i));		if ((Addr >= base) && (Addr < base + evsize)) {			*segment = i;			return true;		}	}	return false;}bool NE_addr_is_physical(ht_ne_shared_data *NE_shared, NEAddress Addr){	for (uint i = 0; i < NE_shared->segments.segment_count; i++) {		NEAddress base = NE_get_seg_addr(NE_shared, i);		uint epsize = MIN(NE_get_seg_vsize(NE_shared, i), NE_get_seg_psize(NE_shared, i));		if ((Addr >= base) && (Addr < base + epsize)) return true;	}	return false;}bool NE_addr_to_ofs(ht_ne_shared_data *NE_shared, NEAddress Addr, FileOfs *ofs){	for (uint i = 0; i < NE_shared->segments.segment_count; i++) {		NEAddress base = NE_get_seg_addr(NE_shared, i);		uint epsize = MIN(NE_get_seg_vsize(NE_shared, i), NE_get_seg_psize(NE_shared, i));		if ((Addr >= base) && (Addr < base + epsize)) {			*ofs = NE_get_seg_ofs(NE_shared, i) + (Addr - base);			return true;		}	}	return false;}bool NE_ofs_to_addr(ht_ne_shared_data *NE_shared, FileOfs ofs, NEAddress *Addr){	for (uint i = 0; i < NE_shared->segments.segment_count; i++) {		FileOfs sofs = NE_get_seg_ofs(NE_shared, i);		if ((ofs >= sofs) && (ofs < sofs + NE_get_seg_psize(NE_shared, i))) {			*Addr = NE_get_seg_addr(NE_shared, i) + (ofs - sofs);			return true;		}	}	return false;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人一级片| 亚洲欧洲精品一区二区三区| 日韩av一区二区三区| 欧美日韩在线亚洲一区蜜芽| 亚洲精品日韩一| 欧美三级蜜桃2在线观看| 亚洲bt欧美bt精品777| 欧美一区二区久久久| 日韩成人精品在线观看| 日韩免费电影网站| 国产成人精品亚洲日本在线桃色| 久久久国产精品午夜一区ai换脸| 丰满少妇在线播放bd日韩电影| 中文字幕成人av| 91久久人澡人人添人人爽欧美| 亚洲综合丁香婷婷六月香| 欧美亚洲一区二区三区四区| 日本不卡一二三| 国产天堂亚洲国产碰碰| a级高清视频欧美日韩| 亚洲福利国产精品| 精品国产一区二区三区忘忧草 | 国产欧美精品国产国产专区| 99国产精品99久久久久久| 香蕉成人啪国产精品视频综合网| 日韩欧美高清一区| 成人免费高清视频在线观看| 亚洲欧美偷拍另类a∨色屁股| 7777精品伊人久久久大香线蕉经典版下载 | ...av二区三区久久精品| 一本一道综合狠狠老| 美日韩一级片在线观看| 一区二区中文字幕在线| 日韩一级大片在线观看| 99综合电影在线视频| 天天操天天色综合| 国产精品久久久久久户外露出| 欧美在线观看视频在线| 国产成人精品1024| 丝袜美腿亚洲色图| 国产精品天干天干在观线| 欧美福利视频一区| 岛国精品在线观看| 男女男精品视频网| 成人欧美一区二区三区黑人麻豆| 欧美一区二区三区在线观看视频| 97久久精品人人做人人爽| 精品一区二区在线视频| 一区二区三国产精华液| 国产精品美女www爽爽爽| 欧美一级一级性生活免费录像| 97精品电影院| 国产一区二区三区在线观看精品| 亚洲高清免费观看| 亚洲欧美日韩国产中文在线| 国产色综合久久| 日韩视频免费观看高清在线视频| 色综合久久66| 99久久夜色精品国产网站| 久久99精品国产.久久久久久| 亚洲第一精品在线| 亚洲午夜av在线| 日韩毛片高清在线播放| 久久精品日产第一区二区三区高清版| 91精品久久久久久久91蜜桃| 在线免费观看一区| 色综合天天性综合| 成人aaaa免费全部观看| 国产精品一区二区你懂的| 激情综合色综合久久综合| 蜜臀91精品一区二区三区| 亚洲高清三级视频| 亚洲一区二区在线免费观看视频| 国产精品二三区| 亚洲欧洲日韩在线| 亚洲欧洲国产日韩| 国产精品成人免费在线| 国产精品卡一卡二| 亚洲日本在线观看| 亚洲精品国产成人久久av盗摄| 亚洲欧美二区三区| 91丨九色丨蝌蚪丨老版| 欧美一区二区在线视频| 欧美二区乱c少妇| 欧美理论在线播放| 777久久久精品| 欧美一级在线免费| 精品久久国产字幕高潮| 26uuu欧美| 欧美高清在线一区二区| 综合欧美亚洲日本| 亚洲一区二区五区| 日本在线观看不卡视频| 日韩精品一二三| 精品在线一区二区三区| 国产一二三精品| 国产精品1区二区.| 色综合av在线| 欧美一区二区三区在线| 亚洲精品在线一区二区| 亚洲国产精品t66y| 亚洲一区二区在线播放相泽| 视频一区中文字幕| 国产一区二区三区四区五区美女| 成人免费三级在线| 在线亚洲一区观看| 日韩欧美不卡在线观看视频| 国产午夜精品在线观看| 中文字幕视频一区| 石原莉奈在线亚洲三区| 激情小说欧美图片| 色屁屁一区二区| 欧美成人激情免费网| 1024成人网| 免费观看一级特黄欧美大片| 国产成人av一区二区| 欧美中文字幕一二三区视频| 精品国产91亚洲一区二区三区婷婷| 国产午夜精品久久| 五月激情综合婷婷| av亚洲精华国产精华精| 91精品国产乱| 亚洲免费观看高清完整版在线观看| 视频一区欧美日韩| 粉嫩嫩av羞羞动漫久久久| 欧美揉bbbbb揉bbbbb| 国产欧美日产一区| 日韩国产欧美视频| 一本大道久久a久久综合婷婷 | 福利视频网站一区二区三区| 欧美三级蜜桃2在线观看| 久久精品男人的天堂| 亚洲va中文字幕| 白白色亚洲国产精品| 欧美不卡一二三| 午夜视频在线观看一区二区三区| 成人黄色小视频在线观看| 日韩视频在线你懂得| 亚洲毛片av在线| 成人在线视频一区二区| 精品国产制服丝袜高跟| 午夜精品成人在线视频| 99精品欧美一区二区蜜桃免费| 精品国产免费一区二区三区香蕉| 亚洲成a人v欧美综合天堂下载 | 国产精品2024| 日韩精品专区在线影院观看| 亚洲一区二区五区| 色一区在线观看| 国产精品久久毛片av大全日韩| 国产精品一区二区久久不卡| 91精品国产全国免费观看| 亚洲一区二区在线免费观看视频| 97久久精品人人做人人爽 | 91在线播放网址| 国产精品人妖ts系列视频| 国产乱妇无码大片在线观看| 日韩三级电影网址| 免费看黄色91| 精品毛片乱码1区2区3区| 奇米精品一区二区三区在线观看一 | 中文子幕无线码一区tr| 久久se精品一区二区| 精品免费视频一区二区| 蜜桃久久久久久| 欧美一二三四在线| 青青草精品视频| 欧美一区二区视频免费观看| 五月天亚洲精品| 日韩一区二区视频在线观看| 天堂va蜜桃一区二区三区漫画版| 欧美日韩精品欧美日韩精品| 亚洲在线免费播放| 欧美日韩一级黄| 蜜乳av一区二区| 精品伦理精品一区| 国产精品自在欧美一区| 国产欧美综合在线观看第十页| 国产传媒一区在线| 中文字幕亚洲成人| 欧美日韩在线三区| 九色|91porny| 日本一区二区三区久久久久久久久不| 国产精品456| 一区二区三区在线观看欧美| 色94色欧美sute亚洲13| 天天av天天翘天天综合网色鬼国产| 884aa四虎影成人精品一区| 久久99国产精品成人| 久久久亚洲精品石原莉奈| 成人av先锋影音| 亚洲国产欧美日韩另类综合| 欧美精品18+| 极品少妇一区二区| 中文字幕亚洲精品在线观看 | 成人性色生活片| 夜色激情一区二区| 911精品国产一区二区在线| 免费xxxx性欧美18vr| 国产欧美一区二区三区在线老狼|