![]() |
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.
|
Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
Eine Änderung der Dateiendung bringt leider nichts.
Zu bemerken ist aber:
Delphi-Quellcode:
Hier nochmal die Procedure ErstelleProzess:
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)
Delphi-Quellcode:
Scheint also so, dass gData mit der Pfadangabe bei der Ausführung ein Problem hat.
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; Jemand 'ne Idee wie ich es anders machen kann? (Alle Dateien liegen in einem Ordner) mfg !N |
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.
|
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?
|
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. |
Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
Statt dem Batch-Skript vielleicht eine kleine Exe? Was hält gData davon?
|
Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
Genau, eine Konsolen-App mit Parameterübergabe, ich versuch es mal...
|
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 |
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.
|
Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz