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

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

?? hooked_fn.c

?? 開源的防火墻代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil -*- (for GNU Emacs)
//
// $Id: hooked_fn.c,v 1.10 2003/07/07 11:41:55 dev Exp $

/** @addtogroup hook_driver
 *@{
 */

/**
 * @file hooked_fn.c
 * Hooked NDIS functions
 */

#include <ntddk.h>
#include <tdikrnl.h>			// for TdiCopyBufferToMdl

#include "adapters.h"
#include "av.h"
#include "memtrack.h"
#include "ndis_hk.h"
#include "filter.h"
#include "except.h"

/* prototypes */

static VOID		new_OpenAdapterCompleteHandler(
	struct PROTOCOL_CHARS		*pchars,		/* added by ASM stub */
	IN NDIS_HANDLE				ProtocolBindingContext,
    IN NDIS_STATUS				Status,
    IN NDIS_STATUS				OpenErrorStatus);

static NDIS_STATUS	new_ReceiveHandler(
	struct PROTOCOL_CHARS		*pchars,		/* added by ASM stub */
    IN NDIS_HANDLE				ProtocolBindingContext,
    IN NDIS_HANDLE				MacReceiveContext,
    IN PVOID					HeaderBuffer,
    IN UINT						HeaderBufferSize,
    IN PVOID					LookaheadBuffer,
    IN UINT						LookaheadBufferSize,
    IN UINT						PacketSize);

static VOID		new_TransferDataCompleteHandler(
	struct PROTOCOL_CHARS		*pchars,		/* added by ASM stub */
    IN NDIS_HANDLE				ProtocolBindingContext,
    IN PNDIS_PACKET				Packet,
    IN NDIS_STATUS				Status,
    IN UINT						BytesTransferred);

static INT		new_ReceivePacketHandler(
	struct PROTOCOL_CHARS		*pchars,		/* added by ASM stub */
	IN	NDIS_HANDLE				ProtocolBindingContext,
	IN	PNDIS_PACKET			Packet);

static VOID			new_SendCompleteHandler(
	struct PROTOCOL_CHARS		*pchars,		/* added by ASM stub */
    IN NDIS_HANDLE				ProtocolBindingContext,
    IN PNDIS_PACKET				Packet,
    IN NDIS_STATUS				Status);

static VOID			new_RequestCompleteHandler(
	struct PROTOCOL_CHARS		*pchars,		/* added by ASM stub */
	IN	NDIS_HANDLE				ProtocolBindingContext,
	IN	PNDIS_REQUEST			NdisRequest,
	IN	NDIS_STATUS				Status);

static NDIS_STATUS	new_PnPEventHandler(
	struct PROTOCOL_CHARS		*pchars,		/* added by ASM stub */
    IN NDIS_HANDLE				ProtocolBindingContext,
    IN PNET_PNP_EVENT			NetPnPEvent
    );

static NDIS_STATUS	new_SendHandler(
	struct ADAPTER_PROTOCOL		*adapter,		/* added by ASM stub */
	IN	NDIS_HANDLE				MacBindingHandle,
	IN	PNDIS_PACKET			Packet);

static VOID			new_SendPacketsHandler(
	struct ADAPTER_PROTOCOL		*adapter,		/* added by ASM stub */
	IN NDIS_HANDLE				NdisBindingHandle,
	IN PPNDIS_PACKET			PacketArray,
	IN UINT						NumberOfPackets);

static NDIS_STATUS	new_TransferDataHandler(
	struct ADAPTER_PROTOCOL		*adapter,		/* added by ASM stub */
	IN	NDIS_HANDLE				MacBindingHandle,
	IN	NDIS_HANDLE				MacReceiveContext,
	IN	UINT					ByteOffset,
	IN	UINT					BytesToTransfer,
	OUT PNDIS_PACKET			Packet,
	OUT PUINT					BytesTransferred);

/* typedefs */

#define ASM_STUB_SIZE		12		/**< pop eax; push context; push eax; jmp new_fn */

/**
 * generate ASM code: pop eax; push pchars; push eax; jmp new_fn .
 * eax is ret address; we insert new first parameter for function - pchars
 */
