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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ktdiinterface.cpp

?? 爾羅斯著名黑客寫的rootkit
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
  ++m_TreatIrpsCount;

  if (bWait == TRUE)
  {
    if (pkEvent == NULL)
    {
      pkEvent = &kEvent;
      KeInitializeEvent(pkEvent, NotificationEvent, FALSE);         // reset notification event
    }
    pIrp->UserEvent = pkEvent;                                      // pointer to event
  }
  pIrp->UserIosb = pIoStatusBlock;                                  // pointer to status block

  IoSetCompletionRoutine(pIrp, TdiCallCompletion, (PVOID)this, TRUE, TRUE, TRUE);

  dStatus = IoCallDriver(pDeviceObject, pIrp);                      // call next driver
  if (dStatus == STATUS_PENDING && bWait == TRUE)                   // make all request synchronous
  {
    (void)KeWaitForSingleObject ( 
                    (PVOID)pkEvent,                                 // signaling object
                    Suspended,                                      // wait reason
                    KernelMode,                                     // wait mode
                    TRUE,                                           // alertable
                    NULL );                                         // timeout
    dStatus = pIoStatusBlock->Status;
  }
  
  //InterlockedDecrement(&m_dwTreatIrpsCount);
  --m_TreatIrpsCount;

  return ( dStatus );                                               // return with status
}

NTSTATUS 
KTdiInterface::TdiQueryDeviceControl( 
   IN PFILE_OBJECT pObject,
   IN ULONG dIoControlCode,
   IN PVOID InputBuffer,
   IN ULONG InputBufferSize,
   IN OUT PVOID OutputBuffer,
   IN ULONG OutputBufferSize,
   OUT PULONG pdReturn)
{
  PIRP pIrp;                                                        // local i/o request
  PIO_STACK_LOCATION pIoStack;                                      // I/O Stack Location
  PDEVICE_OBJECT pDeviceObject;                                     // local device object
  IO_STATUS_BLOCK IoStatusBlock;                                    // return status
  NTSTATUS dStatus = STATUS_INVALID_PARAMETER;                      // default return status

  if (pObject)
  {
    pDeviceObject = IoGetRelatedDeviceObject ( pObject );           // get device object
    pIrp = IoBuildDeviceIoControlRequest (
                dIoControlCode,
                pDeviceObject,
                InputBuffer,
                InputBufferSize,
                OutputBuffer,
                OutputBufferSize,
                FALSE,
                NULL,                                               // pointer to event
                NULL );                                             // pointer to return buffer
    if (pIrp == NULL)
    {
      DbgPrint ( "ERROR: IoBuildDeviceIoControlRequest\n" );
      dStatus = STATUS_INSUFFICIENT_RESOURCES;
    }
    else
    {
      pIoStack = IoGetNextIrpStackLocation ( pIrp );                // get the iostack
      pIoStack->DeviceObject = pDeviceObject;                       // store current device object
      pIoStack->FileObject = pObject;                               // store file object in the stack
      dStatus = TdiCall ( pIrp, pDeviceObject, &IoStatusBlock );
      if (pdReturn)                                                 // requested by user?
        *pdReturn = IoStatusBlock.Information;                      // return information size
    }
  }
  return ( dStatus );                                               // return with status
}


NTSTATUS 
KTdiInterface::TdiQueryInformationEx(
   IN PFILE_OBJECT pObject,
   IN ULONG dEntity,
   IN ULONG dInstance,
   IN ULONG dClass,
   IN ULONG dType,
   IN ULONG dId,
   IN PVOID pOutputBuffer,
   IN PULONG pdOutputLength )
{
  TCP_REQUEST_QUERY_INFORMATION_EX QueryInfo;                       // local query information

  RtlZeroMemory ( &QueryInfo, sizeof ( TCP_REQUEST_QUERY_INFORMATION_EX ) ); // input buffer length
  QueryInfo.ID.toi_entity.tei_entity = dEntity;
  QueryInfo.ID.toi_entity.tei_instance = dInstance;
  QueryInfo.ID.toi_class = dClass;
  QueryInfo.ID.toi_type = dType;
  QueryInfo.ID.toi_id = dId;
  return ( TdiQueryDeviceControl (                                  // send down device control call
                 pObject,                                           // current transport/connection object
                 IOCTL_TCP_QUERY_INFORMATION_EX,                    // control code
                 &QueryInfo,                                        // input buffer
                 sizeof ( TCP_REQUEST_QUERY_INFORMATION_EX ),       // input buffer length
                 pOutputBuffer,                                     // output buffer
                 *pdOutputLength,                                   // output buffer length
                 pdOutputLength ) );                                // return information
}


NTSTATUS 
KTdiInterface::TdiQueryAddress(
   IN PFILE_OBJECT pObject,
   IN PULONG pdAddress)
{
  ULONG        i, j;                                                // local loop control
  TDIEntityID* pEntityBuffer = NULL;                                // buffer for ENTITY_LIST_ID
  ULONG        dEntityCount;                                        // number of entities
  ULONG        dEntityType;                                         // entity type
  IPSNMPInfo   SnmpInfo;                                            // ip information
  IPAddrEntry* pIpAddress = NULL;                                   // ip address buffer
  ULONG        dBufferSize;                                         // buffer length
  NTSTATUS     dStatus = STATUS_INVALID_PARAMETER;                  // local status

  __try
  {
     *pdAddress = 0L;
     dBufferSize = MAX_FAST_ENTITY_BUFFER;                          // default buffer size
     for (j = 0; j < 2; ++j)
     {
       pEntityBuffer = (TDIEntityID*) new char[dBufferSize];        // allocate buffer
       if (pEntityBuffer == NULL)                                   // validate pointer
       {
         DbgPrint ("ERROR: ExAllocatePoolWithTag\n");
         dStatus = STATUS_INSUFFICIENT_RESOURCES;
         break;
       }
       else
       {
          // ********************************************
          // 1-Query device for entity buffer
          // ********************************************
         dStatus = TdiQueryInformationEx ( 
                               pObject,                             // control object
                               GENERIC_ENTITY,                      // entity
                               TL_INSTANCE,                         // instance
                               INFO_CLASS_GENERIC,                  // class
                               INFO_TYPE_PROVIDER,                  // type
                               ENTITY_LIST_ID,                      // id
                               pEntityBuffer,                       // output buffer
                               &dBufferSize );                      // output buffer size
         if (dStatus == STATUS_BUFFER_TOO_SMALL)                    // check for a buffer error
         {
           DbgPrint ( "ERROR: Buffer too small\n", dStatus );
           delete[] pEntityBuffer;                                  // free buffer
           pEntityBuffer = NULL;
         }
         else
         {
           if (!NT_SUCCESS(dStatus))                                // check return code
             DbgPrint ( "ERROR: Unable to get entity\n", dStatus );
           break;
         }
       }
     }

      // *********************************
      // Scan the entities looking for IP.
      // *********************************
     if (NT_SUCCESS(dStatus))
     {
       dEntityCount = dBufferSize / sizeof(TDIEntityID);            // determine number of entities
       for (i = 0; i < dEntityCount; ++i)                           // loop through all of them
       {
          // ********************************************
          // 2-Query device for entity type
          // ********************************************
         if (pEntityBuffer[i].tei_entity == CL_NL_ENTITY)
         {
           dBufferSize = sizeof(dEntityType);                       // store buffer size
           if ( NT_SUCCESS ( dStatus ) )                            // validate pointer
           {
             dStatus = TdiQueryInformationEx ( 
                                  pObject,                          // control object
                                  CL_NL_ENTITY,                     // entity
                                  pEntityBuffer[i].tei_instance,    // instance
                                  INFO_CLASS_GENERIC,               // class
                                  INFO_TYPE_PROVIDER,               // type
                                  ENTITY_TYPE_ID,                   // id
                                  &dEntityType,                     // output buffer
                                  &dBufferSize );                   // output buffer size
             if (!NT_SUCCESS(dStatus) || (dEntityType != CL_NL_IP)) // check for IP entity type
               DbgPrint("ERROR: Unable to get entity type\n", dStatus);
           }
           
            // ***************************************
            // 3-Query device for snmp info.
            // We found an IP entity. Now lookup its 
            // addresses.  Start by querying the number
            // of addresses supported by this interface.
            // ***************************************
           if (NT_SUCCESS(dStatus))
           {
             dBufferSize = sizeof(SnmpInfo);                        // store buffer size
             dStatus = TdiQueryInformationEx( 
                                  pObject,                          // control object
                                  CL_NL_ENTITY,                     // entity
                                  pEntityBuffer[i].tei_instance,    // instance
                                  INFO_CLASS_PROTOCOL,              // class
                                  INFO_TYPE_PROVIDER,               // type
                                  IP_MIB_STATS_ID,                  // id
                                  &SnmpInfo,                        // output buffer
                                  &dBufferSize);                    // output buffer size
             if (!NT_SUCCESS(dStatus) || (SnmpInfo.ipsi_numaddr == 0))
               DbgPrint ( "ERROR: Unable to get snmp\n", dStatus );
           }

            // ***************************************
            // 4-Query device for all ip addresses
            // ***************************************
           if (NT_SUCCESS(dStatus))
           {
             dBufferSize = SnmpInfo.ipsi_numaddr * sizeof(IPAddrEntry);
             for (j = 0; j < 2; ++j)
             {
               pIpAddress = (IPAddrEntry *) new char[dBufferSize]; // allocate buffer
               if (pIpAddress == NULL)
               {
                 DbgPrint ( "ERROR: ExAllocatePoolWithTag\n" );
                 dStatus = STATUS_INSUFFICIENT_RESOURCES;
                 break;
               }
               else
               {
                 dStatus = TdiQueryInformationEx ( 
                                      pObject,                     // control object
                                      CL_NL_ENTITY,                // entity
                                      pEntityBuffer[i].tei_instance,// instance
                                      INFO_CLASS_PROTOCOL,         // class
                                      INFO_TYPE_PROVIDER,          // type
                                      IP_MIB_ADDRTABLE_ENTRY_ID,   // id
                                      pIpAddress,                  // output buffer
                                      &dBufferSize );              // output buffer size
                 if (dStatus == STATUS_BUFFER_TOO_SMALL)           // check for a buffer error
                 {
                   DbgPrint ( "ERROR: Buffer too small\n", dStatus );
                   delete[] pIpAddress;                            // free buffer
                   pIpAddress = NULL;                              // reset pointer
                 }
                 else
                 {
                   if (!NT_SUCCESS(dStatus))                       // check return code
                     DbgPrint ( "ERROR: Unable to get address\n", dStatus );
                   else 
                   {
                     if (pdAddress)
                     {
                       *pdAddress =                                // store real ip address
                           D_BIG_TO_LITTLE_ENDIAN(pIpAddress->iae_addr);
                     }
                   }
                   break;                                          // break for loop
                 }
               }
             }
           }
         }
       }
     }
  }
  __finally
  {
    if (pEntityBuffer)                                             // validate pointer
      delete[] pEntityBuffer;                                      // free buffer
    if (pIpAddress)                                                // validate buffer
       delete[] pIpAddress;                                        // free buffer
    if (NT_SUCCESS(dStatus) && (*pdAddress == 0L))
      dStatus = STATUS_INVALID_PARAMETER;
  }

  return (dStatus);                                                // return with status
}

