Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC (https://www.delphipraxis.net/151485-heuristik-fund-bei-shellexecute-createprocess-winexec.html)

Luckie 20. Mai 2010 08:34

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
Man sollte so wie so die Endung CMD nehmen. Denn mit BAT wird der 16-Bit Kommandoprozessor aufgerufen.

internetnavigator 20. Mai 2010 12:57

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
Eine Änderung der Dateiendung bringt leider nichts.

Zu bemerken ist aber:

Delphi-Quellcode:
 SysFunc.ErstelleProzess(pChar('calc.exe'), '', '', FALSE); // Kein Problem, bis dass die Execution fehlschlägt
 SysFunc.ErstelleProzess(pChar(hRunBatFileName), '', '', FALSE); // Kein Problem, bis dass die Execution fehlschlägt
 SysFunc.ErstelleProzess(pChar(hAppPath + hRunBatFileName), '', '', FALSE); // Hier schlägt gData zu
 SysFunc.ErstelleProzess(pChar('D:\Windows\System32\calc.exe'), '', '', FALSE); // Hier schlägt gData zu

// Wenn es "crasht":
First chance exception at $757F9617. Exception class EAccessViolation with message 'Access violation at address 00403A43 in module 'Host_update.exe'. Read of address 00000000'. Process Host_update.exe (5000)
Hier nochmal die Procedure ErstelleProzess:

Delphi-Quellcode:
procedure TSysFunc.ErstelleProzess(const AFilename: String;
                 AParameter, ACurrentDir: String; AWait: Boolean;
                 AOnWaitProc: TExecuteWaitEvent=nil);
var
  si: TStartupInfo;
  pi: TProcessInformation;
  bTerminate: Boolean;
begin
  bTerminate := False;

  if Length(ACurrentDir) = 0 then
    ACurrentDir := ExtractFilePath(AFilename);

  if AnsiLastChar(ACurrentDir) = '\' then
    Delete(ACurrentDir, Length(ACurrentDir), 1);

  FillChar(si, SizeOf(si), 0);
  with si do begin
    cb := SizeOf(si);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := SW_NORMAL;
  end;

  FillChar(pi, SizeOf(pi), 0);
  AParameter := Format('"%s&" %s', [AFilename, TrimRight(AParameter)]);

  if CreateProcess(Nil, PChar(AParameter), Nil, Nil, False,
                   CREATE_DEFAULT_ERROR_MODE or CREATE_NEW_CONSOLE or
                   NORMAL_PRIORITY_CLASS, Nil, PChar(ACurrentDir), si, pi) then
  try
    if AWait then
      while WaitForSingleObject(pi.hProcess, 50) <> Wait_Object_0 do
      begin
        if Assigned(AOnWaitProc) then
        begin
          AOnWaitProc(pi, bTerminate);
          if bTerminate then
            TerminateProcess(pi.hProcess, Cardinal(-1));
        end;

        Application.ProcessMessages;
      end;
  finally
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
  end;
end;
Scheint also so, dass gData mit der Pfadangabe bei der Ausführung ein Problem hat.
Jemand 'ne Idee wie ich es anders machen kann? (Alle Dateien liegen in einem Ordner)

mfg !N

ErazerZ 20. Mai 2010 13:42

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
Die engine prüft ob du irgendetwas ins Windows verzeichnis kopiert. Und du solltest im Normalfall nichts dort kopieren. Benutze appdata einfach.

Luckie 20. Mai 2010 13:45

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
Das kann aber auch nicht die Lösung sein. dann würde ja jeder Installer, der Systemdateien in das Windows Verzeichnis kopieren muss einen Alarm bei gData auslösen. Ich gehe davon aus, dass die Heuristik anschlägt. Was passiert denn, wenn man die Heuristik mal abschaltet oder runtersetzt?

internetnavigator 20. Mai 2010 16:02

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
Zu "ErazerZ": Ich nutze ja nur AppData (ProgramData). Alle administrativen Ordner werden nicht genutzt.

Zu "Luckie": Natürlich kann man den Virenscanner auf jedem Client zentral vom Server deinstallieren, aber das steht leider nicht zur Option. Die Systeme müssen sicher bleiben. Wenn ich nur wüsste was genau gData stört.

Vielleicht hat ja jemand eine Idee wie man das Problem durch Quellcodeänderung ändern kann?

Die Procedure muss folgendes tuen:
1. Sich selbst als "Host.exe" kopieren
2. Sich selbst löschen
3. Schlussendlich "Host.exe" aufrufen

Durch die Verwendung der Bat muss man natürlich erst die Bat ausführen und sich dann schließen, geht ja sonst nicht.

Mithrandir 20. Mai 2010 16:16

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
Statt dem Batch-Skript vielleicht eine kleine Exe? Was hält gData davon?

internetnavigator 20. Mai 2010 16:39

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
Genau, eine Konsolen-App mit Parameterübergabe, ich versuch es mal...

internetnavigator 20. Mai 2010 16:54

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
gData lässt mich nichts an dieser Stelle ausführen.
Hab jetzt eine Möglichkeit gefunden:
Hab den VerifyFile Aufruf (welche bei einem Update zu InstallHost linkt) in den OnActivate der Form gelegt.
Jetzt ist Ruhe, aber eine wirklich schöne Lösung ist das auch nicht :/

Ich komm wohl nicht drum herum mir eine Signatur zu holen bzw gData die Source zu schicken.

Vielen Dank aber für Eure Hilfe!

mfg !N

ErazerZ 20. Mai 2010 17:21

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
Du musst den quellcode ja nicht schicken. Exe wird reichen. Heuristik erkennt das copyfile und das createprocess. Vlt klappt es wenns die apis dynamisch ladest. Wenn nicht dann andere apis probieren. Muss aber nicht klappen. Am einfachsten ist es du schickst es ihnen.

internetnavigator 20. Mai 2010 17:36

Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
 
Zitat:

Zitat von ErazerZ
Du musst den quellcode ja nicht schicken. Exe wird reichen.

Aber wie wollen die dann feststellen dass die Exe eben nicht schädlich ist? Könnte da jeder seine Viren hin schicken und die verifizieren die? :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz