Registriert seit: 13. Mai 2006
94 Beiträge
RAD-Studio 2010 Arc
|
Re: Heuristik-Fund bei ShellExecute/CreateProcess/WinExeC
20. Mai 2010, 13:57
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
|
|
Zitat
|