BOOLEAN KTdiInterface::SetEventHandler(IN int nEventType, IN PVOID pEventHandler, IN PVOID HandlerContext)
{
  BOOLEAN                      bRes = FALSE;
  PIRP                         pIrp = NULL, pIrpError = NULL;
  PDEVICE_OBJECT               pDeviceObject;
  NTSTATUS                     NtStatus;
  IO_STATUS_BLOCK              IoStatusBlock;

  __try
  {
    if (m_bOpen == TRUE && m_pTdiTransportObject != NULL)
    {
      pDeviceObject = IoGetRelatedDeviceObject(m_pTdiTransportObject);

      pIrp = TdiBuildInternalDeviceControlIrp(
                      TDI_SET_EVENT_HANDLER, 
                      pDeviceObject, 
                      m_pTdiTransportObject,
                      NULL, 
                      NULL);
      pIrpError = pIrp;
      if (pIrp != NULL)
      {
        TdiBuildSetEventHandler (
                 pIrp, 
                 pDeviceObject, 
                 m_pTdiTransportObject,
                 NULL, 
                 NULL,
                 nEventType,
                 pEventHandler,
                 HandlerContext);
        
        pIrpError = NULL;
        NtStatus = TdiCall(pIrp, pDeviceObject, &IoStatusBlock);
        if (NT_SUCCESS(NtStatus))
        {
          DbgPrint ("SetEventHandler: OK (%08x)!!!\n", NtStatus);
          bRes = TRUE;
        }
        else
        {
          DbgPrint ("SetEventHandler: ERROR (%08x)!!!\n", NtStatus);
        }
      }
    }
  }
  __finally
  {
    if (pIrpError != NULL)
      IoFreeIrp(pIrpError);
  }

  return bRes;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区三区忘忧草 | 中文字幕精品一区二区精品绿巨人| 日韩电影在线免费看| 欧美日韩精品电影| 丝袜美腿亚洲一区| 日韩一区二区影院| 国产一区91精品张津瑜| 国产三级一区二区| 93久久精品日日躁夜夜躁欧美| 综合av第一页| 欧美日本乱大交xxxxx| 狂野欧美性猛交blacked| 久久久精品2019中文字幕之3| 成人avav在线| 亚洲成人第一页| 337p日本欧洲亚洲大胆色噜噜| 风间由美一区二区三区在线观看| ...xxx性欧美| 51精品秘密在线观看| 欧美日韩国产精品自在自线| 蜜臀国产一区二区三区在线播放| 久久影院午夜论| 一本大道av一区二区在线播放| 亚洲va欧美va人人爽午夜 | 久久色在线观看| 91欧美一区二区| 欧美a级一区二区| 亚洲国产成人私人影院tom | 日韩三级电影网址| 成人性色生活片| 午夜视频一区在线观看| 久久久www免费人成精品| 在线观看亚洲一区| 国产真实精品久久二三区| 亚洲欧美日韩久久精品| 精品国产一区二区国模嫣然| 色综合天天综合网国产成人综合天| 婷婷久久综合九色综合绿巨人| 日本一区二区视频在线| 欧美高清视频一二三区| 成人一区二区三区视频在线观看| 亚洲一区二区在线视频| 久久精子c满五个校花| 欧美羞羞免费网站| 99久久久免费精品国产一区二区| 美女久久久精品| 亚洲一区自拍偷拍| 国产精品成人一区二区艾草 | 久久精品欧美一区二区三区麻豆| 欧美日韩久久一区| 成人av高清在线| 国产一区二区三区在线观看免费 | 国产超碰在线一区| 捆绑紧缚一区二区三区视频| 亚洲网友自拍偷拍| 综合久久给合久久狠狠狠97色 | 麻豆精品精品国产自在97香蕉| 自拍偷拍欧美精品| 国产女同性恋一区二区| 精品久久久久久久一区二区蜜臀| 欧美性欧美巨大黑白大战| 95精品视频在线| 成人精品免费网站| 国产v日产∨综合v精品视频| 精品在线视频一区| 日本不卡中文字幕| 日本一不卡视频| 婷婷亚洲久悠悠色悠在线播放| 一区二区三区在线观看视频| 亚洲色图欧美偷拍| 亚洲天堂久久久久久久| 国产精品久久久久久久久果冻传媒 | 亚洲国产色一区| 亚洲精品视频自拍| 亚洲视频一区在线观看| 国产精品久久久久国产精品日日| 国产欧美日韩三区| 国产日产欧美一区二区三区| 国产亚洲精品aa| 中文字幕高清不卡| 国产精品美女久久久久久久久| 久久精品欧美日韩精品| 国产区在线观看成人精品 | 精品影院一区二区久久久| 精品在线免费观看| 国v精品久久久网| 成人理论电影网| 91在线精品一区二区三区| 一本色道亚洲精品aⅴ| 91黄色在线观看| 欧美日韩国产高清一区二区| 欧美三区在线观看| 日韩精品一区二| 久久久久久久综合日本| 国产农村妇女毛片精品久久麻豆| 中文在线资源观看网站视频免费不卡 | 天堂蜜桃91精品| 精品一区二区三区不卡| 国产成人午夜视频| 99久久精品免费观看| 欧美日韩一区二区三区高清| 正在播放亚洲一区| 久久精品日产第一区二区三区高清版| 欧美国产在线观看| 亚洲在线视频网站| 六月丁香婷婷久久| 99久久夜色精品国产网站| 欧美日本国产视频| 久久老女人爱爱| 亚洲国产一区二区在线播放| 蜜桃久久久久久久| 成人激情视频网站| 在线播放亚洲一区| 国产欧美精品一区aⅴ影院 | 色域天天综合网| 日韩欧美色电影| 亚洲三级在线免费观看| 日韩精品成人一区二区三区| 成人午夜碰碰视频| 91精品在线免费| 中文字幕一区免费在线观看 | 狠狠色狠狠色综合系列| 色婷婷av一区| 久久欧美一区二区| 亚洲与欧洲av电影| 国产大片一区二区| 69精品人人人人| 综合色天天鬼久久鬼色| 麻豆国产精品一区二区三区| 99r国产精品| 欧美精品一区二区三区高清aⅴ | 欧美日韩国产一二三| 国产女主播在线一区二区| 奇米精品一区二区三区在线观看 | 国产在线精品免费| 欧美日韩一本到| 国产精品三级久久久久三级| 免费观看在线综合| 欧美亚洲综合久久| 中文字幕av一区二区三区免费看| 日本三级亚洲精品| 色婷婷久久久久swag精品| 久久久噜噜噜久久人人看| 午夜精品久久久久久久99水蜜桃| 成人免费高清视频在线观看| 欧美mv日韩mv| 青青草国产精品97视觉盛宴| 91成人在线观看喷潮| 国产精品欧美一区喷水| 久久99精品久久久| 777欧美精品| 亚洲成人自拍偷拍| 色狠狠桃花综合| 中文字幕一区二区视频| 国产成人免费视频| 26uuu色噜噜精品一区| 久草精品在线观看| 日韩精品一区二区三区在线播放 | 婷婷综合久久一区二区三区| 欧美亚男人的天堂| 一区二区三区在线播| 91啦中文在线观看| 亚洲视频香蕉人妖| 粉嫩欧美一区二区三区高清影视| 精品美女一区二区三区| 看片网站欧美日韩| 精品久久五月天| 久久成人18免费观看| 欧美xxxxx裸体时装秀| 久久精品免费观看| 久久色成人在线| 国产福利91精品一区二区三区| 久久久影院官网| 国产成人免费在线观看| 国产精品美女久久久久av爽李琼| 国产成人免费在线视频| 亚洲国产精华液网站w| 成人激情综合网站| 亚洲欧美视频在线观看| 在线观看国产精品网站| 亚洲动漫第一页| 欧美日韩高清一区二区| 日本午夜一本久久久综合| 精品少妇一区二区三区免费观看| 激情国产一区二区| 中文在线资源观看网站视频免费不卡| 97se亚洲国产综合自在线| 一区二区三区四区不卡视频| 欧美日韩国产精选| 国产乱子轮精品视频| 国产精品久久久久桃色tv| 在线观看不卡一区| 久久99精品久久久久| 亚洲国产精品成人综合色在线婷婷 | 天堂精品中文字幕在线| 2020国产成人综合网| 99久久免费国产| 成人av电影免费在线播放| 亚洲成在线观看| 久久久亚洲精华液精华液精华液 |