Разработка кроссплатформенного антивирусного сканера
Для выделения последовательности байт соответствующую данному вирусу, было создано два exe файла, которые были «заражены» данными командами, также было создан еще один файл, который не содержал вирусный код. Для создания последовательности байт, соответствующей данному вирусу, была написана программа, которая находила все общие подпоследовательности, т.о. чтобы их множество не пересекалось… Читать ещё >
Разработка кроссплатформенного антивирусного сканера (реферат, курсовая, диплом, контрольная)
Мы реализуем антивирусный сканер, который будет значительно упрощен по сравнению с любыми современными вариантами сканера, но в нем присутствуют все необходимые детали для нормального функционирования. В сканере реализованы: база данных, с возможностью добавления новых сигнатур в базу; сканер, который реализует поиск вредоносных сигнатур в PE файлах. Для реализации сканера был выбран язык программирования Java в связи с достаточным объемом проекта и постепенным развитием проекта. Основная сложность данной задачи заключается в написании быстрого сканера, который позволил бы сканировать достаточные объемы информации. Решение данной задачи производится с помощью поиска вирусов только в исполняемых файлах и использования быстрого алгоритма сравнения сигнатуры.
Обнаружение вирусов и создание сигнатур
Антивирусный сканер в данной статье построен на методе обнаружения сигнатур. Это такой метод, при котором антивирусная программа просматривает каждый файл, сравнивает его с уже имеющейся базой данных и при совпадении участков кода делает одно из 3 действий:
удаляет файл;
перемещает в карантин;
лечит файл, удаляя из него код вируса.
Для достижения результатов при использовании данного метода необходимо своевременно обновлять базу сигнатур, чтобы избежать заражения своего компьютера. Данный процесс осложняется тем, что придуманы полиморфные вирусы, которые изменяют свою сигнатуру, не давая, таким образом, сканеру обнаружить себя. Сигнатуры создаются в процессе длительного анализа несколько копий одного вируса, при этом они должны содержать уникальные строки вредоносной программы, чтобы максимально уменьшить число ложных срабатываний [1].
Вредоносная программа — это файл и набор действий, который она производит в системе. В сигнатуру входят все характерные черты вируса, такие как последовательность байт, влияние на операционную систему, способ лечения вируса, если такой известен, и другие. В своей программе мы для работы с сигнатурами создаем специальный класс SegmentCode. Он, как следует из его названия, служит для работы с сегментами кода. В нем хрантися последовательность байт, ее длина и название вируса. Для создания экземпляра класса предусмотрено два конструктора. Первый из них создает экземпляр класса на основе последовательности байт и названии вируса.
Этот конструктор служит для работы с базой данных и загрузки из нее сигнатур вирусов. Второй конструктор служит для загрузки сегментов кода, которые в дальнейшем программа собирается проверять. Так как класс приспособлен для хранения последовательности байт, которые были взяты либо из базы, либо из файла, то в нем существует дополнительные методы, которые помогают для работы с ним. Публичными являются три метода, получения последовательности байт, поиск сегмента кода в сегменте и переопределенный метод класса ObjecttoString (), который возвращает название сегмента кода и его длину. В классе существует дополнительный закрытый метод makeSegment (), который используется для того, чтобы прочитать последовательность байт из файла, при каждом вызове осуществляется автоматическая проверка готовности класса к работе, и если он не готов к работе, тогда вызывается этот метод.
Для проверки работоспособности программы решено было создать уникальную сигнатуру. За вирусный код был условно взят следующий код на Delphi:
Write (`I am virus'); Sleep (1000); |
Для выделения последовательности байт соответствующую данному вирусу, было создано два exe файла, которые были «заражены» данными командами, также было создан еще один файл, который не содержал вирусный код. Для создания последовательности байт, соответствующей данному вирусу, была написана программа, которая находила все общие подпоследовательности, т.о. чтобы их множество не пересекалось, и подпоследовательности, которые можно было бы объединить в одну подпоследовательность были объединены, а из этого множества с помощью третьего файла были удалены подпоследовательности, которые присутствовали в нем. Таким образом была получена сигнатура вируса, состоящую из двух команд: вывести сообщение на экран и заснуть [2].