#define GENERATE_ASM_STUB(pchars, fn_name)																	\
	do {																									\
		(pchars)->asm_##fn_name[0] = 0x58;	/* pop eax */													\
		(pchars)->asm_##fn_name[1] = 0x68;	/* push pchars */												\
		*(ULONG *)&(pchars)->asm_##fn_name[2] = (ULONG)(pchars);											\
		(pchars)->asm_##fn_name[6] = 0x50;	/* push eax */													\
		(pchars)->asm_##fn_name[7] = 0xe9;	/* jmp new_fn */												\
		*(ULONG *)&(pchars)->asm_##fn_name[8] = (UCHAR *)new_##fn_name - &(pchars)->asm_##fn_name[12];		\
	} while (0)

#define PCHARS_MAGIC		'PcHa'		/**< magic prefix for struct PROTOCOL_CHARS */

/** information about registered protocol */
struct PROTOCOL_CHARS {

	ULONG		magic;					/**< PCHARS_MAGIC */

	/* ASM stubs for NDIS_PROTOCOL_CHARACTERISTICS */

	UCHAR		asm_OpenAdapterCompleteHandler[ASM_STUB_SIZE];	/**< asm stub for OpenAdapterCompleteHandler */
	
	UCHAR		asm_ReceiveHandler[ASM_STUB_SIZE];				/**< asm stub for ReceiveHandler */
	UCHAR		asm_TransferDataCompleteHandler[ASM_STUB_SIZE];	/**< asm stub for TransferDataCompleteHandler */

	UCHAR		asm_ReceivePacketHandler[ASM_STUB_SIZE];		/**< asm stub for ReceivePacketHandler */

	UCHAR		asm_SendCompleteHandler[ASM_STUB_SIZE];			/**< asm stub for SendCompleteHandler */
	UCHAR		asm_RequestCompleteHandler[ASM_STUB_SIZE];		/**< asm stub for RequestCompleteHandler */
	UCHAR		asm_PnPEventHandler[ASM_STUB_SIZE];				/**< asm stub for PnPEventHandler */

	struct		ADAPTER_PROTOCOL *adapter;		/**< single-linked list of open adapters */

	UINT		chars_len;						/**< size of old NDIS_PROTOCOL_CHARACTERISTICS */
	char		chars[0];	/**< old NDIS_PROTOCOL_CHARACTERISTICS and new NDIS_PROTOCOL_CHARACTERISTICS */
};

/** macro to get old NDIS_PROTOCOL_CHARACTERISTICS from struct PROTOCOL_CHARS */
#define PCHARS_OLD_CHARS(pchars)	((PNDIS_PROTOCOL_CHARACTERISTICS)((pchars)->chars))
/** macro to new old NDIS_PROTOCOL_CHARACTERISTICS from struct PROTOCOL_CHARS */
#define PCHARS_NEW_CHARS(pchars)	((PNDIS_PROTOCOL_CHARACTERISTICS)((pchars)->chars + (pchars)->chars_len))

/** @def _CHECK_PCHARS macro to check magic of struct PROTOCOL_CHARS */

#if DBG
#	define _CHECK_PCHARS(pchars)			\
	if ((pchars)->magic != PCHARS_MAGIC) {	\
		__asm int 3							\
	}
#else
#	define _CHECK_PCHARS(pchars)
#endif

/** number of pchars of TCPIP protocol */
#define TCPIP_PCHARS_N		2

/** global pchars for TCPIP protocol [0] & TCPIP/WAN [1] */
static struct PROTOCOL_CHARS *g_tcpip_pchars[TCPIP_PCHARS_N];

/** information about opened adapter by protocol */
struct ADAPTER_PROTOCOL {

	struct		ADAPTER_PROTOCOL *next;		/**< next adapter in single-linked list of open adapters */
	struct		PROTOCOL_CHARS *pchars;		/**< related pchars structure */
	
	int			adapter_index;				/**< index of adapter */
	NDIS_MEDIUM	medium;						/**< medium (ethernet for example) of adapter */

	NDIS_HANDLE NdisBindingHandle;			/**< NdisBindingHandle for this adapter */
	NDIS_HANDLE	ProtocolBindingContext;		/**< ProtocolBindingContext for this adapter */

