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

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

?? ktdistreamsocket.cpp

?? 爾羅斯著名黑客寫的rootkit
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
#include "KTdiStreamSocket.h"
//#include "../KLocker/KLocker.h"

#define ALIGN_4(x) \
        (((x) & 0x00000003) ? (((x) & 0xfffffffc) + 4) : (x))



KTdiStreamSocket::KTdiStreamSocket()
                : KTdiInterface(),
m_bOpen(FALSE)
{
  m_pRequestListenInfo = NULL;
  
  m_bBind = FALSE;
  m_bConnected = FALSE;
  m_bListen = FALSE;

  //m_dwTreatAcceptIrpsCount = 0;
  m_TreatAcceptIrpsCount = 0;
}

KTdiStreamSocket::~KTdiStreamSocket()
{
  //Disconnect();
  Close();
}

BOOLEAN KTdiStreamSocket::Open(IN USHORT nLocalPort)
{
  //KLocker locker(&m_KSynchroObject);

  //Disconnect();
  if (Close() == FALSE)
    return FALSE;

  if (KTdiInterface::Open(DD_TCP_DEVICE_NAME) == TRUE)
  {
    //m_KSynchroObject.Lock();
   
    if (TdiOpenSocket(nLocalPort) == TRUE)
    {
      DbgPrint ("\tm_hTdiTransport = %08x\n"
                "\tm_pTdiTransportObject = %08x\n"
                "\tm_hTdiConnection = %08x\n"
                "\tm_pTdiConnectionObject = %08x\n",
                 m_hTdiTransport,
                 m_pTdiTransportObject,
                 m_hTdiConnection,
                 m_pTdiConnectionObject);
   
      //KeInitializeEvent(&m_kReceiveInProgressEvent, SynchronizationEvent, FALSE);
      //KeInitializeEvent(&m_kSendInProgressEvent, SynchronizationEvent, FALSE);
      
      m_bOpen = TRUE;
    }
   
    //m_KSynchroObject.UnLock();
  }

  return m_bOpen;
}

BOOLEAN KTdiStreamSocket::Close()
{
  //KLocker locker(&m_KSynchroObject);

  //Disconnect();

  //m_KSynchroObject.Lock();

  //if (m_bOpen == TRUE && m_dwTreatAcceptIrpsCount == 0)
  if (m_bOpen == TRUE && m_TreatAcceptIrpsCount.CompareExchange(0, 0) == TRUE)
  {
    Disconnect();
    Unbind();
    
    m_bOpen = FALSE;
    m_bBind = FALSE;
    m_bConnected = FALSE;
    m_bListen = FALSE;
  }

  if (m_bOpen == TRUE || KTdiInterface::Close() == FALSE)
    return FALSE;

  //m_KSynchroObject.UnLock();

  return !m_bOpen;
}

BOOLEAN KTdiStreamSocket::Bind()
{
  //KLocker locker(&m_KSynchroObject);

  BOOLEAN         bRes = FALSE;
  PIRP            pIrp = NULL, pIrpError = NULL;
  PDEVICE_OBJECT  pDeviceObject;
  NTSTATUS        NtStatus;
  IO_STATUS_BLOCK IoStatusBlock;

  __try
  {
    if (m_bOpen == TRUE && Unbind() == TRUE)
    {
      pDeviceObject = IoGetRelatedDeviceObject(m_pTdiConnectionObject);
      
      pIrp = TdiBuildInternalDeviceControlIrp(
                    TDI_ASSOCIATE_ADDRESS, 
                    pDeviceObject, 
                    m_pTdiConnectionObject,
                    NULL, 
                    NULL);
      pIrpError = pIrp;
      if (pIrp != NULL)
      {
        TdiBuildAssociateAddress(
               pIrp, 
               pDeviceObject, 
               m_pTdiConnectionObject,
               NULL,
               NULL, 
               m_hTdiTransport);
        
        pIrpError = NULL;
        NtStatus = TdiCall(pIrp, pDeviceObject, &IoStatusBlock);
        if (NT_SUCCESS(NtStatus))
        {
          m_bBind = TRUE;
          bRes = TRUE;
        }
        else
        {
          DbgPrint ("TdiBind: ERROR (%08x)!!!\n", NtStatus);
        }
      }
    }
  }
  __finally
  {
    if (pIrpError != NULL)
      IoFreeIrp(pIrpError);
  }

  return bRes;
}

