Таким образом, следует провести синтез результатов различных тестов. Так сведены позиции, которые антивирусы заняли в рассмотренных тестах, а также выведена интегрированная оценка – какое место в среднем по всем тестам занимает тот или иной продукт. В итоге в тройке призеров: «Касперский», Avira, Symantec.
Рисунок 5 – Усредненный рейтинг антивирусных программ
На основе проанализированных антивирусных пакетов был создан программный продукт, предназначенный для поиска и лечения файлов, зараженных вирусом SVC 5.0. Данный вирус на приводит к несанкционированному удалению или копированию файлов, однако значительно мешает полноценной работе с программным обеспечением компьютера.
Зараженные программы имеют длину большую, чем исходный код. Однако при просмотре каталогов на зараженной машине этого видно не будет, так как вирус проверяет, заражен найденный файл или нет. Если файл заражен, то в DTA записывается длина незараженного файла.
Обнаружить данный вирус можно следующим образом. В области данных вируса есть символьная строка "(c) 1990 by SVC,Ver. 5.0", по которой вирус, если он есть на диске, можно обнаружить.
При написании антивирусной программы выполняется следующая последовательность действий:
1 Для каждого проверяемого файла определяется время его создания.
2 Если число секунд равно шестидесяти, то проверяются три байта по смещению, равному "длина файла минус 8АН". Если они равны соответственно 35Н, 2ЕН, 30Н, то файл заражен.
3 Выполняется декодирование первых 24 байт оригинального кода, которые расположены по смещению "длина файла минус 01CFН плюс 0BAAН". Ключи для декодирования расположены по смещению "длина файла минус 01CFН плюс 0С1AН" и "длина файла минус 01CFН плюс 0С1BН".
4 Раскодированные байты переписываются в начало программы.
5 Файл «усекается» до величины "длина файла минус 0С1F".
Программа создана в среде программирования TurboPascal. Текст программы изложен в Приложении А.
Заключение
В данной курсовой работе был проведен сравнительный анализ антивирусных пакетов.
В процессе проведения анализа были успешно решены задачи, поставленные в начале работы. Так были изучены понятия информационной безопасности, компьютерных вирусов и антивирусных средств, определены виды угроз безопасности информации, методы защиты, рассмотрена классификация компьютерных вирусов и антивирусных программ и проведен сравнительный анализ антивирусных пакетов, написана программа, производящая поиск зараженных файлов.
Результаты, полученные в процессе работы могут быть применены при выборе антивирусного средства.
Все полученные результаты отражены в работе с помощью диаграмм, поэтому пользователь может самостоятельно проверить выводы, сделанные в итоговой диаграмме, отражающей синтез выявленных результатов различных тестов антивирусных средств.
Результаты, полученные в процессе работы могут быть применены как основа для самостоятельного сравнения антивирусных программ.
В свете широкого использования IT-технологий, представленная курсовая работа является актуальной и отвечает предъявленным к ней требованиям. В процессе работы были рассмотрены наиболее популярные антивирусные средства.
Список использованной литературы
1 Анин Б. Защита компьютерной информации. – СПб. : БХВ – Санкт – Петербург, 2000. – 368 с.
2 Артюнов В. В. Защита информации: учеб. – метод. пособие. М. : Либерия – Бибинформ, 2008. – 55 с. – (Библиотекарь и время. 21 век; вып. №99 ).
3 Корнеев И. К., Е. А. Степанов Защита информации в офисе: учебник. – М . : Проспект, 2008. – 333 с.
5 Куприянов А. И. Основы защиты информации: учеб. пособие. – 2-е изд. стер. – М.: Академия, 2007. – 254 с. – (Высшее профессиональное образование).
6 Семененко В. А., Н. В. Федоров Программно – аппаратная защита информации: учеб. пособие для студ. вузов. – М. : МГИУ, 2007. – 340 с.
7 Цирлов В. Л. Основы информационной безопасности: краткий курс. – Ростов н/Д: Феникс, 2008. – 254 с. (Профессиональное образование).
Приложение
Листинг программы
ProgramANTIVIRUS;
Uses dos,crt,printer;
Type St80 = String[80];
Var
R:Registers;
FileInfection:File Of Byte;
SearchFile:SearchRec;
Mas:Array[0..80] of St80;
MasByte:Array[1..3] of Byte;
Position,I,J,K:Byte;
Num,NumberOfFile,NumberOfInfFile:Word;
St:St80;
Flag,NextDisk,Error:Boolean;
Dt:DateTime;
Key1,Key2,Key3,NumError:Byte;
MasScreen:Array[0..24,0..159] Of Byte Absolute $B800:0000;
Ch,Disk:Char;
Procedure Cure(St : St80);
Var
I: Byte; MasCure: Array[1..24] Of Byte;
Begin
Assign(FileInfection,St); Reset(FileInfection);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
Seek(FileInfection,FileSize(FileInfection) - ($0C1F - $0C1A));
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
Read(FileInfection,Key1);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
Read(FileInfection,Key2);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
Seek(FileInfection,FileSize(FileInfection) - ($0C1F - $0BAA));
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
For I:=1 to 24 do
Begin
Read(FileInfection,MasCure[i]);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
Key3:=MasCure[i];
InLine($50/
$8A/$26/KEY1/
$30/$26/KEY3/
$A0/KEY2/
$00/$C4/
$88/$26/KEY1/
$58);
MasCure[i]:=Key3;
End;
Seek(FileInfection,0);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
For I:=1 to 24 do Write(FileInfection,MasCure[i]);
Seek(FileInfection,FileSize(FileInfection) - $0C1F);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
Truncate(FileInfection);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
Close(FileInfection); NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
Num:=Num+1;
End;
Procedure F1(St : St80);
Begin
FindFirst(St + '*.*', $3F, SearchFile);
While (SearchFile.Attr = $10) And (DosError = 0) And
((SearchFile.Name = '.') Or (SearchFile.Name = '..')) Do
Begin
FindNext(SearchFile);
End;
While (DosError = 0) Do
Begin
If KeyPressed Then
If (Ord(ReadKey) = 27) Then Halt;
If (SearchFile.Attr = $10) Then
Begin
Mas[k]:=St + SearchFile.Name + '\';
K:=K+1;
End;
If (SearchFile.Attr <> $10) Then
Begin
NumberOfFile:=NumberOfFile + 1;
UnpackTime(SearchFile.Time, DT);
For I:=18 to 70 do MasScreen[6,2*i]:=$20;
GoToXY(18,7);
Write(St + SearchFile.Name,' ');
If (Dt.Sec = 60) Then
Begin
Assign(FileInfection,St + SearchFile.Name);
Reset(FileInfection);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
Seek(FileInfection,FileSize(FileInfection) - $8A);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
For I:=1 to 3 do Read(FileInfection,MasByte[i]);
Close(FileInfection);
NumError:=IOResult;
If (NumError <> 0) Then Begin Error:=True; Exit; End;
If (MasByte[1] = $35) And (MasByte[2] = $2E) And
(MasByte[3] = $30) Then
Begin
NumberOfInfFile:=NumberOfInfFile + 1;
GoToXY(1,8);
Write( St + SearchFile.Name,' inficirovan. ',
'Udalit? [Y/N] ');
Repeat
Ch:=ReadKey;
If (Ord(Ch) = 27) Then Exit;
Until (Ch = 'Y') Or (Ch = 'y') Or (Ch = 'N')
Or (Ch = 'n');
If (Ch = 'Y') Or (Ch = 'y') Then
Begin
Cure(St + SearchFile.Name);
If (NumError <> 0) Then Exit;
End;
For I:=0 to 79 do MasScreen[7,2*i]:=$20;
End; End; End;
FindNext(SearchFile);
End;
End;
Begin
Repeat
Flag:=True;
TextAttr:=$1F;
Repeat
ClrScr;
GoToXY(29,1); TextAttr:=$1E; GoToXY(20,2); TextAttr:=$17;
Writeln('Programma dlya poiska i lecheniya fajlov,');
GoToXY(28,3);
Writeln('zaragennih SVC50.');
TextAttr:=$4F; GoToXY(1,25);
Write(' ESC - exit ');
TextAttr:=$1F; GoToXY(1,6);
Write('Kakoj disk proverit? ');
Disk:=ReadKey;
If (Ord(Disk) = 27) Then Exit;
R.Ah:=$0E; R.Dl:=Ord(UpCase(Disk))-65;
Intr($21,R); R.Ah:=$19; Intr($21,R);
Flag:=(R.Al = (Ord(UpCase(Disk))-65));
Until Flag;
NextDisk:=True;
Error:=False;
Num:=0;
K:=0;
St:=UpCase(Disk) + ':\';
GoToXY(1,6);
Writeln('Testiruetsya disk ',St,' ');
Writeln('Testiruetsya fajl ');
NumberOfFile:=0;
NumberOfInfFile:=0;
F1(St);
If (k = 0) Or Error Then Flag:=False;
If (k > 0) Then K:=K-1;
While Flag Do
Begin
If (k=0) Then Flag:=False;
F1(Mas[k]);
If (k > 0) Then K:=K-1;
End;
GoToXY(1,10);
Writeln('Provereno fajlov - ',NumberOfFile);
Writeln('Zarageno fajlov - ',NumberOfInfFile);
Writeln('Izlecheno fajlov - ',Num);
Write('Proverit drugoj disk? [Y/N]');
Repeat
Ch:=ReadKey;
If (Ord(Ch) = 27) Then Exit;
Until (Ch = 'Y') Or (Ch = 'y') Or (Ch = 'N') Or (Ch = 'n');
If (Ch = 'N') Or (Ch = 'n') Then NextDisk:=False;
Until Not(NextDisk);
End.