	/* temporary storage */
	PUINT			pSelectedMediumIndex;	/**< pSelectedMediumIndex pointer for NdisOpenAdapter completion */
	PNDIS_MEDIUM	pMediumArray;			/**< pMediumArray pointer for NdisOpenAdapter completion */
	PNDIS_HANDLE	pNdisBindingHandle;		/**< pNdisBindingHandle pointer for NdisOpenAdapter completion */

	/* hooked SendHandler & SendPacketsHandler */

	/** ASM stub to call new SendHandler */
	UCHAR			asm_SendHandler[ASM_STUB_SIZE];
	/** original SendHandler address */
	SEND_HANDLER	old_SendHandler;
	
	/** ASM stub to call new SendPacketsHandler */
	UCHAR					asm_SendPacketsHandler[ASM_STUB_SIZE];
	/** original SendPacketsHandler address */
	SEND_PACKETS_HANDLER	old_SendPacketsHandler;

	/* hooked TransferDataHandler */

	/** ASM stub to call new TransferDataHandler */
	UCHAR					asm_TransferDataHandler[ASM_STUB_SIZE];
	/** original old_TransferDataHandler address */
	TRANSFER_DATA_HANDLER	old_TransferDataHandler;

	/** adapter name */
	wchar_t		adapter_name[0];
};

/** variables for NdisRequest */
static struct {
	KMUTEX			guard;		/**< guard mutex */
	NDIS_EVENT		event;		/**< event for completion */
	NDIS_STATUS		status;		/**< status of completion */
	NDIS_REQUEST	*pend_req;	/**< pending request */
} g_request;

/*
 * --- hooked NDIS functions ---
 */

/**
 * Hooked NdisRegisterProtocol.
 * If protocol is TCP/IP related, function makes copy of
 * NDIS_PROTOCOL_CHARACTERISTICS, changed some functions in it, creates struct PROTOCOL_CHARS
 * and calls original NdisRegisterProtocol function.
 * PROTOCOL_CHARS stored in "av" with NdisProtocolHandle as key.
 */
