Теория о создании антивируса на Delphi - Форум
Суббота, 08.02.2025, 22:25 | Приветствую Вас Гость

Жми-форум обо всём

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

  • Страница 1 из 1
  • 1
Модератор форума: RoMkA29  
Теория о создании антивируса на Delphi
RoMkA29Дата: Воскресенье, 03.03.2013, 00:33 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 264
Репутация: 3
Статус: Offline
Приветствую тебя дорогой читатель.
Сегодня я хочу поговорить о реализации своего собственного мини антивируса.
По плану статьи мы разберём следущие разделы,так сказать план работы.

1.Создание файла базы
2.Наполнение базы
3.Создание ядра антивируса(сама проверка вирус/не вирус)
4.Модуль подачи файлов в ядро для сканирования
5.Красивый графический интерфейс.

Итак,перейдем к делу.

1.Создаём базу.

База антивируса очень нужна!
По ней антивирусное ядро будет определять является ли файл вирусом или нет.
Нужно придумать формат хранения базы,то есть например:

Код
Trojan.WinSpy.921:e0c47a5d8f3ca2158d72b7072acfc4d7:18944


Где:

Trojan.WinSpy.921-Имя файла вируса
e0c47a5d8f3ca2158d72b7072acfc4d7-MD5 сумма файла
18944-Размер файла

Да да!Определять является ли файл НЕ ЖЕЛАТЕЛЬНЫМ мы будем по MD5 сумме.
Не надо ничего говорить про то что это чушь.
До сих пор знаменитые антивирусы используют MD5 сигнатуры!

Вообщем я думаю с форматом записей в базе мы определились и тут больше говорить не о чем.

Базу можно сохранить в TXT формате,можно в любом другом.
Например basevir.myantivir в этом случае лишние нубки не полезут его смотреть)

2.Наполняем базу

Базу мы наполняем MD5 суммами файлов.
Ведь не факт что у нас в базе будут только вирусы,там также могут быть нежелательные программы.

Например можно добавить в базу программу  spytnik mail.ru.
Программа совершенна бесполезна!Тупо сидит в системе и о её действиях можно только догадываться.
Добавляем её в базу так:

Код
spytnik mail.ru:ad7bf7ecad07a9e54de1303eb2b1e220:174080


Каждая запись с новой строки.

3.Ядро

Переходим к самому главному!Ядру нашего мини антивируса.
Ядро будет выполнять очень простое действие.

-Загружает базу сигнатур
-Принимает путь к проверяемому файлу
-Вычисляет MD5 принятого файла
-Ищет его по базе сигнатур
-Если найдена,оповещает пользователя и переходит к следующему файлу.Нет-Переходит к следующему файлу.

Действия банальны и просты.

Единственное пояснение,желательно чтобы программа заранее при запуске загрузила базу сигнатур.
А не при проверке каждого файла как это было сделано в антивирусе XCore.

Например при запуске программы можно создать stringlist и загрузить в него базу сигнатур.
А далее по нему и искать.

Функцию для вычисления md5 файла найти в интернете без проблем.

4.Поиск файлов и их подача ядру.

Тут всё просто.
Нужно создать функцию рекурсивного поиска файлов.
Рекурсивный поиск отличается тем что ищет не только предположим в корне диска C:\ но и во всех вложенных папках.
В функцию рекурсивного поиска у нас будет подаваться стартовая директория,например C:\
и по идее должна быть маска для поиска,например *.exe будет искать все exe файлы.
Но ведь бывают вирусы формата .bat и многие другие...
Поэтому решать по какой маске искать файлы вам решать.

Код
Procedure ScanDir(Dir:String);//Название процедуры и входящие данные
   Var
   SR        :TSearchRec;
   FindRes,i :Integer;//Переменные для хранения данных
begin
   FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR);//Указываем директорию и маску для поиска
      

     if SUBDIR then //Переменная должна иметь значение ложь или правда,отвечает на вопрос сканировать подпапки или нет.
     if ((SR.Attr and faDirectory)=faDirectory) then //Если найдена папка то...
       begin
         ScanDir(Dir+SR.Name+'\'); //Запскаем сами себя повторно
         FindRes:=FindNext(SR);  
         Continue;//Продолжаем поиск
       end;
     end;
//Здесь можно вставить отправку пути к найденому файлу в ядро
     FindRes:=FindNext(SR);//Продолжаем поиск
   end;
   FindClose(SR);//Если больше ничего не найдено-заканчиваем поиск и выходим из процедуры.
end;


5.Создание красивого интерфейса.

Тут уже дело сугубо каждого.Индивидуальное так сказать.
Не делайте много настроек.Намучаетесь с их сохранением и чтением.
Можете найти и вставить картинку в интерфейс программы.

Еще могу посоветовать скачать компонент к delphi,называется он AlphaControls
Очень интересный компонент и делает программы красивыми и интересными.
Ищите на форуме,обещаю выложить)

На этом я заканчиваю эту статью.
В будущем надеюсь написать что нибудь более интересное,например писк по hex сигнатуре.
Но это будет в будущем.
А пока что всем удачи)
До новых встреч.
 
  • Страница 1 из 1
  • 1
Поиск:

Навигация
Block title
Форма входа

Наш бот
Наш бот информер

ICQ:636-921-022
Jabber:zhmibot@jabber.ru
Случайные картинки
Случайная музыка
[12.03.2013][mp3]
SendikaT – Играй со мной, кидай меня, размажь, как тряпку по полу. Делайс назло, ехидно мейся, тебе же все по приколу. Режь, убивай меня, де (0)
SendikaT – Играй со мной, кидай меня, размажь, как тряпку по полу. Делайс назло, ехидно мейся, тебе же все по приколу. Режь, убивай меня, де
[04.11.2013][mp3]
Пицца – Оружие (0)
Пицца – Оружие
[30.11.2013][mp3]
Serebro(Серебро) - Мало тебя (0)
Serebro(Серебро) - Мало тебя
Опрос
Вы нашли тут что искали?
Всего ответов: 17
Поиск
Обновление
  • Куплю, обмен швейцарские франки 8 серии, английские фунты (1)
  • Раздача Халявы (ICQ Дедиков Wmz Wmr, Steam аккаунты к играм (1)
  • Мы же русские люди, нам не привыкать привыкать! (1)
  • Букмекерская контора Betsstore (1)
  • Полезные советы для пользователей Windows XP (1)
  • Статистика


    Яндекс.Метрика
    Статистика