日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

硬件断点 DrxHook

發布時間:2024/9/5 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 硬件断点 DrxHook 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

硬件斷點的實現需要依賴于調試寄存器

DR0~DR7 ?調試寄存器

DR0~DR3-----調試地址寄存器
DR4~DR5-----保留
DR6 -----調試狀態寄存器 指示哪個調試寄存器被命中
DR7 -----調試控制寄存器

?

關于Dr7寄存器每個標志位的解釋:

?

總結如下

DR7調試控制寄存器:
R/W0~R/W3:與DR0~DR3相對應,用來指定監控地址的訪問類型,表示意義如下:
? ? ? ? ? ? ? 00:僅當執行對應的地址時中斷
? ? ? ? ? ? ? 01:僅當寫入對應的地址時中斷
? ? ? ? ? ? ? 10:基本不用
? ? ? ? ? ? ? 11:讀取對應的地址時中斷,讀取指令的指令除外

?

LEN0~LEN3:與DR0~DR3相對應,用來指定監控地址的長度,意義如下:
? ? ? ? ? ? ? ?00:一個字節長
? ? ? ? ? ? ? ?01:兩個字節長
? ? ? ? ? ? ? ?10:未定義或者代表8字節,具體視CPU而定
? ? ? ? ? ? ? ?11:四個字節長

L0~L3:與DR0~DR3相對應,意思表示僅對當前

?

接下來看看兩個Windows提供的兩個API函數,GetThreadContext和SetThreadContext來獲取或者時設置線程的上下文,什么是線程的上下文,就是線程運行時的各種寄存器的信息,比如調試寄存器,浮點寄存器,控制寄存器等等,在應用層是不能直接操作Drx寄存器的值,但可以調用這兩個api來讀寫線程的上下文,來達到設置硬件斷點的目的,如果想對某個進程設置硬件斷點,就需要對它的每個線程都調用SetThreadContext()函數,設置Drx寄存器的值。

BOOL WINAPI GetThreadContext(__in HANDLE hThread,__inout LPCONTEXT lpContext ); BOOL WINAPI SetThreadContext(__in HANDLE hThread,__in const CONTEXT *lpContext );

?在SSDT表中對應的NtGetContextThread和NtSetContextThread

NTSTATUS NtGetContextThread(__in HANDLE ThreadHandle,__inout PCONTEXT ThreadContext)

?

NTSTATUS NtSetContextThread(__in HANDLE ThreadHandle,__in PCONTEXT ThreadContext)

?

這兩個函數都是調用了PsSet/GetContextThread函數

NTSTATUS PsSetContextThread(__in PETHREAD Thread,__in PCONTEXT ThreadContext,__in KPROCESSOR_MODE Mode)NTSTATUS PsGetContextThread(__in PETHREAD Thread,__inout PCONTEXT ThreadContext,__in KPROCESSOR_MODE Mode)

?

我們可以對PsGet/SetContextTread函數Hook來達到對設置硬件斷點的一個過濾,對于目標進程獲取或者設置線程的Context進行處理。