VOID
new_NdisRegisterProtocol(
	OUT	PNDIS_STATUS			Status,
	OUT	PNDIS_HANDLE			NdisProtocolHandle,
	IN	PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics,
	IN	UINT					CharacteristicsLength)
{
	struct PROTOCOL_CHARS *pchars = NULL;
	PNDIS_PROTOCOL_CHARACTERISTICS new_ProtocolCharacteristics;
	NTSTATUS status;

	// working at PASSIVE_LEVEL - can use UNICODE %S to output (see DbgPrint documentation)
	KdPrint(("[ndis_hk] new_NdisRegisterProtocol: %S\n", ProtocolCharacteristics->Name.Buffer));
	
	__try {
		
		// working only with "TCPIP" (and "TCPIP_WANARP" (2k) or "RASARP" protocol (NT))
		if (wcscmp(ProtocolCharacteristics->Name.Buffer, L"TCPIP") != 0 &&
			wcscmp(ProtocolCharacteristics->Name.Buffer, L"TCPIP_WANARP") != 0 &&
			wcscmp(ProtocolCharacteristics->Name.Buffer, L"RASARP") != 0) {
			
			HOOKED_OLD_FN(NdisRegisterProtocol)(Status, NdisProtocolHandle,
				ProtocolCharacteristics, CharacteristicsLength);
			
			KdPrint(("[ndis_hk] new_NdisRegisterProtocol(!TCPIP): 0x%x\n", *Status));
			__leave;
		}
		
		// create PROTOCOL_TO_CHARS
		pchars = (struct PROTOCOL_CHARS *)malloc_np(sizeof(*pchars) + CharacteristicsLength * 2);
		if (pchars == NULL) {
			
			KdPrint(("[ndis_hk] new_NdisRegisterProtocol: malloc_np!\n"));
			
			// simulate error
			*Status = NDIS_STATUS_RESOURCES;
			__leave;
		}
		memset(pchars, 0, sizeof(*pchars) + CharacteristicsLength);
		
		pchars->magic = PCHARS_MAGIC;
		
		// save copy of ProtocolCharacteristics
		pchars->chars_len = CharacteristicsLength;
		memcpy(PCHARS_OLD_CHARS(pchars), ProtocolCharacteristics, CharacteristicsLength);
		
		// generate ASM code for handlers
		
		GENERATE_ASM_STUB(pchars, OpenAdapterCompleteHandler);
		GENERATE_ASM_STUB(pchars, ReceiveHandler);
		GENERATE_ASM_STUB(pchars, TransferDataCompleteHandler);
		GENERATE_ASM_STUB(pchars, ReceivePacketHandler);
		GENERATE_ASM_STUB(pchars, SendCompleteHandler);
		GENERATE_ASM_STUB(pchars, RequestCompleteHandler);
		GENERATE_ASM_STUB(pchars, PnPEventHandler);

		// prepare new ProtocolCharacteristics
		new_ProtocolCharacteristics = PCHARS_NEW_CHARS(pchars);
		
		memcpy(new_ProtocolCharacteristics, ProtocolCharacteristics, CharacteristicsLength);
		
		// patch new ProtocolCharacteristics
		
		KdPrint(("[ndis_hk] new_NdisRegisterProtocol: MajorNdisVersion %u (len: %u)\n",
			new_ProtocolCharacteristics->MajorNdisVersion, CharacteristicsLength));
		
		new_ProtocolCharacteristics->OpenAdapterCompleteHandler = (OPEN_ADAPTER_COMPLETE_HANDLER)(pchars->asm_OpenAdapterCompleteHandler);
		
		if (new_ProtocolCharacteristics->ReceiveHandler != NULL)
			new_ProtocolCharacteristics->ReceiveHandler = (RECEIVE_HANDLER)(pchars->asm_ReceiveHandler);
		
		if (new_ProtocolCharacteristics->TransferDataCompleteHandler != NULL)
			new_ProtocolCharacteristics->TransferDataCompleteHandler =
			(TRANSFER_DATA_COMPLETE_HANDLER)(pchars->asm_TransferDataCompleteHandler);
		
		if (new_ProtocolCharacteristics->MajorNdisVersion >= 4 &&
			new_ProtocolCharacteristics->ReceivePacketHandler != NULL)
			new_ProtocolCharacteristics->ReceivePacketHandler = (RECEIVE_PACKET_HANDLER)(pchars->asm_ReceivePacketHandler);
		
		// not checking for NULL! this function must be defined see new_SendCompleteHandler
		new_ProtocolCharacteristics->SendCompleteHandler = (SEND_COMPLETE_HANDLER)(pchars->asm_SendCompleteHandler);

		new_ProtocolCharacteristics->RequestCompleteHandler = (REQUEST_COMPLETE_HANDLER)(pchars->asm_RequestCompleteHandler);
		
		if (new_ProtocolCharacteristics->MajorNdisVersion >= 4)
			new_ProtocolCharacteristics->PnPEventHandler = (PNP_EVENT_HANDLER)(pchars->asm_PnPEventHandler);

		// call original function with new ProtocolCharacteristics
		HOOKED_OLD_FN(NdisRegisterProtocol)(Status, NdisProtocolHandle,
			new_ProtocolCharacteristics, CharacteristicsLength);
		
		KdPrint(("[ndis_hk] new_NdisRegisterProtocol: 0x%x\n", *Status));
		
		if (*Status != NDIS_STATUS_SUCCESS)
			__leave;
		
		// for "TCPIP" protocol save pchars
		if (wcscmp(ProtocolCharacteristics->Name.Buffer, L"TCPIP") == 0) {
			g_tcpip_pchars[0] = pchars;

			// and initialize some related globals
			KeInitializeMutex(&g_request.guard, 0);
			NdisInitializeEvent(&g_request.event);
			g_request.pend_req = NULL;
		
		} else {
			// working with TCPIP/WAN protocol
			g_tcpip_pchars[1] = pchars;
		}
		
		// save NdisProtocolHandle -> pchars
		status = add_av(*NdisProtocolHandle, pchars, PROTOCOL_TO_PCHARS, FALSE);
		if (status != STATUS_SUCCESS) {
			
			// deregister protocol
			NdisDeregisterProtocol(Status, *NdisProtocolHandle);
			
			// simulate error
			*Status = NDIS_STATUS_RESOURCES;
			__leave;
		}
		
		// don't free pchars
		pchars = NULL;
	
	} __except((*Status = GetExceptionCode(), EXCEPTION_EXECUTE_HANDLER)) {
		KdPrint(("[ndis_hk] new_NdisRegisterProtocol: exception 0x%x!\n", *Status));
	}

	if (pchars != NULL)
		free(pchars);
}