BOOLEAN KTdiStreamSocket::Unbind()
{
  //KLocker locker(&m_KSynchroObject);

  BOOLEAN         bRes = TRUE;
  PIRP            pIrp = NULL, pIrpError = NULL;
  PDEVICE_OBJECT  pDeviceObject;
  NTSTATUS        NtStatus;
  IO_STATUS_BLOCK IoStatusBlock;

  __try
  {
    if (m_bOpen == TRUE && m_bBind == TRUE && m_bConnected == FALSE && m_bListen == FALSE)
    {
      bRes = FALSE;

      pDeviceObject = IoGetRelatedDeviceObject(m_pTdiConnectionObject);
      
      pIrp = TdiBuildInternalDeviceControlIrp(
                    TDI_DISASSOCIATE_ADDRESS, 
                    pDeviceObject, 
                    m_pTdiConnectionObject,
                    NULL, 
                    NULL);
      pIrpError = pIrp;
      if (pIrp != NULL)
      {
        TdiBuildDisassociateAddress(
               pIrp, 
               pDeviceObject, 
               m_pTdiConnectionObject,
               NULL,
               NULL);
        
        pIrpError = NULL;
        NtStatus = TdiCall(pIrp, pDeviceObject, &IoStatusBlock);
        if (NT_SUCCESS(NtStatus))
        {
          m_bBind = FALSE;
          bRes = TRUE;
        }
        else
        {
          DbgPrint ("TdiUnbind: ERROR (%08x)!!!\n", NtStatus);
        }
      }
    }
  }
  __finally
  {
   if (pIrpError != NULL)
     IoFreeIrp(pIrpError);
  }

  return bRes;
}

