Einzelnen Beitrag anzeigen

Benutzerbild von TheGame1492
TheGame1492

Registriert seit: 31. Jul 2004
Ort: Berlin
84 Beiträge
 
Delphi XE2 Professional
 
#1

shell in einem thread starten, schlägt fehl

  Alt 28. Nov 2007, 17:44
Hoi, Ich versuche in einem Thread eine Shell zu erzeugen.

Delphi-Quellcode:

program Project1;

{$APPTYPE CONSOLE}

uses
  Windows, Winsock;

var
  shellThreadID: DWORD;
  str: string;
  close: boolean;

procedure CreateShell;
var
   hSocket: PInteger;
   si: TStartupInfo;
   pi: TProcessInformation;

begin
   hSocket := PInteger(99);
   ZeroMemory(@si, SizeOf(si));
   si.cb := SizeOf(si);
   si.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
   si.wShowWindow := SW_HIDE;
   si.hStdInput := hSocket^;
   si.hStdOutput := hSocket^;
   si.hStdError := hSocket^;
   CreateProcess(nil, '', nil, nil, true, CREATE_NEW_CONSOLE, nil, nil, si, pi);
   WaitForSingleObject(pi.hProcess, INFINITE);
   CloseHandle(pi.hProcess);
   CloseHandle(pi.hThread);
   Shutdown(hSocket^, SD_BOTH);
   CloseSocket(hSocket^);
   Dispose(hSocket);
end;

begin
  shellThreadID := 1191;
  //CreateThread(nil, 0, @CreateShell, nil, 0, shellThreadID);


  //auf quit warten
  close := false;
  while close = false do
  begin
    sleep(100);
    ReadLn(str);
    if str = 'quitthen
      close := true;

  end;
end.
dort soll man denn via "telnet 127.0.0.1 99" eigentlich connecten können

nur schmiert das vorher ab mit einer Zugriffsverletzung.

Was könnte an dem Code falsch sein?
  Mit Zitat antworten Zitat