/**
 * Hooked NdisDeregisterProtocol.
 * Function deletes NDIS_PROTOCOL_CHARACTERISTICS by NdisProtocolHandle
 * and calls original NdisDeregisterProtocol function
 */
VOID
new_NdisDeregisterProtocol(
    OUT PNDIS_STATUS  Status,
    IN NDIS_HANDLE  NdisProtocolHandle)
{
	// delete NdisProtocolHandle -> pchars
	del_av(NdisProtocolHandle, PROTOCOL_TO_PCHARS, FALSE);

	// call original handler
	HOOKED_OLD_FN(NdisDeregisterProtocol)(Status, NdisProtocolHandle);
}

/**
 * Hooked NdisOpenAdapter.
 * Function creates struct ADAPTER_PROTOCOL, calls original NdisOpenAdapter and on success addes
 * ADAPTER_PROTOCOL to related PROTOCOL_CHARS. ADAPTER_PROTOCOL is added in "av" with NdisBindingHandle
 * as key in open adapter completion. ADAPTER_PROTOCOL is added into PROTOCOL_CHARS to help completion
 * find ADAPTER_PROTOCOL by PROTOCOL_CHARS and ProtocolBindingContext.
 */
VOID
new_NdisOpenAdapter(
	OUT	PNDIS_STATUS			Status,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲专一区二区三区| 日韩一区二区三区视频| 欧美精品一二三四| 亚洲欧美综合另类在线卡通| 日本不卡一区二区| 在线观看亚洲a| 亚洲欧洲国产专区| 国产在线视频一区二区三区| 欧美妇女性影城| 一区二区三区毛片| 99久久伊人久久99| 久久久99精品免费观看| 精品亚洲欧美一区| 欧美一区二区三区系列电影| 亚洲v中文字幕| 欧美在线免费观看视频| 自拍视频在线观看一区二区| 国产精品香蕉一区二区三区| 精品国产三级电影在线观看| 日韩和欧美一区二区| 欧美性大战xxxxx久久久| 亚洲精品综合在线| 91亚洲男人天堂| 亚洲视频中文字幕| 91在线一区二区| 亚洲欧美偷拍另类a∨色屁股| 成人ar影院免费观看视频| 国产欧美综合在线| 成人久久久精品乱码一区二区三区| 久久影院午夜论| 国产精品主播直播| 欧美激情资源网| 欧美伦理电影网| 污片在线观看一区二区| 91精品国产综合久久国产大片| 天堂va蜜桃一区二区三区漫画版| 欧美美女一区二区| 奇米影视7777精品一区二区| 日韩欧美电影一区| 国产尤物一区二区| 国产欧美视频在线观看| 成人免费福利片| 一区二区三区四区不卡在线| 欧美色老头old∨ideo| 日本成人在线看| 自拍偷在线精品自拍偷无码专区| av不卡在线播放| 一级日本不卡的影视| 欧美性xxxxxx少妇| 蜜乳av一区二区三区| 国产色综合一区| 99r国产精品| 亚洲a一区二区| 精品久久五月天| a在线欧美一区| 亚洲一区二区三区爽爽爽爽爽| 9191精品国产综合久久久久久| 久久精品免费观看| 欧美国产精品中文字幕| 欧美视频完全免费看| 激情六月婷婷久久| 亚洲精品国产成人久久av盗摄| 91精品国产美女浴室洗澡无遮挡| 国产成人午夜精品5599| 亚洲福利视频导航| 久久久久久久久久久黄色| 色婷婷综合中文久久一本| 美女脱光内衣内裤视频久久网站 | 国产一区二区三区| 国产精品久久久久久久久晋中 | 大美女一区二区三区| 一区二区三区小说| 精品国产乱码久久久久久夜甘婷婷 | 日韩美女视频在线| 成人精品免费视频| 日韩国产一区二| 国产精品电影一区二区| 日韩欧美一区二区在线视频| av网站免费线看精品| 美女任你摸久久| 亚洲夂夂婷婷色拍ww47| 国产三级久久久| 91精品国产高清一区二区三区蜜臀| 成人av在线一区二区三区| 日韩国产精品久久久久久亚洲| 国产精品成人午夜| 精品电影一区二区| 337p亚洲精品色噜噜噜| 日本乱码高清不卡字幕| 国产成人8x视频一区二区| 免费成人美女在线观看.| 亚洲一区在线电影| 日韩毛片高清在线播放| 国产日韩一级二级三级| 日韩精品中文字幕一区二区三区| 欧美午夜宅男影院| 色悠久久久久综合欧美99| 成人av在线播放网址| 韩国精品在线观看| 久久国内精品视频| 日本成人超碰在线观看| 午夜视频在线观看一区| **性色生活片久久毛片| 亚洲国产精华液网站w| 国产香蕉久久精品综合网| 精品免费国产二区三区| 欧美刺激脚交jootjob| 91精品国产一区二区人妖| 欧美高清视频不卡网| 欧美午夜影院一区| 欧美日韩在线播放三区四区| 色天天综合久久久久综合片| 91丝袜美女网| 日本韩国一区二区三区视频| 色综合久久99| 欧美私模裸体表演在线观看| 欧美午夜不卡视频| 9191国产精品| 精品福利一区二区三区免费视频| 精品日本一线二线三线不卡| 亚洲精品一区二区三区在线观看| 天天影视网天天综合色在线播放| 无码av中文一区二区三区桃花岛| 三级不卡在线观看| 韩国理伦片一区二区三区在线播放| 国产一区二区日韩精品| 成人h动漫精品一区二| 91蜜桃传媒精品久久久一区二区| 色菇凉天天综合网| 8x8x8国产精品| 精品国产91洋老外米糕| 日本一区二区动态图| 亚洲黄色尤物视频| 日本va欧美va瓶| 国产乱人伦偷精品视频不卡| 丁香亚洲综合激情啪啪综合| 一本大道久久a久久综合| 欧美日韩国产小视频在线观看| 欧美一区在线视频| 中文字幕欧美激情| 午夜欧美2019年伦理| 国产综合色精品一区二区三区| 成人av午夜影院| 欧美日韩综合不卡| 久久久高清一区二区三区| 一区二区三区精密机械公司| 免费看黄色91| 99精品视频在线免费观看| 91精品在线观看入口| 国产精品丝袜在线| 日韩高清在线电影| 99久久精品国产毛片| 日韩欧美一级在线播放| 国产精品乱码妇女bbbb| 奇米精品一区二区三区在线观看| 成人晚上爱看视频| 日韩丝袜美女视频| 亚洲尤物视频在线| 成人性色生活片| 欧美一级欧美三级在线观看| 中文字幕在线不卡| 麻豆91在线播放免费| 在线观看不卡视频| 欧美高清一级片在线观看| 美女视频黄免费的久久| 色8久久精品久久久久久蜜| 久久精品夜夜夜夜久久| 日韩成人午夜电影| 色猫猫国产区一区二在线视频| 亚洲精品在线观看网站| 亚洲va国产天堂va久久en| 99热在这里有精品免费| 久久影视一区二区| 毛片av中文字幕一区二区| 欧美日免费三级在线| 亚洲丝袜另类动漫二区| 成人免费毛片aaaaa**| 欧美电影精品一区二区| 五月天网站亚洲| 在线观看亚洲精品视频| 亚洲欧美自拍偷拍| 丁香婷婷综合激情五月色| 亚洲精品国产精品乱码不99| 福利一区在线观看| 久久久精品综合| 国产美女久久久久| 精品欧美乱码久久久久久| 男人操女人的视频在线观看欧美| 欧美性xxxxx极品少妇| 亚洲综合小说图片| 91年精品国产| 国产精品传媒在线| 福利视频网站一区二区三区| 国产亚洲欧美在线| 国产美女在线观看一区| 国产日韩欧美高清在线| 国产91精品久久久久久久网曝门| 久久久久久夜精品精品免费| 国产一区91精品张津瑜| 国产午夜精品一区二区三区嫩草 |