BOOLEAN KTdiStreamSocket::Connect(IN USHORT wPort, IN ULONG dwAddress, ULONG dwTimeOut)
{
  //KLocker locker(&m_KSynchroObject);

  BOOLEAN                      bRes = FALSE;
  PIRP                         pIrp = NULL, pIrpError = NULL;
  PDEVICE_OBJECT               pDeviceObject;
  NTSTATUS                     NtStatus;
  PTDI_CONNECTION_INFORMATION  pRequestConnectionInfo = NULL;
  PTDI_CONNECTION_INFORMATION  pReturnConnectionInfo;
  PTA_IP_ADDRESS               pRequestAddress;
  PTDI_ADDRESS_IP              pIp;
  IO_STATUS_BLOCK              IoStatusBlock;
  LARGE_INTEGER                TimeOut;
  PLARGE_INTEGER               pTimeOut = NULL;

  __try
  {
    if (m_bOpen == TRUE && m_bBind == TRUE && m_bListen == FALSE && Disconnect() == TRUE)
    {
      m_nRemotePort = wPort;
      m_nRemoteAddress = dwAddress;

      if (dwTimeOut != 0)
      {
        pTimeOut = &TimeOut;
        TimeOut.QuadPart = dwTimeOut * 10000; // msec -> 100 nsec intervals
        TimeOut.QuadPart = -TimeOut.QuadPart;
      }
      
      pDeviceObject = IoGetRelatedDeviceObject(m_pTdiConnectionObject);
      
      pRequestConnectionInfo = (PTDI_CONNECTION_INFORMATION) new char[sizeof(TDI_CONNECTION_INFORMATION) + sizeof(TA_IP_ADDRESS)];
      if (pRequestConnectionInfo != NULL)
      {
        memset(pRequestConnectionInfo, 0, sizeof(TDI_CONNECTION_INFORMATION) + sizeof(TA_IP_ADDRESS));

        pReturnConnectionInfo = NULL;

        pRequestConnectionInfo->RemoteAddressLength = sizeof(TA_IP_ADDRESS);
        pRequestConnectionInfo->RemoteAddress = (PUCHAR)pRequestConnectionInfo + sizeof(TDI_CONNECTION_INFORMATION);

        pRequestAddress = (PTA_IP_ADDRESS)(pRequestConnectionInfo->RemoteAddress);
        pRequestAddress->TAAddressCount = 1;
        pRequestAddress->Address[0].AddressLength = sizeof(TDI_ADDRESS_IP);
        pRequestAddress->Address[0].AddressType = TDI_ADDRESS_TYPE_IP;
        
        pIp = (PTDI_ADDRESS_IP)(pRequestAddress->Address[0].Address);
        pIp->sin_port = W_LITTLE_TO_BIG_ENDIAN(m_nRemotePort);
        pIp->in_addr = D_LITTLE_TO_BIG_ENDIAN(m_nRemoteAddress);;

        pIrp = TdiBuildInternalDeviceControlIrp(
                      TDI_CONNECT, 
                      pDeviceObject, 
                      m_pTdiConnectionObject,
                      NULL, 
                      NULL);
        pIrpError = pIrp;
        if (pIrp != NULL)
        {
          TdiBuildConnect(
                 pIrp, 
                 pDeviceObject, 
                 m_pTdiConnectionObject,
                 NULL, 
                 NULL,
                 pTimeOut, 
                 pRequestConnectionInfo,
                 pReturnConnectionInfo);
          
          pIrpError = NULL;
          NtStatus = TdiCall(pIrp, pDeviceObject, &IoStatusBlock);
          if (NT_SUCCESS(NtStatus))
          {
            m_bConnected = TRUE;
            bRes = TRUE;
          }
          else
          {
            DbgPrint ("TdiConnect: ERROR (%08x)!!!\n", NtStatus);
          }
        }
        delete[] pRequestConnectionInfo;
        pRequestConnectionInfo = NULL;
      }
    }
  }
  __finally
  {
    if (pIrpError != NULL)
      IoFreeIrp(pIrpError);
    if (pRequestConnectionInfo != NULL)
      delete[] pRequestConnectionInfo;
  }

  return bRes;
}