oid __stdcall FilterSetGetContextThread(PETHREAD Thread,PCONTEXT Context,KPROCESSOR_MODE AccessMode) {__try{if (AccessMode == UserMode){//wrk 參數校驗ProbeForReadSmallStructure(Context,sizeof(CONTEXT),PROBE_ALIGNMENT(CONTEXT));}else{*Context = *Context;}if (strstr(GetProcessNameByThread(Thread),"test.exe")!=NULL){if (strstr((char*)PsGetCurrentProcess()+0x16c,"ollydbg") != NULL){return;}//如果是要獲得調試寄存器的值,將Flags 的獲得調試寄存器清零,if (Context->ContextFlags | CONTEXT_DEBUG_REGISTERS){Context->ContextFlags = ~CONTEXT_DEBUG_REGISTERS;}}}__except(EXCEPTION_EXECUTE_HANDLER){return;} }

?

typedef NTSTATUS (*PSGETCONTEXTTHREAD)(PETHREAD Thread,PCONTEXT Context,KPROCESSOR_MODE AccessMode);typedef NTSTATUS (*PSSETCONTEXTTHREAD)(PETHREAD Thread,PCONTEXT Context,KPROCESSOR_MODE AccessMode);//global PSGETCONTEXTTHREAD PsGetContextThread; PSSETCONTEXTTHREAD PsSetContextThread;ULONG g_JmpGetContextThread; UCHAR g_cGetContextCode[5]; BOOLEAN g_bHookGetContextSuccess; ULONG g_JmpSetContextThread; UCHAR g_cSetContextCode[5]; BOOLEAN g_bHookSetContextSuccess;char* GetProcessNameByThread(PETHREAD Thread) {ULONG ProcessObj;if (MmIsAddressValid(Thread)){ProcessObj = *(ULONG*)((ULONG)Thread + 0x150);return (char*)(ProcessObj+0x16C);}return 0; }void PageProtectOn() {__asm{//恢復內存保護 mov eax,cr0or eax,10000hmov cr0,eaxsti} }void PageProtectOff() {__asm{//去掉內存保護 climov eax,cr0and eax,not 10000hmov cr0,eax} }BOOLEAN Jmp_HookFunction(IN ULONG Destination,IN ULONG Source,IN UCHAR *Ori_Code) {ULONG Jmp_Offest;UCHAR Jmp_Code[5] = {0xE9};KSPIN_LOCK lock;KIRQL irql;if (Destination==0||Source==0){DbgPrint("Params error!");return FALSE;}RtlCopyMemory(Ori_Code,(PVOID)Destination,5);Jmp_Offest = Source - Destination-5;*(ULONG*)&Jmp_Code[1] = Jmp_Offest;KeInitializeSpinLock (&lock );KeAcquireSpinLock(&lock,&irql);PageProtectOff();RtlCopyMemory((PVOID)Destination,Jmp_Code,5);PageProtectOn();KeReleaseSpinLock (&lock,irql);return TRUE; }VOID Res_HookFunction(IN ULONG Destination,IN UCHAR *Ori_Code,IN ULONG Length) {KSPIN_LOCK lock;KIRQL irql;if (Destination==0||Ori_Code==0){ return; }KeInitializeSpinLock (&lock );KeAcquireSpinLock(&lock,&irql);PageProtectOff();RtlCopyMemory((PVOID)Destination,Ori_Code,Length);PageProtectOn();KeReleaseSpinLock (&lock,irql); }FORCEINLINEVOIDProbeForReadSmallStructure (IN PVOID Address,IN SIZE_T Size,IN ULONG Alignment) //wrk源碼 {ASSERT((Alignment == 1) || (Alignment == 2) ||(Alignment == 4) || (Alignment == 8) ||(Alignment == 16));if ((Size == 0) || (Size >= 0x10000)) {ASSERT(0);ProbeForRead(Address, Size, Alignment);} else {if (((ULONG_PTR)Address & (Alignment - 1)) != 0) {ExRaiseDatatypeMisalignment();}if ((PUCHAR)Address >= (UCHAR * const)MM_USER_PROBE_ADDRESS) {Address = (UCHAR * const)MM_USER_PROBE_ADDRESS;}_ReadWriteBarrier();*(volatile UCHAR *)Address;} }void __stdcall FilterSetGetContextThread(PETHREAD Thread,PCONTEXT Context,KPROCESSOR_MODE AccessMode) {__try{if (AccessMode == UserMode){//wrk 參數校驗ProbeForReadSmallStructure(Context,sizeof(CONTEXT),PROBE_ALIGNMENT(CONTEXT));}else{*Context = *Context;}if (strstr(GetProcessNameByThread(Thread),"test.exe")!=NULL){if (strstr((char*)PsGetCurrentProcess()+0x16c,"ollydbg") != NULL){return;}//如果是要獲得調試寄存器的值,將Flags 的獲得調試寄存器清零,if (Context->ContextFlags | CONTEXT_DEBUG_REGISTERS){Context->ContextFlags = ~CONTEXT_DEBUG_REGISTERS;}}}__except(EXCEPTION_EXECUTE_HANDLER){return;} }void __declspec(naked) NewGetContextThread() {__asm{mov edi,edipush ebpmov ebp,esppush [ebp+0x10]push [ebp+0xc]push [ebp+0x8]call FilterSetGetContextThreadmov esp,ebppop ebpmov edi,edipush ebpmov ebp,espjmp g_JmpGetContextThread} }void __declspec(naked) NewSetContextThread() {__asm{mov edi,edipush ebpmov ebp,esppush [ebp+0x10]push [ebp+0xc]push [ebp+0x8]call FilterSetGetContextThreadmov esp,ebppop ebpmov edi,edipush ebpmov ebp,espjmp g_JmpSetContextThread} }void HookSetGetContextThread() {g_JmpGetContextThread = (ULONG)PsGetContextThread + 0x5;g_bHookGetContextSuccess = Jmp_HookFunction((ULONG)PsGetContextThread,(ULONG)NewGetContextThread,g_cGetContextCode);g_JmpSetContextThread = (ULONG)PsSetContextThread + 0x5;g_bHookSetContextSuccess = Jmp_HookFunction((ULONG)PsSetContextThread,(ULONG)NewSetContextThread,g_cSetContextCode); }void UnHookSetGetContextThread() {if (g_bHookGetContextSuccess){Res_HookFunction((ULONG)PsGetContextThread,g_cGetContextCode,5);}if (g_bHookSetContextSuccess){Res_HookFunction((ULONG)PsSetContextThread,g_cSetContextCode,5);} }void DriverUnLoad(PDRIVER_OBJECT pDriverObject) {UnHookSetGetContextThread(); }NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING usRegistPath) {UNICODE_STRING usFuncName1,usFuncName2;RtlInitUnicodeString(&usFuncName1,L"PsGetContextThread");RtlInitUnicodeString(&usFuncName2,L"PsSetContextThread");PsGetContextThread = (PSGETCONTEXTTHREAD)MmGetSystemRoutineAddress(&usFuncName1);PsSetContextThread = (PSSETCONTEXTTHREAD)MmGetSystemRoutineAddress(&usFuncName2);HookSetGetContextThread();pDriverObject->DriverUnload = DriverUnLoad;return STATUS_SUCCESS; }

?

?

?

在ring0可以直接改變Drx寄存器的值,設置硬件斷點來達到對某個函數的hook,這里以NtOpenProcess為例。我們知道內核層產生的異常都會由RtlDispatchException函數進行分發處理,所以我們首先要InlineHook RtlDispatchException函數,在對異常進行分發時先對異常進行過濾,如果異常地址是我們設置的硬件斷點“監控”的地址,則改變EIP,達到對目標函數“hook”的目的。

先InlineHook RtlDispatchException ,RtlDispatchException未導出,在KiDispatchException中被調用,KiDispatchException也未導出,采用的方法是暴力搜索整個內核文件Ntoskrnl.exe來匹配特征碼

VOID HookRtlDispatchException() {PLDR_DATA_TABLE_ENTRY Ldr = NULL;//構建RtlDispatchException 的特征碼// nt!KiDispatchException+0x160:// 83eff040 53 push ebx// 83eff041 ff750c push dword ptr [ebp+0Ch]// 83eff044 ff7510 push dword ptr [ebp+10h]// 83eff047 ff15bc49fb83 call dword ptr [nt!KiDebugRoutine (83fb49bc)]// 83eff04d 84c0 test al,al// 83eff04f 0f859d000000 jne nt!KiDispatchException+0x211 (83eff0f2)// 83eff055 57 push edi// 83eff056 53 push ebx// 83eff057 e8 a372ffff call nt!RtlDispatchException (83ef62ff)// kd> u 83ef62ff// nt!RtlDispatchException:// 83ef62ff 8bff mov edi,edi// 83ef6301 55 push ebp// 83ef6302 8bec mov ebp,esp// 83ef6304 83e4f8 and esp,0FFFFFFF8h// 83ef6307 83ec6c sub esp,6Ch// 83ef630a 53 push ebx// 83ef630b 56 push esi// 83ef630c 57 push edi SIGNATURE_INFO SignCode[] = {{0x84,10},{0xc0,9},{0x57,2},{0x53,1},{0xE8,0}}; #ifndef _DEBUG__asm int 3 #endif g_bHookSuccess = FALSE;Ldr = SearchDriver(g_LocalDriverObj,L"ntoskrnl.exe");if (!Ldr) return;g_RtlDispatchExeceptionAddress = SearchAddressForSignFromPE((ULONG_PTR)(Ldr->DllBase),Ldr->SizeOfImage,SignCode); if (!MmIsAddressValid((PVOID)g_RtlDispatchExeceptionAddress)) return;//利用偏移轉成絕對地址 +5 過e8 a372ffff 這五個字節g_RtlDispatchExeceptionAddress = g_RtlDispatchExeceptionAddress+5 + *(ULONG_PTR*)(g_RtlDispatchExeceptionAddress+1);//過被占的前5個字節,繼續執行的代碼DbgPrint("RtlDispatchExceptionAddresss:%x",g_RtlDispatchExeceptionAddress);g_JmpOrigDispatchException = g_RtlDispatchExeceptionAddress + 5;g_bHookSuccess = Jmp_HookFunction(g_RtlDispatchExeceptionAddress,(ULONG_PTR)NewRtlDispatchException,g_cDisExceptionCode); }

?

然后將要“監控”的目標地址寫入Dr0寄存器,當目標地址被執行的時候,觸發異常,執行RtlDispatchException函數,

VOID SetMonitor(PVOID Address) {__asm{mov eax , Addressmov DR0 , eaxmov eax , 0x02 //全局的,僅當執行時產生異常 mov DR7 , eax} }VOID CancelMonitor(PVOID Address) {__asm{xor eax , eaxmov DR0 , eaxmov DR7 , eax} }

?

RtlDispatchException的過濾函數,在這里改變Eip的值,異常處理完畢以后,開始執行NewNtOpenProcess?

ULONG_PTR _stdcallFilterRtlDispatchException (IN PEXCEPTION_RECORD ExceptionRecord,IN PCONTEXT ContextRecord) {//DbgPrint("Address:%x -- ExceptionCode:%x\r\n",ExceptionRecord->ExceptionAddress,ExceptionRecord->ExceptionCode);//如果是NtOpenProcess處的異常if (ExceptionRecord->ExceptionAddress == (PVOID)KeServiceDescriptorTable.ServiceTableBase[190]){KdPrint(("<Except addresss>:%X <seh callBack>:%X -- <Except code>:%X",ContextRecord->Eip,ExceptionRecord->ExceptionAddress,ExceptionRecord->ExceptionCode));//將執行的下一條指令置為NewNtOpenProcess() 函數的地址,CPU接著去執行NewNtOpenProcessContextRecord->Eip = (ULONG_PTR)NewNtOpenProcess;//返回TRUE,異常不再進行派發return 1;}return 0; }

?

NewNtOpenProcess只是簡單地調用FilterNtOpenProcess進行簡單的調用,打印一些基本的信息。

void __declspec(naked) NewNtOpenProcess() {__asm{pushadpushfdcall FilterNtOpenProcesspopfdpopadmov edi , edipush espmov ebp , esp//跳過NtOpenProcess的前五個字節,//避免再次觸發異常 jmp g_JmpOrigNtOpenProcess} }

?

完整的工程代碼

#ifndef CXX_DRXHOOK_H #define CXX_DRXHOOK_H#include <ntifs.h> #include <devioctl.h> #endif typedef struct _SYSTEM_SERVICE_TABLE32 {ULONG_PTR* ServiceTableBase;ULONG_PTR* ServiceCounterTableBase;ULONG32 NumberOfServices;ULONG_PTR* ParamTableBase; } SYSTEM_SERVICE_TABLE32, *PSYSTEM_SERVICE_TABLE32;typedef struct _SYSTEM_SERVICE_TABLE64{ULONG_PTR* ServiceTableBase; ULONG_PTR* ServiceCounterTableBase; ULONG64 NumberOfServices; ULONG_PTR* ParamTableBase; } SYSTEM_SERVICE_TABLE64, *PSYSTEM_SERVICE_TABLE64;#ifndef _WIN64 #define _SYSTEM_SERVICE_TABLE _SYSTEM_SERVICE_TABLE64 #define SYSTEM_SERVICE_TABLE SYSTEM_SERVICE_TABLE64 #define PSYSTEM_SERVICE_TABLE PSYSTEM_SERVICE_TABLE64 #else #define _SYSTEM_SERVICE_TABLE _SYSTEM_SERVICE_TABLE32 #define SYSTEM_SERVICE_TABLE SYSTEM_SERVICE_TABLE32 #define PSYSTEM_SERVICE_TABLE PSYSTEM_SERVICE_TABLE32 #endif__declspec(dllimport) SYSTEM_SERVICE_TABLE KeServiceDescriptorTable;//結構聲明 typedef struct _SIGNATURE_INFO{UCHAR cSingature;int Offset; }SIGNATURE_INFO,*PSIGNATURE_INFO;typedef struct _LDR_DATA_TABLE_ENTRY // 24 elements, 0x78 bytes (sizeof) { /*0x000*/ struct _LIST_ENTRY InLoadOrderLinks; // 2 elements, 0x8 bytes (sizeof) /*0x008*/ PVOID ExceptionTable; /*0x00C*/ ULONG ExceptionTableSize;/*0x010*/ struct _LIST_ENTRY InInitializationOrderLinks; // 2 elements, 0x8 bytes (sizeof) /*0x018*/ VOID* DllBase; /*0x01C*/ VOID* EntryPoint; /*0x020*/ ULONG32 SizeOfImage; /*0x024*/ struct _UNICODE_STRING FullDllName; // 3 elements, 0x8 bytes (sizeof) /*0x02C*/ struct _UNICODE_STRING BaseDllName; // 3 elements, 0x8 bytes (sizeof) /*0x034*/ ULONG32 Flags; /*0x038*/ UINT16 LoadCount; /*0x03A*/ UINT16 TlsIndex; union // 2 elements, 0x8 bytes (sizeof) { /*0x03C*/ struct _LIST_ENTRY HashLinks; // 2 elements, 0x8 bytes (sizeof) struct // 2 elements, 0x8 bytes (sizeof) { /*0x03C*/ VOID* SectionPointer; /*0x040*/ ULONG32 CheckSum; }; }; union // 2 elements, 0x4 bytes (sizeof) { /*0x044*/ ULONG32 TimeDateStamp; /*0x044*/ VOID* LoadedImports; }; /*0x048*/ VOID* EntryPointActivationContext; /*0x04C*/ VOID* PatchInformation; /*0x050*/ struct _LIST_ENTRY ForwarderLinks; // 2 elements, 0x8 bytes (sizeof) /*0x058*/ struct _LIST_ENTRY ServiceTagLinks; // 2 elements, 0x8 bytes (sizeof) /*0x060*/ struct _LIST_ENTRY StaticLinks; // 2 elements, 0x8 bytes (sizeof) /*0x068*/ VOID* ContextInformation; /*0x06C*/ ULONG32 OriginalBase; /*0x070*/ union _LARGE_INTEGER LoadTime; // 4 elements, 0x8 bytes (sizeof) }LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;ULONG_PTR _stdcallFilterRtlDispatchException (IN PEXCEPTION_RECORD ExceptionRecord,IN PCONTEXT ContextRecord); VOID HookRtlDispatchException(); VOID UnloadDriver(PDRIVER_OBJECT DriverObject); PLDR_DATA_TABLE_ENTRY SearchDriver(PDRIVER_OBJECT pDriverObject,wchar_t *strDriverName); BOOLEAN Jmp_HookFunction(IN ULONG Destination,IN ULONG Source,IN UCHAR *Ori_Code); VOID ResumeHookFunction(IN ULONG Destination,IN UCHAR *Ori_Code,IN ULONG Length); ULONG_PTR SearchAddressForSignFromPE(ULONG_PTR uStartBase,ULONG_PTR uSearchLength,SIGNATURE_INFO SignatureInfo[5]); VOID WPOFF(); NTSTATUS _stdcall FilterNtOpenProcess (); VOID WPON(); VOID SetMonitor(PVOID Address); VOID CancelMonitor(PVOID Address);#ifndef CXX_DRXHOOK_H # include "DrxHook.h" #endif#include <ntimage.h>KIRQL Irql; PDRIVER_OBJECT g_LocalDriverObj; BOOLEAN g_bHookSuccess; ULONG_PTR g_RtlDispatchExeceptionAddress; ULONG_PTR g_JmpOrigDispatchException; UCHAR g_cDisExceptionCode[5];ULONG_PTR g_JmpOrigNtOpenProcess;void __declspec(naked) NewNtOpenProcess() {__asm{pushadpushfdcall FilterNtOpenProcesspopfdpopadmov edi , edipush espmov ebp , esp//跳過NtOpenProcess的前五個字節,//避免再次觸發異常 jmp g_JmpOrigNtOpenProcess} }void __declspec(naked) NewRtlDispatchException() {__asm{mov edi,edipush ebpmov ebp , esppushad //保存所有寄存器pushfd //保存標志寄存器push [ebp+0xc]push [ebp+0x8]call FilterRtlDispatchException//檢測返回值是否為0 test eax , eaxjz __SafeExit // 若eax為0 跳轉__SafeExit popfdpopadmov esp , ebppop ebp// 將KiDispatchException中對于RtlDispatchException的返回值進行校驗,// 如果為0 則對異常進行重新派發,為1則不再做處理mov eax ,0x01 retn 0x8 //平衡堆棧,兩個參數8字節 __SafeExit:popfdpopadmov esp , ebppop ebp//先執行RtlDispatchException原來的5個字節的內容 mov edi , edipush ebpmov ebp , espjmp g_JmpOrigDispatchException} }NTSTATUS _stdcall FilterNtOpenProcess () {DbgPrint("FilterNtOpenProcess---%s\r\n",(ULONG_PTR)PsGetCurrentProcess()+0x16c);return STATUS_SUCCESS; }ULONG_PTR _stdcallFilterRtlDispatchException (IN PEXCEPTION_RECORD ExceptionRecord,IN PCONTEXT ContextRecord) {//DbgPrint("Address:%x -- ExceptionCode:%x\r\n",ExceptionRecord->ExceptionAddress,ExceptionRecord->ExceptionCode);//如果是NtOpenProcess處的異常if (ExceptionRecord->ExceptionAddress == (PVOID)KeServiceDescriptorTable.ServiceTableBase[190]){KdPrint(("<Except addresss>:%X <seh callBack>:%X -- <Except code>:%X",ContextRecord->Eip,ExceptionRecord->ExceptionAddress,ExceptionRecord->ExceptionCode));//將執行的下一條指令置為NewNtOpenProcess() 函數的地址,CPU接著去執行NewNtOpenProcessContextRecord->Eip = (ULONG_PTR)NewNtOpenProcess;//返回TRUE,異常不再進行派發return 1;}return 0; } VOID SetMonitor(PVOID Address) {__asm{mov eax , Addressmov DR0 , eaxmov eax , 0x02 //全局的,僅當執行時產生異常 mov DR7 , eax} }VOID CancelMonitor(PVOID Address) {__asm{xor eax , eaxmov DR0 , eaxmov DR7 , eax} } NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING RegistryString) {NTSTATUS Status = STATUS_SUCCESS;g_LocalDriverObj = pDriverObject;HookRtlDispatchException();g_JmpOrigNtOpenProcess = (ULONG_PTR)(KeServiceDescriptorTable.ServiceTableBase[190] + 0x5);//為了方便,這里寫死了,NtOpenProcess Win7 x86 SetMonitor((PVOID)KeServiceDescriptorTable.ServiceTableBase[190]);return Status; }VOID HookRtlDispatchException() {PLDR_DATA_TABLE_ENTRY Ldr = NULL;//構建RtlDispatchException 的特征碼// nt!KiDispatchException+0x160:// 83eff040 53 push ebx// 83eff041 ff750c push dword ptr [ebp+0Ch]// 83eff044 ff7510 push dword ptr [ebp+10h]// 83eff047 ff15bc49fb83 call dword ptr [nt!KiDebugRoutine (83fb49bc)]// 83eff04d 84c0 test al,al// 83eff04f 0f859d000000 jne nt!KiDispatchException+0x211 (83eff0f2)// 83eff055 57 push edi// 83eff056 53 push ebx// 83eff057 e8 a372ffff call nt!RtlDispatchException (83ef62ff)// kd> u 83ef62ff// nt!RtlDispatchException:// 83ef62ff 8bff mov edi,edi// 83ef6301 55 push ebp// 83ef6302 8bec mov ebp,esp// 83ef6304 83e4f8 and esp,0FFFFFFF8h// 83ef6307 83ec6c sub esp,6Ch// 83ef630a 53 push ebx// 83ef630b 56 push esi// 83ef630c 57 push edi SIGNATURE_INFO SignCode[] = {{0x84,10},{0xc0,9},{0x57,2},{0x53,1},{0xE8,0}}; #ifndef _DEBUG__asm int 3 #endif g_bHookSuccess = FALSE;Ldr = SearchDriver(g_LocalDriverObj,L"ntoskrnl.exe");if (!Ldr) return;g_RtlDispatchExeceptionAddress = SearchAddressForSignFromPE((ULONG_PTR)(Ldr->DllBase),Ldr->SizeOfImage,SignCode); if (!MmIsAddressValid((PVOID)g_RtlDispatchExeceptionAddress)) return;//利用偏移轉成絕對地址 +5 過e8 a372ffff 這五個字節g_RtlDispatchExeceptionAddress = g_RtlDispatchExeceptionAddress+5 + *(ULONG_PTR*)(g_RtlDispatchExeceptionAddress+1);//過被占的前5個字節,繼續執行的代碼DbgPrint("RtlDispatchExceptionAddresss:%x",g_RtlDispatchExeceptionAddress);g_JmpOrigDispatchException = g_RtlDispatchExeceptionAddress + 5;g_bHookSuccess = Jmp_HookFunction(g_RtlDispatchExeceptionAddress,(ULONG_PTR)NewRtlDispatchException,g_cDisExceptionCode); }//搜索整個PE文件的 ULONG_PTR SearchAddressForSignFromPE(ULONG_PTR uStartBase,ULONG_PTR uSearchLength,SIGNATURE_INFO SignatureInfo[5]) {UCHAR *p;ULONG_PTR u_index1,u_index2;//ULONG uIndex; PIMAGE_DOS_HEADER pimage_dos_header;PIMAGE_NT_HEADERS pimage_nt_header;PIMAGE_SECTION_HEADER pimage_section_header;if(!MmIsAddressValid((PVOID)uStartBase)){ return 0; }pimage_dos_header = (PIMAGE_DOS_HEADER)uStartBase;pimage_nt_header = (PIMAGE_NT_HEADERS)((ULONG)uStartBase+pimage_dos_header->e_lfanew);pimage_section_header = (PIMAGE_SECTION_HEADER)((ULONG)pimage_nt_header+sizeof(IMAGE_NT_HEADERS));for (u_index1 = 0;u_index1<pimage_nt_header->FileHeader.NumberOfSections;u_index1++){//#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable.//#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable.//#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable.//0x60000000 = IMAGE_SCN_MEM_EXECUTE|IMAGE_SCN_MEM_READif (pimage_section_header[u_index1].Characteristics&0x60000000){p = (UCHAR*)uStartBase + pimage_section_header[u_index1].VirtualAddress;for (u_index2 = 0;u_index2<pimage_section_header[u_index1].Misc.VirtualSize;u_index2++){if (!MmIsAddressValid((p-SignatureInfo[0].Offset))||!MmIsAddressValid((p-SignatureInfo[4].Offset))){p++;continue;}__try{if (*(p-SignatureInfo[0].Offset)==SignatureInfo[0].cSingature&&*(p-SignatureInfo[1].Offset)==SignatureInfo[1].cSingature&&*(p-SignatureInfo[2].Offset)==SignatureInfo[2].cSingature&&*(p-SignatureInfo[3].Offset)==SignatureInfo[3].cSingature&&*(p-SignatureInfo[4].Offset)==SignatureInfo[4].cSingature){return (ULONG_PTR)p;}}__except(EXCEPTION_EXECUTE_HANDLER){DbgPrint("Search error!");}p++;}}}return 0; }BOOLEAN Jmp_HookFunction(IN ULONG Destination,IN ULONG Source,IN UCHAR *Ori_Code) {ULONG jmp_offset;UCHAR jmp_code[5] = {0xE9};KSPIN_LOCK lock;KIRQL irql;if (Destination==0||Source==0){DbgPrint("Params error!");return FALSE;}RtlCopyMemory(Ori_Code,(PVOID)Destination,5);jmp_offset = Source - (Destination+5);*(ULONG*)&jmp_code[1] = jmp_offset; //放入偏移 KeInitializeSpinLock (&lock );KeAcquireSpinLock(&lock,&irql);WPOFF();RtlCopyMemory((PVOID)Destination,jmp_code,5);WPON();KeReleaseSpinLock (&lock,irql);return TRUE; }VOID WPOFF() {ULONG_PTR cr0 = 0;Irql = KeRaiseIrqlToDpcLevel();cr0 =__readcr0();cr0 &= 0xfffffffffffeffff;__writecr0(cr0);}VOID WPON() {ULONG_PTR cr0=__readcr0();cr0 |= 0x10000;__writecr0(cr0);KeLowerIrql(Irql); }//簡單的通過鏈表獲得內核模塊的基本信息 PLDR_DATA_TABLE_ENTRY SearchDriver(PDRIVER_OBJECT pDriverObject,wchar_t *strDriverName) {LDR_DATA_TABLE_ENTRY *pdata_table_entry,*ptemp_data_table_entry;PLIST_ENTRY plist;UNICODE_STRING str_module_name;RtlInitUnicodeString(&str_module_name,strDriverName);pdata_table_entry = (LDR_DATA_TABLE_ENTRY*)pDriverObject->DriverSection;if (!pdata_table_entry){return 0;}plist = pdata_table_entry->InLoadOrderLinks.Flink;while(plist!= &pdata_table_entry->InLoadOrderLinks){ptemp_data_table_entry = (LDR_DATA_TABLE_ENTRY *)plist;//DbgPrint("%wZ",&pTempDataTableEntry->BaseDllName);if (0==RtlCompareUnicodeString(&ptemp_data_table_entry->BaseDllName,&str_module_name,FALSE)){return ptemp_data_table_entry;}plist = plist->Flink;}return 0; }VOID UnloadDriver(PDRIVER_OBJECT DriverObject) {if (g_bHookSuccess){ResumeHookFunction(g_RtlDispatchExeceptionAddress,g_cDisExceptionCode,0x5);}}VOID ResumeHookFunction(IN ULONG Destination,IN UCHAR *Ori_Code,IN ULONG Length) {KSPIN_LOCK lock;KIRQL irql;if (Destination==0||Ori_Code==0) return; KeInitializeSpinLock (&lock );KeAcquireSpinLock(&lock,&irql);WPOFF();RtlCopyMemory((PVOID)Destination,Ori_Code,Length);WPON();KeReleaseSpinLock (&lock,irql); }

?

轉載于:https://www.cnblogs.com/lanrenxinxin/p/4680320.html

總結

以上是生活随笔為你收集整理的硬件断点 DrxHook的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品专区在线 | 成人黄色国产 | 婷婷色网| 免费在线观看视频一区 | 国产伦精品一区二区三区在线 | 正在播放国产一区二区 | 黄污视频网站大全 | 色99之美女主播在线视频 | 日韩精品免费一区 | 婷婷激情五月 | 日日麻批40分钟视频免费观看 | 婷婷六月综合亚洲 | 欧美a级成人淫片免费看 | 国产精品一区二区免费 | 天天做天天爱天天爽综合网 | 欧美精品国产综合久久 | 在线观看成年人 | www五月婷婷 | 日韩欧美一级二级 | 久久精品国产一区二区三 | 黄色www在线观看 | 欧美另类成人 | 精品国产免费一区二区三区五区 | 午夜精品久久久久久久久久久久 | 黄色网大全 | 高清久久久 | 日日爽日日操 | 超碰在线日韩 | 亚洲一区精品二人人爽久久 | 波多野结依在线观看 | 亚洲最新视频在线播放 | 亚洲欧美精品一区 | 中文字幕免费在线看 | 激情视频国产 | 99久久久国产精品免费99 | 国产小视频你懂的在线 | 成人黄色免费在线观看 | 在线韩国电影免费观影完整版 | 成人免费在线观看入口 | 深夜男人影院 | 日本久热 | 国产在线播放一区二区 | 97超级碰碰 | 黄色在线小网站 | 国产123av| 成人h动漫在线看 | 日本黄色免费观看 | 久久免费影院 | 国产污视频在线观看 | 人人干在线观看 | 中文字幕一区二区三区精华液 | 日韩区欧美久久久无人区 | 久久国产精品久久国产精品 | 成人三级网址 | 国产精品麻豆一区二区三区 | 日韩三级精品 | 国产蜜臀av | 最新中文在线视频 | 国产群p| 免费看国产一级片 | 激情九九| 91九色在线视频 | 久久久久二区 | 高清视频一区二区三区 | 香蕉视频18 | 成人免费在线看片 | 精品国产欧美一区二区 | 免费91麻豆精品国产自产在线观看 | 激情综合网在线观看 | 免费日韩 精品中文字幕视频在线 | 99精品视频中文字幕 | 国产黄色在线网站 | 日韩网站免费观看 | 亚洲91在线 | 九九九免费视频 | 欧亚久久 | 天天操天天干天天 | 久久免费视频1 | 手机在线看a | 国产一区二区在线精品 | 久久黄色免费观看 | 蜜桃av人人夜夜澡人人爽 | 日本丶国产丶欧美色综合 | 91理论电影 | 菠萝菠萝蜜在线播放 | 国产永久免费高清在线观看视频 | 少妇性xxx| 日韩av一区二区三区四区 | 91久久影院 | www欧美日韩 | 欧美最猛性xxxxx亚洲精品 | 一级a性色生活片久久毛片波多野 | 在线观看中文字幕2021 | 人人看人人做人人澡 | 久操视频在线播放 | 久久精品国产免费看久久精品 | 大胆欧美gogo免费视频一二区 | 久久久影视 | 91亚洲国产 | 四虎在线视频 | 欧美国产日韩一区二区三区 | 亚洲精品自拍 | 欧美天天干 | 色av男人的天堂免费在线 | www.狠狠操.com | 日韩一区在线免费观看 | 亚洲一级理论片 | 久久久久久久久久电影 | 91九色蝌蚪视频网站 | 国产黄影院色大全免费 | 欧美日韩在线免费观看视频 | 曰本三级在线 | 日韩午夜电影 | 欧美综合色 | 亚洲区另类春色综合小说校园片 | 日韩中文字幕第一页 | 久久精品国产免费看久久精品 | 日韩高清网站 | 日日夜夜免费精品视频 | 亚洲综合色激情五月 | 日韩a级黄色 | 91九色视频在线观看 | 91在线观看视频 | 96国产在线 | 日韩成人精品一区二区三区 | 日韩一三区 | 久久精品99国产国产精 | 97在线观看 | 亚洲午夜精品在线观看 | 午夜av色| 色的网站在线观看 | 日本中文字幕影院 | 91精品伦理 | 免费在线观看成年人视频 | 有码中文字幕在线观看 | 天天爽天天爽 | 日韩免费中文 | 亚洲三级网站 | 日韩免费视频观看 | av成人免费在线 | 欧美一级免费黄色片 | 97精品国自产拍在线观看 | 国产精品岛国久久久久久久久红粉 | 国产精品欧美在线 | 亚洲乱码国产乱码精品天美传媒 | 成人影片在线播放 | 最近中文字幕大全 | 亚洲精品视频在线免费播放 | 久久精品人人做人人综合老师 | 激情久久综合网 | 国产精品久久久久毛片大屁完整版 | 在线观看网站av | 在线免费观看麻豆视频 | 国产破处精品 | 国产特级毛片aaaaaa | 日韩有码专区 | 九月婷婷人人澡人人添人人爽 | 欧美黑吊大战白妞欧美 | 国产69熟 | 日av免费 | 夜色.com | 天天操天天干天天操天天干 | 成人天堂网 | 久久久2o19精品 | 在线观看韩日电影免费 | 日韩精品久久一区二区 | 99久久日韩精品视频免费在线观看 | 91超级碰 | 国产精品四虎 | 久久国产亚洲精品 | 黄色电影网站在线观看 | 亚洲美女视频网 | 99视频这里只有 | 人人擦 | 日本性高潮视频 | 99精品国产视频 | 成人av在线电影 | 欧美日本在线视频 | 麻豆国产电影 | 欧美另类sm图片 | 国产精品99页 | 国产精品久久久影视 | 中文字幕日韩无 | 久草香蕉在线视频 | 综合视频在线 | 国产黄色片久久 | 中文字幕黄色网 | 99久久婷婷国产综合亚洲 | 成人在线免费观看网站 | 国产在线观看免费av | 国产日韩一区在线 | 黄色三级在线看 | 亚洲每日更新 | 97国产情侣爱久久免费观看 | 超碰在线中文字幕 | 在线a视频免费观看 | 国产精品成久久久久三级 | 日日碰狠狠添天天爽超碰97久久 | 视频在线99 | 奇米先锋 | 午夜国产福利在线 | 在线看av的网址 | 成人四虎 | .国产精品成人自产拍在线观看6 | 久久国产精品区 | 日韩免费在线看 | 婷婷在线播放 | 香蕉精品视频在线观看 | 三级av在线 | 黄网站app在线观看免费视频 | 99久久精品国产网站 | 久久久官网 | 激情五月综合网 | 黄色av网站在线观看免费 | 免费麻豆视频 | 青草草在线视频 | 久久人人爽人人爽人人片av软件 | 日韩在观看线 | www.五月天激情 | 天天干天天拍天天操天天拍 | 国产成人亚洲在线观看 | 国产日产精品久久久久快鸭 | 国产一级性生活视频 | 丁香花中文字幕 | 丝袜网站在线观看 | 亚洲综合激情小说 | 成人动态视频 | 91视频久久久久久 | 午夜精品999 | 国产无遮挡又黄又爽在线观看 | 在线播放 日韩专区 | 亚洲精品白浆高清久久久久久 | 精品视频资源站 | 月下香电影 | 一区二区三区四区不卡 | 久久久国产一区二区 | 777久久久| 久久久污| 这里只有精品视频在线观看 | 免费色视频网站 | 国产日韩av在线 | 青青河边草观看完整版高清 | 国产剧情一区在线 | 五月网婷婷 | 男女免费视频观看 | 九九久久精品视频 | 国产又粗又长的视频 | 午夜性福利 | 久久综合久久综合久久综合 | 黄色在线观看免费网站 | 四虎影视精品成人 | 国产精品男女视频 | 久久不射电影院 | 国内精品一区二区 | 国产精品一区二区你懂的 | 色婷婷综合在线 | 国内精品福利视频 | 日韩三级在线观看 | 亚洲国产中文在线 | 一区二区三区在线不卡 | 日韩精品第1页 | 在线视频在线观看 | 午夜电影av | 国产免费久久av | 欧美夫妻生活视频 | 亚洲黄色一级视频 | 91桃色在线免费观看 | 亚洲狠狠| 亚洲精品国产自产拍在线观看 | 天天舔天天射天天操 | 91亚洲精品久久久久图片蜜桃 | 欧美日韩久久一区 | 久久不色 | 黄色aa久久 | 日韩免费电影网 | 国产精品毛片一区视频 | 在线观看视频h | 亚洲精品国产精品乱码不99热 | 国产123区在线观看 国产精品麻豆91 | 天天操天天操天天操天天操 | 五月天激情在线 | 国产二区视频在线观看 | www中文在线| 国产精品久久久久永久免费 | 免费日韩一区二区 | 韩国在线视频一区 | 7777xxxx| 日精品| 日本中文字幕视频 | 九九热精品在线 | 波多野结衣在线播放视频 | 久艹在线免费观看 | av成人在线观看 | 激情欧美xxxx | 2021国产在线视频 | 亚洲性xxxx| 91在线看 | 九九视频精品免费 | av网站免费线看精品 | 成人在线观看影院 | 日韩午夜电影院 | 欧美日韩精品在线一区二区 | 中文在线www | 午夜私人影院久久久久 | 成人啪啪18免费游戏链接 | 精品国产伦一区二区三区 | a在线观看免费视频 | 免费高清男女打扑克视频 | 久久精品视频免费 | 国产香蕉视频在线播放 | 精品久久久久久久久久久久久久久久久久 | 日日射av | 在线观看av黄色 | 欧美成人基地 | 亚洲 av网站 | 91在线免费观看国产 | 在线观看视频你懂得 | 欧美日韩高清国产 | 欧美一级xxxx| 久久综合射 | 91毛片在线 | 久久婷婷一区二区三区 | 国产九九热视频 | 麻豆视频入口 | 99精品欧美一区二区三区 | 新版资源中文在线观看 | 国产精品亚洲成人 | 黄色一级大片在线观看 | av超碰在线| 亚州精品在线视频 | 97在线影院 | av看片在线观看 | 日韩黄视频 | 91精品视频在线观看免费 | 精品国产成人av在线免 | 天天天干天天天操 | 国产精品白丝av | 免费色网站 | 伊人资源视频在线 | 欧美性生交大片免网 | 国产成人精品一区二区三区网站观看 | 精品产品国产在线不卡 | 91精品啪在线观看国产81旧版 | 亚洲黄色小说网址 | 在线成人小视频 | 最近久乱中文字幕 | 超碰97人人射妻 | 91伊人影院 | 国产精品一区二区你懂的 | 国产一级在线视频 | 9999在线 | 97偷拍视频| 欧美精品免费在线观看 | 2017狠狠干 | 久草在线免费看视频 | 中文字幕一区在线 | 欧美福利片在线观看 | 久久久不卡影院 | 天天翘av| 天天激情站 | 亚洲视频免费在线观看 | 超碰人人在线 | 在线中文字幕av观看 | 久久久久99精品成人片三人毛片 | 欧美日韩69 | 亚洲精品国产高清 | 天天爽天天做 | 国产一级一片免费播放放 | 国产精品毛片一区二区 | 黄色a级片在线观看 | 午夜免费视频网站 | av观看在线观看 | 精品中文字幕在线观看 | 狠狠狠色丁香综合久久天下网 | 高清av免费看 | 天天干天天操天天操 | 国产成人久久精品77777综合 | 中文字幕电影一区 | 在线免费观看的av | 天天操天天曰 | 成人在线免费av | 欧美日韩超碰 | 久久毛片高清国产 | 国产原创在线观看 | 我要看黄色一级片 | 伊人亚洲精品 | 97国产超碰 | 在线观看日韩精品视频 | 色之综合网 | 91三级在线观看 | 欧美性生活久久 | 一级国产视频 | 91精品免费在线 | 国产精品久久久久久久久久东京 | 久草在线免费色站 | 99精品一区二区三区 | 日韩一区二区免费视频 | 国产人成在线观看 | av一本久道久久波多野结衣 | 91视频com | 国产精品亚州 | 99在线视频播放 | 国产成人一二片 | 最新成人av| 久久999久久 | 亚洲成人av一区二区 | 免费在线91| 亚洲国产精品久久久久 | 欧美一级视频免费 | 在线看一区二区 | 日日夜夜天天干 | 在线观看一区二区精品 | 日日操天天射 | 久色网| 午夜精品久久久久久久99水蜜桃 | 911国产| 国产精品女| 日韩av线观看 | 四季av综合网站 | 久久成人资源 | 蜜桃视频色 | 狠狠干成人综合网 | 国产视频在线观看一区 | 欧美a在线看 | 四虎影视国产精品免费久久 | 国内精品免费 | 成人一级在线观看 | 亚洲视频电影在线 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 999视频精品 | 亚洲国产三级在线 | 免费看片成年人 | 99国产在线视频 | 中文字幕中文字幕在线一区 | 亚洲精品资源在线 | www.天天草 | 国产美女免费视频 | 色婷婷激情四射 | 久久精品一区二区三区四区 | 狠狠操电影网 | 福利精品在线 | 久久综合综合久久综合 | 中文字幕av影院 | 国产一区二区网址 | 欧美在线观看视频 | 五月开心六月伊人色婷婷 | 亚洲精品777| 激情伊人五月天久久综合 | 欧美一区二区三区四区夜夜大片 | 91插插插网站 | 在线免费观看国产 | www.香蕉视频在线观看 | 99精品电影 | av东方在线 | 国产天天爽 | 九九热在线视频免费观看 | 综合久久网站 | 在线观看成人小视频 | 久久精品99国产国产 | 免费看片网址 | 欧美亚洲一区二区在线 | 欧美日韩一区二区三区在线观看视频 | 久久精品视频在线观看免费 | 亚洲欧洲日韩在线观看 | 精品一二三四在线 | www.夜色321.com | 国产 欧美 日产久久 | 精品国产自在精品国产精野外直播 | 国产二区视频在线观看 | 久久精品国产一区二区三区 | 日本中文字幕免费观看 | 六月丁香久久 | 色综合久久88色综合天天人守婷 | 天天操天天是 | 丝袜美腿av | 久久99亚洲精品久久 | 91成版人在线观看入口 | 欧美日韩另类视频 | 天天干天天想 | 天天爽天天摸 | 欧美日韩有码 | 美女国产精品 | 最新av在线播放 | 三级视频日韩 | 久久这里只有精品9 | 在线成人高清电影 | 韩国av永久免费 | 国产精品久久久久永久免费看 | 96久久精品 | 日韩av在线高清 | 四虎在线永久免费观看 | 久久免费视频这里只有精品 | 日本中文字幕在线观看 | 激情欧美日韩一区二区 | 成人久久久久久久久 | 亚洲最新精品 | 97视频免费在线 | 91福利试看 | 国产97视频在线 | 操久| 国产精品av免费在线观看 | 日批视频在线观看免费 | 中文字幕888 | 91亚洲国产成人久久精品网站 | 狠狠狠色狠狠色综合 | 国产黄色成人 | 91视频国产免费 | 日日草视频| av在线日韩| 日韩免费 | 国产成人精品一区一区一区 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 毛片网站免费 | 天天干天天操天天搞 | 免费在线黄网 | 在线免费看黄网站 | 蜜臀av性久久久久蜜臀av | 成人a视频在线观看 | 视频二区在线视频 | 欧美性极品xxxx做受 | 97色视频在线 | 91网址在线看| 亚洲国产欧美在线看片xxoo | 亚洲国产免费网站 | 97在线成人 | 精品99免费视频 | 国产日产亚洲精华av | 国产精品亚洲视频 | 69国产在线观看 | zzijzzij亚洲日本少妇熟睡 | www五月| 91福利在线导航 | 久久成人免费电影 | 婷婷丁香狠狠爱 | 成人毛片网| 日韩精品欧美精品 | 国产午夜精品久久久久久久久久 | 日日摸日日爽 | 中文字幕av免费在线观看 | 亚洲 欧美变态 另类 综合 | 国产手机视频在线 | 婷婷久久网站 | 久久国产精品视频免费看 | 国产日本高清 | 一区二区不卡在线观看 | 国产精品久久久久久久av大片 | 午夜体验区 | 毛片基地黄久久久久久天堂 | 91精品国产亚洲 | 日韩免费不卡视频 | 一区二区三区免费 | 久久精品这里都是精品 | 在线a视频免费观看 | 中文字幕一区二区三区在线观看 | 色噜噜日韩精品欧美一区二区 | 日韩欧美在线视频一区二区三区 | 青青五月天 | 99性视频| 超碰资源在线 | 国产成人精品一区二区三区福利 | 国产精品精品久久久久久 | 美女黄频免费 | 国产主播大尺度精品福利免费 | 久艹在线观看视频 | 国产精品一区二区三区观看 | 久青草国产在线 | 免费久久久久久久 | 岛国av在线 | 亚洲国产日韩在线 | 九九九热精品免费视频观看网站 | 欧美污在线观看 | 天天干天天干天天干天天干天天干天天干 | 特级西西444www大胆高清无视频 | 天天干天天干天天干天天干天天干天天干 | 国产高清绿奴videos | 五月婷香 | 久久99精品国产99久久6尤 | 免费91在线 | 丁香综合网 | 丁香综合 | 奇米网444 | 久久午夜视频 | 九九日韩| 国产精品亚洲视频 | 97av精品 | 粉嫩一区二区三区粉嫩91 | 国产中文字幕一区二区 | 丁香九月婷婷 | av天天澡天天爽天天av | 丁香婷婷在线观看 | 天天射天天艹 | 国产视频日韩 | 五月天激情视频 | 精品免费一区二区三区 | 日韩免费观看一区二区 | 超碰国产97 | 在线天堂亚洲 | 久久不卡国产精品一区二区 | 国产精品aⅴ | 国产高清免费视频 | 99久久综合狠狠综合久久 | 在线免费av网 | 国产精品免费不 | 91在线你懂的 | 天天射综合 | 国产精品日韩欧美一区二区 | 久久黄色网址 | 国产精品第一视频 | 亚洲人视频在线 | 97精品国产aⅴ | 欧美一区二区免费在线观看 | 国产在线精品视频 | 中文字幕av最新更新 | www.夜夜爱 | 亚洲免费观看视频 | 国产精品毛片 | 激情深爱.com| 免费试看一区 | 欧美激情第八页 | 手机在线黄色网址 | 麻花豆传媒mv在线观看网站 | 久久精品屋 | 欧洲视频一区 | 九九九九精品九九九九 | 亚洲精品在线免费播放 | 色在线免费观看 | 亚洲精品综合欧美二区变态 | 美女一区网站 | 亚洲精品日韩一区二区电影 | 伊人超碰在线 | 国产中文伊人 | 看片在线亚洲 | 波多野结衣动态图 | 亚洲精品久久久蜜桃 | 久久久免费精品国产一区二区 | 国产成人亚洲在线观看 | 69国产盗摄一区二区三区五区 | 激情视频一区二区三区 | 亚洲视频免费在线观看 | 久久精品国产亚洲精品2020 | 最新日韩电影 | a色视频| 亚洲一区二区三区毛片 | 国产福利一区二区三区视频 | 日韩欧美一区二区在线观看 | 91爱在线| 亚洲最大激情中文字幕 | 狠狠干夜夜操天天爽 | 少妇bbb | 欧美日韩在线电影 | 欧美一区二区在线刺激视频 | 中文av字幕在线观看 | 97精品在线观看 | 国产一区二区三精品久久久无广告 | 天天躁日日躁狠狠躁av麻豆 | 久久一区二区三区日韩 | 在线观看视频免费播放 | 欧美精品在线观看免费 | 99精品国产福利在线观看免费 | 日韩黄色在线电影 | 中文字幕在线观看第一区 | 最近2019中文免费高清视频观看www99 | 国产黄免费在线观看 | 九九热久久久 | 国产精品久久久久久婷婷天堂 | 午夜电影久久久 | 日本在线视频一区二区三区 | 亚洲夜夜综合 | 国产99久久久精品 | 性色va | 亚洲综合涩 | av天天草| 精品久久久久久亚洲综合网站 | 国产精品不卡在线 | 国产999精品 | 日韩精品一区二区三区高清免费 | 免费在线观看黄网站 | 国产精品福利在线观看 | 一级久久精品 | 波多野结衣一区二区 | 91九色免费视频 | 亚洲国产久 | 欧美日韩精品在线观看 | 人人看人人 | 在线免费视频 你懂得 | 国产免费不卡 | 91av官网 | 久久久免费毛片 | 久久免费国产视频 | 国产女v资源在线观看 | 久久伊人五月天 | 亚洲人成人天堂h久久 | 2018好看的中文在线观看 | av在线免费观看黄 | 韩国av免费观看 | 国产精品videossex国产高清 | 国产一区麻豆 | 亚洲精品国产精品国自产观看 | 激情五月播播久久久精品 | 精品免费视频 | 最近日本中文字幕 | 婷婷丁香激情 | 成人a级免费视频 | 亚洲成av人片在线观看www | 中文在线字幕免费观看 | 狠狠躁18三区二区一区ai明星 | 在线欧美最极品的av | 91试看| 天天操天天操天天操天天操天天操天天操 | 亚洲一区网 | 黄色不卡av | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 91亚洲网| www.色午夜 | 久久99精品久久只有精品 | 国产视频1 | 操操日| 国产精品久久久久久久久久久杏吧 | 99色在线| 97视频中文字幕 | www久久国产 | 六月丁香婷婷网 | 91免费日韩| 亚洲国产偷 | 免费精品国产va自在自线 | 成年人在线观看网站 | 九九久久精品 | 激情视频91 | 国产精品免费观看国产网曝瓜 | 国产高h视频 | 午夜精品久久久久久久久久久久久久 | 国产免费三级在线观看 | 国产尤物视频在线 | 69视频在线播放 | av看片网址| 久久久噜噜噜久久久 | 日韩二区在线观看 | 日韩av电影免费在线观看 | 亚洲成人中文在线 | 久草久热 | 久久99爱视频 | av网站大全免费 | 亚洲高清精品在线 | 亚洲综合欧美日韩狠狠色 | a成人v | www.亚洲视频 | 久久影视中文字幕 | 97综合网| 国产日韩欧美自拍 | wwwwww黄| 国产青草视频在线观看 | 国产999精品久久久 免费a网站 | 久久国产精品成人免费浪潮 | 六月色婷婷 | 91激情视频在线播放 | 天天操婷婷| 97在线免费 | 黄色www免费 | 人人看人人爱 | 成人av资源站 | 国产精品欧美一区二区 | 中文字幕色婷婷在线视频 | 久香蕉| 97热视频| 99久久激情 | 日韩黄色免费电影 | 午夜精品久久久久久久99 | 日本中文一级片 | 免费观看9x视频网站在线观看 | 免费一级特黄毛大片 | 成人精品久久久 | 久久五月婷婷综合 | 91精品国自产在线偷拍蜜桃 | 久久黄网站| av福利在线导航 | 国产生活一级片 | 麻豆视频在线观看免费 | 日韩成人黄色av | 国产在线中文字幕 | 亚洲国产成人精品电影在线观看 | 亚洲久久视频 | 久久黄色精品视频 | 欧美一区在线观看视频 | 欧美久久久久久久久久久久 | 日韩欧美在线一区二区 | 欧美日韩国产色综合一二三四 | 国产亚洲91| 中文字幕精品视频 | 国产高清视频在线观看 | 三级黄色网址 | 成片免费观看视频999 | 久久99精品国产99久久6尤 | 日韩一区二区三区高清在线观看 | 96精品视频| 国产欧美综合在线观看 | 免费观看黄 | 久草在线久草在线2 | 欧美精品在线观看免费 | 国产精品福利av | 久久香蕉国产精品麻豆粉嫩av | 免费h漫在线观看 | 91在线视频免费播放 | 超碰97.com | 免费看的黄色的网站 | 久久视 | 九九在线视频免费观看 | 久久大香线蕉app | 五月天综合激情网 | 欧美a免费| 欧美日韩中文在线观看 | 国产一区二区在线免费 | 国产九九九视频 | 亚洲a免费| 国产一区二区三区免费观看视频 | 黄色av免费看 | 欧美精品免费在线 | 九九色视频 | www久久久久 | 亚洲精区二区三区四区麻豆 | 精品福利在线视频 | 亚洲视频精品在线 | 在线看日韩 | 国产日产欧美在线观看 | 国产精品免费久久久久久久久久中文 | 九月婷婷人人澡人人添人人爽 | 国产精品免费在线 | 免费看搞黄视频网站 | 日韩精品久久一区二区三区 | 日日摸日日添夜夜爽97 | 久久成熟 | 丁香亚洲 | 99热这里只有精品免费 | 国产精品久久久久久久久久久免费 | 精品在线亚洲视频 | 免费黄色网址大全 | www好男人 | 在线观看国产日韩欧美 | 久久新 | 欧美另类网站 | 伊人天天操 | 久草网站 | 日本三级久久 | 一区视频在线 | 中文字幕123区 | 国产伦精品一区二区三区在线 | 日本中文在线 | 国产精品亚州 | 又污又黄网站 | 91av小视频 | 国产高清一 | 国产精品一区二区三区观看 | 成人h视频在线 | 中文av资源站 | 97视频在线免费观看 | 免费网站在线观看人 | 五月天堂网 | 亚洲天堂毛片 | www.色五月.com | 国产精品久久久久久久久久久久冷 | 精品久久一区二区 | 欧美色就是色 | 久久婷婷色综合 | 亚洲精品久久久久久久蜜桃 | 久久色中文字幕 | 美女黄视频免费看 | 黄色福利| 成人精品视频 | 亚洲黄色小说网址 | 国产高清不卡在线 | 黄色片毛片 | 四虎影视国产精品免费久久 | 九九热精品视频在线播放 | 国产福利91精品 | 在线av资源 | 成人免费观看视频大全 | 国产成人久久av977小说 | 久久综合久久综合九色 | 国产精品一区二区吃奶在线观看 | av福利在线看 | 正在播放国产一区二区 | 日韩理论在线播放 | 亚洲经典中文字幕 | 国产精品一区二区久久精品 | 久久99亚洲网美利坚合众国 | 91日韩精品视频 | 中文字幕在线观看91 | 成人免费在线电影 | 中文字幕在线有码 | 中文字幕日韩国产 | 日韩免费播放 | 国产亚洲精品久久久久久无几年桃 | 亚洲黄色av网址 | 日韩欧美成人网 | 国产精品久久久久久久免费观看 | 天天躁日日躁狠狠躁 | 亚洲精品国产视频 | 日本久久高清视频 | 日韩a欧美 | 91人人澡人人爽人人精品 | 亚洲精品久久久久999中文字幕 | 992tv人人网tv亚洲精品 | 精品久久久免费 | 精品国产乱码久久久久久1区二区 | 欧美片网站yy | 日韩欧三级 | 黄色一级在线免费观看 | 99久久婷婷国产综合亚洲 | 欧美日韩一区久久 | 午夜精品一区二区三区在线 | 久久手机免费观看 | 天天干天天射天天操 | 中文字幕综合在线 | 成人在线观看资源 | 国产高h视频 | 日韩有码中文字幕在线 | 一区二区三区在线观看 | 99久久精品国产一区二区成人 | 色婷婷九月 | 这里只有精品视频在线观看 | 超碰九九 | 日本巨乳在线 | 色婷婷综合在线 | 日韩精品第一区 | 亚洲精品中文字幕视频 | 美女视频a美女大全免费下载蜜臀 | 岛国av在线免费 | 欧美日韩精品在线观看视频 | 97涩涩视频 | 欧美成人tv | 六月丁香激情综合色啪小说 | 丁香花在线视频观看免费 | 美女视频是黄的免费观看 | 国产又粗又猛又黄又爽视频 | 911免费视频| 91伊人久久大香线蕉蜜芽人口 | 香蕉久久久久 | 国产女人免费看a级丨片 | 欧美日韩国产一区二区三区 | 综合天堂av久久久久久久 | jizz18欧美18| 四虎影视www | 三级av黄色 | 国产不卡片 | 在线观看黄色av | 中文在线 | 夜夜夜精品| 青青久草在线视频 | av一区二区在线观看中文字幕 | 成人久久18免费 | 在线精品在线 | 亚洲三级在线 | 国产精品露脸在线 | 国产成人综合图片 | 久草在线视频首页 | 男女精品久久 | 色资源在线 | 国产手机在线观看 | 亚洲综合在线五月 | 亚洲,国产成人av | 亚洲精品美女在线观看播放 | 国产69精品久久久久久久久久 | 久久久久亚洲国产 | 超碰97在线资源站 | 国产精品观看在线亚洲人成网 | 亚洲网久久 | 亚洲麻豆精品 | 一区二区三区四区免费视频 | 国产精品av久久久久久无 | 免费在线观看91 | 成人av免费在线 | 最新中文字幕在线资源 | 五月天天av| 日本精a在线观看 | 久久99久久99久久 | 中文字幕在线免费看 | 国产精品久久久久久久久久99 | www久久久久 | 久久在线播放 | 久久精品这里都是精品 | 五月天综合色激情 | 国产第一福利 | 国产成人精品一区二区三区福利 | 日批视频在线播放 | 操处女逼| 黄污在线看 | 久草com | www.亚洲视频 | 亚洲成人一二三 | 97超碰在线视 | 欧美亚洲免费在线一区 | 色网站免费在线看 | 日韩在线大片 | 午夜精品成人一区二区三区 | 97国产大学生情侣酒店的特点 | 久久久久久久久久久免费视频 | 人人狠狠综合久久亚洲婷 | 免费网站看av片 | 人人爽人人av |