BOOLEAN KTdiStreamSocket::Disconnect()
{
  //KLocker locker(&m_KSynchroObject);

  BOOLEAN                      bRes = TRUE;
  PIRP                         pIrp = NULL, pIrpError = NULL;
  PDEVICE_OBJECT               pDeviceObject;
  NTSTATUS                     NtStatus;
  PTDI_CONNECTION_INFORMATION  pRequestConnectionInfo = NULL;
  PTDI_CONNECTION_INFORMATION  pReturnConnectionInfo;
  PTA_IP_ADDRESS               pRequestAddress;
  PTDI_ADDRESS_IP              pIp;
  IO_STATUS_BLOCK              IoStatusBlock;

  __try
  {
    if (m_bOpen == TRUE && (m_bConnected == TRUE || m_bListen == TRUE))
    {
      bRes = FALSE;
      
      pDeviceObject = IoGetRelatedDeviceObject(m_pTdiConnectionObject);
      
      pRequestConnectionInfo = (PTDI_CONNECTION_INFORMATION) new char[sizeof(TDI_CONNECTION_INFORMATION) + sizeof(TA_IP_ADDRESS)];
      if (pRequestConnectionInfo != NULL)
      {
        memset(pRequestConnectionInfo, 0, sizeof(TDI_CONNECTION_INFORMATION) + sizeof(TA_IP_ADDRESS));

        pReturnConnectionInfo = NULL;

        pRequestConnectionInfo->RemoteAddressLength = sizeof(TA_IP_ADDRESS);
        pRequestConnectionInfo->RemoteAddress = (PUCHAR)pRequestConnectionInfo + sizeof(TDI_CONNECTION_INFORMATION);

        pRequestAddress = (PTA_IP_ADDRESS)(pRequestConnectionInfo->RemoteAddress);
        pRequestAddress->TAAddressCount = 1;
        pRequestAddress->Address[0].AddressLength = sizeof(TDI_ADDRESS_IP);
        pRequestAddress->Address[0].AddressType = TDI_ADDRESS_TYPE_IP;
        
        pIp = (PTDI_ADDRESS_IP)(pRequestAddress->Address[0].Address);
        pIp->sin_port = W_LITTLE_TO_BIG_ENDIAN(m_nRemotePort);
        pIp->in_addr = D_LITTLE_TO_BIG_ENDIAN(m_nRemoteAddress);

        pIrp = TdiBuildInternalDeviceControlIrp(
                      TDI_DISCONNECT, 
                      pDeviceObject, 
                      m_pTdiConnectionObject,
                      NULL, 
                      NULL);
        pIrpError = pIrp;
        if (pIrp != NULL)
        {
          TdiBuildDisconnect(
                 pIrp, 
                 pDeviceObject, 
                 m_pTdiConnectionObject,
                 NULL, 
                 NULL,
                 NULL,           // timeout
                 TDI_DISCONNECT_ABORT, //TDI_DISCONNECT_RELEASE,
                 pRequestConnectionInfo,
                 pReturnConnectionInfo);
          
          pIrpError = NULL;

          BOOLEAN bConnected = m_bConnected;
          BOOLEAN bListen = m_bListen;
          
          m_bConnected = FALSE;
          m_bListen = FALSE;

          if (bListen == TRUE)
          {
            KeSetEvent(&m_kAcceptDestroyEvent, 0, FALSE);
            SetEventHandler(TDI_EVENT_CONNECT, (PVOID)NULL, (PVOID)NULL);
          }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品日韩专区silk| 日韩三级.com| 成人免费高清在线观看| 国产福利一区二区| 国产在线播放一区二区三区| 美女尤物国产一区| 男人的天堂久久精品| 日本午夜一区二区| 免费观看在线色综合| 视频一区二区三区在线| 奇米综合一区二区三区精品视频| 美女视频一区二区三区| 免费黄网站欧美| 狠狠色丁香九九婷婷综合五月| 紧缚捆绑精品一区二区| 国产精品自拍网站| 成人av动漫网站| 色噜噜狠狠色综合中国| 欧美日韩成人在线| 精品成人在线观看| 中文字幕一区二区三区精华液 | 欧美亚洲国产一卡| 9191成人精品久久| 国产午夜一区二区三区| 国产精品国产精品国产专区不蜜| 亚洲欧美另类小说视频| 日韩成人一级大片| 成人中文字幕在线| 欧美日韩国产另类一区| 久久久噜噜噜久久人人看 | 国产在线精品视频| a级精品国产片在线观看| 欧美剧在线免费观看网站| 亚洲精品一区在线观看| 成人免费一区二区三区在线观看| 三级久久三级久久| 国产成人精品三级麻豆| 欧美日韩大陆一区二区| 国产精品入口麻豆原神| 亚洲mv在线观看| 成人污视频在线观看| 欧美性一二三区| 欧美激情一区二区三区全黄| 午夜精品免费在线| av在线不卡网| 中文字幕免费一区| 免费在线看成人av| 色8久久精品久久久久久蜜| 久久中文字幕电影| 亚洲成人免费观看| 91蜜桃免费观看视频| 久久综合久久鬼色中文字| 亚洲sss视频在线视频| aaa国产一区| 欧美精品一区二区三区在线播放| 一区二区免费在线播放| www.亚洲免费av| 精品日韩成人av| 视频一区视频二区在线观看| 色香蕉成人二区免费| 国产精品色婷婷| 国产电影精品久久禁18| 日韩欧美资源站| 亚洲一区二区三区四区在线 | 美女高潮久久久| 欧美日韩和欧美的一区二区| 亚洲三级在线播放| www.久久久久久久久| 国产亚洲女人久久久久毛片| 久久精品国产亚洲a| 91精品国产免费| 日韩精品亚洲专区| 欧美精品在线一区二区| 天堂一区二区在线免费观看| 欧美日韩一本到| 日本色综合中文字幕| 欧美精品一二三| 奇米888四色在线精品| 欧美一级xxx| 国产揄拍国内精品对白| 久久久亚洲精品石原莉奈| 国产毛片精品国产一区二区三区| 久久久精品欧美丰满| 国产一区二区三区在线看麻豆| 日韩精品一区二区三区在线| 久久99蜜桃精品| 久久久亚洲午夜电影| 成人少妇影院yyyy| 亚洲精选免费视频| 欧美三级电影网| 日韩成人一区二区三区在线观看| 欧美一区二区三区视频在线| 国产在线播放一区| 亚洲色欲色欲www| 欧美日韩一区二区三区在线| 日韩福利电影在线| 久久久久久久久久久久久久久99| 国产福利一区二区| 亚洲一区影音先锋| 精品国产免费人成电影在线观看四季 | 波多野结衣在线一区| 中文字幕一区二| 欧美日韩黄色影视| 国产99久久久国产精品潘金 | 久久九九国产精品| 91美女片黄在线| 日韩福利电影在线观看| 久久青草欧美一区二区三区| av一二三不卡影片| 日韩精品电影一区亚洲| 国产精品人妖ts系列视频| 在线看国产日韩| 国产福利一区二区三区在线视频| 一区二区三区四区在线播放| 久久综合九色欧美综合狠狠| 99精品视频一区| 九一九一国产精品| 一区二区三区91| 国产亚洲欧美日韩俺去了| 欧美人与性动xxxx| 91网站黄www| 粉嫩一区二区三区性色av| 日韩电影在线观看一区| 国产精品伦一区二区三级视频| 欧美一区二区三区视频免费| 99久久综合狠狠综合久久| 久久精品国产**网站演员| 夜夜嗨av一区二区三区| 久久久久久久久97黄色工厂| 欧美一区二区三区在线视频| 91视频国产资源| 粉嫩av一区二区三区在线播放| 六月丁香婷婷久久| 午夜精品久久久久久不卡8050| 成人欧美一区二区三区白人| 久久久一区二区三区捆绑**| 日韩限制级电影在线观看| 欧美人狂配大交3d怪物一区| 91丝袜美腿高跟国产极品老师| 国产一区久久久| 久久er精品视频| 久久精品国产99| 蜜臀99久久精品久久久久久软件| 午夜视频在线观看一区二区| 亚洲激情图片小说视频| 中文字幕一区二区三区在线观看| 国产欧美日韩视频在线观看| 国产日韩在线不卡| 国产欧美一区二区精品仙草咪| 欧美va亚洲va在线观看蝴蝶网| 91精品国产福利| 日韩一区二区三区免费观看| 欧美一个色资源| 精品国产亚洲在线| 久久综合色播五月| 国产无遮挡一区二区三区毛片日本| 精品国产免费久久| 久久嫩草精品久久久久| 欧美精品一区二区蜜臀亚洲| 精品免费视频.| 国产日韩欧美不卡在线| 久久久不卡网国产精品二区| 久久精品亚洲精品国产欧美kt∨| 久久伊人蜜桃av一区二区| 国产欧美一区二区精品性色| 中文字幕一区二区三区蜜月| 国产精品白丝在线| 亚洲一二三四久久| 日本色综合中文字幕| 精品一区二区三区免费毛片爱| 狠狠色狠狠色综合系列| av激情亚洲男人天堂| 在线一区二区三区| 欧美一区二区视频观看视频| 久久久蜜桃精品| 伊人色综合久久天天| 日韩影视精彩在线| 国产精品亚洲第一区在线暖暖韩国| 国产91清纯白嫩初高中在线观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美日韩一本到| 精品国产1区二区| 日本一区免费视频| 亚洲一区二区三区在线播放| 日本视频中文字幕一区二区三区| 国产一区亚洲一区| 在线亚洲高清视频| 久久综合av免费| 亚洲一区二区偷拍精品| 久久成人综合网| 一本久道久久综合中文字幕 | 中文字幕精品一区| 亚洲成人福利片| 成人深夜福利app| 欧美一区三区四区| 自拍偷拍欧美精品| 激情综合网最新| 欧美视频精品在线| 国产精品白丝在线| 久久99热这里只有精品|