Сканер сигнатур
в общем получилась данная задумка подменил параметр D3D_FEATURE_LEVEL_11_1 на D3D_FEATURE_LEVEL_10_0 и запустил D3D11-приложение на DX10-видеокарте.
программа для приостановки процесса инициализации (со встроенным инжектором)
ну и само тестовое D3D11-приложение
пользовался вот такой заготовкой
Сканер портов
Всем привет.Пишу сканер портов.Как мне сделать так,что бы вывод шёл в главное окно?то есть нажимаю.
Сканер отпечатков пальцев
Здравствуйте! Можно ли подключится к драйверу сканера для получения изображения (на него нет SDK.
спасибо, буду пробовать.
кстати нашёл похожий вариант на то, что приводил выше, но вроде более «качественный»
Создание каркаса программы из namespace`ов и сигнатур
Всем привет. Возникла следующая проблема 🙂 Вернулся с Java на C++. Расстроился. Раздражает то, что.
Код поиска сигнатур (нужны комментарии)
требуется разобрать код #include using namespace std; int cmp_func(const void.
Лексический сканер
Лексический сканер должен учитывать области видимости и кодировать их по-разному. Содержание.
Сканер портов
Всем добрый день! У меня возникла проблема при реализации сканера портов под Линукc: Программа.
Сканер портов
Всем привет 🙂 Не могу реализовать сканер по диапазону ip-адресов и на определённый порт(по.
сканер proxy
Здравствуйте уважаемые форумчане! Никогда не работал с сетью в с++ поэтому прошу объясните что.
Сканер вирусов изнутри
Последний год я работал над реализацией вирусного сканера для одной антивирусной как ни странно компании.
Пост являет собой выжимку приобретенных знаний, и повествует хабрасообществу о внутреннем устройстве как ни странно антивирусного сканера.
Сканирующий движок или сканер — это фундамент антивирусного пакета. Являет собой бэк-энд антивируса и, как правило представлен в виде dll, так как сканер используется сразу несколькими программами из пакета.
Графическая оболочка в этом случае — лишь красивая обертка для отображения результатов движка. Всю полезную работу, делает движок в бэк-енде.
Локации вирусного ПО
Виды сканирования.
Сканирование делится на два основных вида: сигнатурный и эвристический.
Сканирование на основе сигнатур.
Другое название — хэш-скан (hash scan). Сканер проверяет файлы путем сравнения сигнатур файлов со словарем.
Обычно сигнатурой антивируса является MD5-хэш (16 байт) сгенерированный на основе тела известного вируса.
Таким образом, файл считается зараженным, если его хэш найден в базе сигнатур. Для локализации выявления вредоноса, хэш может вычисляться только для exe-файлов на основе PE-заголовка.
Такой вид сканирования позволяет определить вид атаки с высокой долей вероятности, без ложных срабатываний (чем грешит эвристическое сканирование).
К недостаткам хэш-скана относят неспособность выявить новые вирусы, которые отсутствуют в базе. А также беззащитность перед полиморфными или шифрующимися вирусами, в связи с чем требуются регулярные обновления базы сигнатур.
Также слабым местом хэш-скана является скорость проверки. Если бы не закон Мура, ни один современный компьютер уже не смог бы закончить сканирование с такой массой сигнатур в разумное время.
Эвристическое сканирование
Метод, в основе которого положено выявление вируса на основе заранее известных характеристик (эвристик). Например, для выявления загрузочного вируса прописавшегося в MBR, антивирус может считать загрузочную запись двумя путями: функцией WinAPI ReadFile, и с использованием драйвера прямого доступа к диску (direct disk access — DDA driver). А затем сравнить оба буфера. Если буферы различны, то с высокой долей вероятности
можно сказать, что мало того что вирус загрузочный, он еще и подменяет вызовы WinAPI.
Что для руткитов — обычная практика.
Другим примером эвристического скана, может быть поиск следов вируса в реестре и системных директориях. Как правило вирусы создают определенный набор файлов, и/или записей в реестре, по которым можно их выявить.
Перечисленные выше типы локаций вредоносного ПО, а именно сканирование следов, сканирование cookies и проверка загрузочных записей диска, также подпадают под вид эвристического сканирования.
Компоненты и вспомогательные модули сканера
Драйвер прямого доступа к диску
Необходим для обхода руткитов. В зараженной системе, руткиты используются
для заметания следов своего присутствия. Лучшим способом для этого является подмена вызовов API-функций.
В частности для работы с файлами: CreateFile, ReadFile итд. Когда антивирусная программа сканирует систему,
вызывая эти функции, то руткит может возвращать FALSE, когда такой вызов относится к нему. Чтобы обойти это,
сканер содержит в себе модуль непосредственного посекторного считывания с диска, без использования WinAPI.
Черно-Белые списки
Служат для фильтрации обнаружений, которые на самом деле не являются зловредами. Таким образом, антивирус не предупреждает об опасности, в случае ложного срабатывания.
Современные антивирусы, хранят базу в среднем от 5 млн. сигнатур. Причем довольно часто, для одного вируса, может существовать с десяток сигнатур. Возможная ситуация, что из нескольких тысяч системных файлов, найдется подходящий под сигнатуру файл. А это грозит тем, что антивирус удалит его, или переместит в карантин, что может привести к отказу системы вовсе.
Минимизировать ложные срабатывания — главный приоритет любой антивирусной компании.
Чтобы пройти самый престижный антивирусный тест — virus bulletin, антивирус должен показать 100% результат обнаружения, при этом не выдав единого ложного срабатывания.
Белый список — содержит список файлов, которые не вредят системе, но так или иначе обнаруживаются сканером.
Черный список — содержит список вирусов, которым мы доверяем (также не наносят вреда системе).
Распаковщики, дешифровшики
Чтобы достичь приемлемого уровня обнаружения вируса, сканер должен отрабатывать exe-шники, зашифрованные exe-пакером (Например UPX). Тогда перед вычислением хэша, сканер обнаруживает, что файл зашифрован и сначала обращается к дешифровщику, а затем уже на этой основе, вычисляется хэш и сравнивает с имеющимся в базе.
Второй вид архивов — это всем известные zip, rar, 7z итд. Антивирус также должен уметь распаковывать эти архивы, и сканировать содержимое.
Третий вид — это распаковка NTFS ADS (NTFS Alternative Data Streams). В файловой системе NTFS, исполняемый файл может быть замаскирован под обычный, например текстовый. Альтернативный поток этого файла, будет ссылаться непосредственно на вирус.
Use-cases
Сигнатурные дела: Анализатор файлов и антивирус — своими руками
Содержание статьи
Начальство поставило мне довольно интересную задачу. В сжатые сроки написать анализатор исполняемых файлов, который по сигнатурам умел бы находить тела вирусов и определять используемый упаковщик/криптор. Готовый прототип появился уже через пару часов.
Слово автора
Сразу хочу сказать, что это статья не про суровый реверсинг. И даже не про анализ малвари. Скорее я хотел бы поделиться опытом, как огромное количество открытых разработок позволяет быстро, буквально на коленке собрать прототипы систем, которые на начальных этапах вполне смогут справляться с поставленной задачей. Такого прототипа вполне может быть достаточно, чтобы оценить состоятельность разработки и понять, нужно ли двигаться в этом направлении вообще. Разработать прототип сигнатурного анализатора, который бы работал онлайн и мог быть дополнен новыми сигнатурами через веб-интерфейс, и стало моей задачей.
Сначала предлагалось найти какие-то открытые базы сигнатур малвари, что оказалось довольно просто. Но обо всем по порядку.
Сигнатурный анализ
Поиск вредоносного объекта по сигнатурам — это то, что умеет любой антивирус. В общем случае сигнатура — это формализованное описание некоторых признаков, по которым можно определить, что сканируемый файл — это вирус и вирус вполне определенный.
Точно так же описываются некоторые признаки, по которым можно определить, что исполняемый файл упакован тем или иным криптором или упаковщиком (например, банальным ASPack). Если ты внимательно читаешь наш журнал, то точно слышал о такой тулзе как PEiD, способной определять наиболее часто используемые упаковщики, крипторы и компиляторы (в базе есть большое количество сигнатур) для переданного ей PE-файла. Увы, новые версии программы давно не выходят, а недавно на официальном сайте и вовсе появилось сообщение, что дальнейшего развития у проекта не будет. Жаль, потому что возможности PEiD (особенно учитывая систему плагинов) вполне могли оказаться мне полезными. После недолгого анализа все-таки стало ясно, что это не вариант. Но покопавшись в англоязычных блогах, я быстро нашел то, что мне подошло. Проект YARA (code.google.com/p/yara-project).
Что такое YARA?
Я был с самого начала убежден, что где-то в Сети уже есть открытые разработки, которая бы взяли на себя задачу определения соответствия между некоторой сигнатурой и исследуемым файлом. Если бы я смог найти такой проект, то его легко можно было бы поставить на рельсы веб-приложения, добавить туда разных сигнатур и получить то, что от меня требовалось. План стал казаться еще более реальным, когда я прочитал описание проекта YARA.
Сами разработчики позиционируют его как инструмент для помощи исследователям малвари в идентификации и классификации вредоносных семплов. Исследователь может создать описания для разного типа зловредов, используя текстовые или бинарные паттерны, в которых описываются формализованные признаки малвари. Таким образом получаются сигнатуры. По сути, каждое описание состоит из набора строк и некоторого логического выражения, на основе которого определяется логика срабатывания анализатора.
Если для исследуемого файла выполняются условия одного из правил, он определяется соответствующим образом (к примеру, червь такой-то). Простой пример правила, чтобы понимать, о чем идет речь:
Весь код написан на Python, причем пользователю предлагается как сам модуль для использования в своих разработках, так и просто исполняемый файл, чтобы юзать YARA как самостоятельное приложение. В рамках своей работы я выбрал первый вариант, но для простоты в статье мы будем использовать анализатор просто как консольное приложение.
Немного покопавшись, я довольно быстро разобрался, как писать для YARA правила, а также как прикрутить к нему сигнатуры вирусов от бесплатного авера и упаковщиков от PEiD. Но начнем мы с установки.
Установка
Как я уже сказал, проект написан на Python’е, поэтому легко может быть установлен и на Linux, и на Windows, и на Mac. На первых порах можно просто взять бинарник. Если вызвать приложение в консоли, то получим правила для запуска.
$ yara
usage: yara [OPTION]. [RULEFILE]. FILE | PID
То есть формат вызова программы следующий: сначала идет имя программы, затем список опций, после чего указывается файл с правилами, а в самом конце — имя исследуемого файла (или каталога, содержащего файлы), либо идентификатор процесса. Сейчас бы по-хорошему объяснить, как эти самые правила составляются, но не хочу сразу грузить тебя сухой теорией. Поэтому мы поступим по-другому и позаимствуем чужие сигнатуры, чтобы YARA мог выполнять одну из поставленных нами задач — полноценное определение вирусов по сигнатурам.
Свой антивирус
Самый главный вопрос: где взять базу сигнатур известных вирусов? Антивирусные компании активно делятся такими базами между собой (кто-то более щедро, кто-то — менее). Если честно, я поначалу даже сомневался, что где-то в Сети кто-то открыто выкладывает подобные вещи. Но, как оказалось, есть добрые люди. Подходящая база из популярного антивируса ClamAV доступна всем желающим (clamav.net/lang/en). В разделе «Latest Stable Release» можно найти ссылку на последнюю версию антивирусного продукта, а также ссылки для скачивания вирусных баз ClamAV. Нас прежде всего будут интересовать файлы main.cvd (db.local.clamav.net/main.cvd) и daily.cvd (db.local.clamav.net/daily.cvd).
Первый содержит основную базу сигнатур, второй — самую полную на данный момент базу с различными дополнениями. Для поставленной цели вполне хватит daily.cvd, в котором собрано более 100 000 слепков малвари. Однако база ClamAV — это не база YARA, так что нам необходимо преобразовать ее в нужный формат. Но как? Ведь мы пока ничего не знаем ни о формате ClamAV, ни о формате Yara. Об этой проблеме уже позаботились до нас, подготовив небольшой скриптик, конвертирующий базу вирусных сигнатур ClamAV в набор правил YARA. Сценарий называется clamav_to_ yara.py и написан Мэтью Ричардом (bit.ly/ij5HVs). Скачиваем скрипт и конвертируем базы:
В результате в файле clamav.yara мы получим сигнатурную базу, которая сразу будет готова к использованию. Попробуем теперь комбинацию YARA и базы от ClamAV в действии. Сканирование папки с использованием сигнатуры выполняется одной единственной командой:
Игра по правилам
Итак, правило — это основной механизм программы, позволяющий отнести заданный файл к какой-либо категории. Правила описываются в отдельном файле (или файлах) и по своему виду очень напоминают конструкцию struct<> из языка С/С++.
В принципе, ничего сложного в написании правил нет. В рамках этой статьи я коснулся лишь основных моментов, а детали ты найдешь в мануле. Пока же десять самых важных пунктов:
1. Каждое правило начинается с ключевого слова rule, после которого идет идентификатор правила. Идентификаторы могут иметь такие же имена, как и переменные в C/С++, то есть состоять из букв и цифр, причем первый символ не может быть цифрой. Максимальная длина имени идентификатора — 128 символов.
2. Обычно правила состоят из двух секций: секция определений (strings) и секция условия (condition). В секции strings задаются данные, на основе которых в секции condition будет приниматься решение, удовлетворяет ли заданный файл определенным условиям.
$my_text_string = «text here»
$my_hex_string =
4.В секции condition содержится вся логика правила. Эта секция должна содержать логическое выражение, определяющее, в каком случае файл или процесс удовлетворяет правилу. Обычно в этой секции идет обращение к ранее объявленным строкам. А идентификатор строки рассматривается в качестве логической переменной, которая возвращает true, если строка была найдена в файле или памяти процесса, и false в противном случае. Вышеуказанное правило определяет, что файлы и процессы, содержащие строку win.exe и один из двух URL, должны быть отнесены к категории BadBoy (по имени правила).
5. Шестнадцатеричные строки позволяют использовать три конструкции, которые делают их более гибкими: подстановки (wildcards), диапазоны (jumps) и альтернативный выбор (alternatives). Подстановки — это места в строке, которые неизвестны, и на их месте может быть любое значение. Обозначаются они символом «?»:
Такой подход очень удобен при задании строк, длина которых известна, а содержимое может меняться. Если же часть строки может быть разной длины, удобно использовать диапазоны:
Данная запись означает, что в средине строки может быть от 4 до 6 различных байт. Можно реализовать также и альтернативный выбор:
Это означает, что на месте третьего байта может быть 62 В4 или 56, такой записи соответствуют строки F42362B445 или F4235645.
6. Чтобы проверить, что заданная строка находится по определенному смещению в файле или адресном пространстве процесса, используется оператор at:
Если строка может находиться внутри определенного диапазона адресов, используется оператор in:
Иногда возникают ситуации, когда необходимо указать, что файл должен содержать определенное число из заданного набора. Делается это с помощью оператора of:
rule OfExample1
<
strings:
$foo1 = «dummy1»
$foo2 = «dummy2»
$foo3 = «dummy3»
condition:
2 of ($foo1,$foo2,$foo3)
>
Приведенное правило требует, чтобы файл содержал любые две строки из множества ($foo1,$foo2,$foo3). Вместо указания конкретного числа строк в файле можно использовать переменные any (хотя бы одна строка из заданного множества) и all (все строки из заданного множества).
7. Ну и последняя интересная возможность, которую надо рассмотреть — применение одного условия ко многим строкам. Эта возможность очень похожа на оператор of, только более мощная — это оператор for..of:
for expression of string_set : ( boolean_expression )
Данную запись надо читать так: из строк, заданных в string_ set, по крайней мере expression штук должно удовлетворять условию boolean_expression. Или, другими словами: выражение boolean_expression вычисляется для каждой строки из string_set, и expression из них должны возвратить значение True. Далее мы рассмотрим эту конструкцию на конкретном примере.
Делаем PEiD
Итак, когда с правилами все стало более менее ясно, можно приступать к реализации в нашем проекте детектора упаковщиков и крипторов. В качестве исходного материала на первых порах я позаимствовал сигнатуры известных упаковщиков у все того же PEiD. В папке plugins находится файл userdb.txt, который и содержит то, что нам нужно. В моей базе оказалось 1850 сигнатур.
Немало, так что для того, чтобы полностью импортировать их, советую написать какой-нибудь скриптик. Формат этой базы прост — используется обычный текстовый файл, в котором хранятся записи вида:
Первая строка задает имя упаковщика, которое будет отображаться в PEiD, для нас же это будет идентификатор правила. Вторая — непосредственно сама сигнатура. Третья — флаг ep_only, указывающий, искать ли данную строку только по адресу точки входа, или же по всему файлу.
Ну что, попробуем создать правило, скажем, для ASPack? Как оказалось, в этом нет ничего сложного. Сначала создадим файл для хранения правил и назовем его, например, packers.yara. Затем ищем в базе PEiD все сигнатуры, в названии которых фигурирует ASPack, и переносим их в правило:
У всех найденных записей флаг ep_only установлен в true, то есть эти строки должны располагаться по адресу точки входа. Поэтому мы пишем следующее условие: «for any of them : ($ at entrypoint)».
Чтобы проверить работоспособность полученной системы, достаточно выполнить в консоли команду:
Скормив туда пару приложений, упакованных ASPack’ом, я убедился, что все работает!
Готовый прототип
YARA оказался на редкость понятным и прозрачным инструментом. Мне не составило большого труда написать для него вебадминку и наладить работу в качестве веб-сервиса. Немного креатива, и сухие результаты анализатора уже раскрашиваются разными цветами, обозначая степень опасности найденного зловреда. Небольшое обновление базы, и для многих из крипторов доступно краткое описание, а иногда даже и инструкция по распаковке. Прототип создан и работает отменно, а начальство пляшет от восторга!
Разработка кроссплатформенного антивирусного сканера
Обнаружение вирусов и создание сигнатур сканером. Выделение последовательности байт соответствующую данному вирусу. Разбор структуры PE файла. Поиск вхождений сигнатуры в сегменты данных. Тестирование антивирусного сканера, пользовательский интерфейс.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 23.02.2016 |
Размер файла | 63,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru//
Алматинская академия экономики и статистики, г. Алматы.
Разработка кроссплатформенного антивирусного сканера
Байсалбаева К.Н., доцент
Мы реализуем антивирусный сканер, который будет значительно упрощен по сравнению с любыми современными вариантами сканера, но в нем присутствуют все необходимые детали для нормального функционирования. В сканере реализованы: база данных, с возможностью добавления новых сигнатур в базу; сканер, который реализует поиск вредоносных сигнатур в PE файлах. Для реализации сканера был выбран язык программирования Java в связи с достаточным объемом проекта и постепенным развитием проекта. Основная сложность данной задачи заключается в написании быстрого сканера, который позволил бы сканировать достаточные объемы информации. Решение данной задачи производится с помощью поиска вирусов только в исполняемых файлах и использования быстрого алгоритма сравнения сигнатуры.
Обнаружение вирусов и создание сигнатур
Антивирусный сканер в данной статье построен на методе обнаружения сигнатур. Это такой метод, при котором антивирусная программа просматривает каждый файл, сравнивает его с уже имеющейся базой данных и при совпадении участков кода делает одно из 3 действий:
перемещает в карантин;
лечит файл, удаляя из него код вируса.
Для достижения результатов при использовании данного метода необходимо своевременно обновлять базу сигнатур, чтобы избежать заражения своего компьютера. Данный процесс осложняется тем, что придуманы полиморфные вирусы, которые изменяют свою сигнатуру, не давая, таким образом, сканеру обнаружить себя. Сигнатуры создаются в процессе длительного анализа несколько копий одного вируса, при этом они должны содержать уникальные строки вредоносной программы, чтобы максимально уменьшить число ложных срабатываний [1].
Этот конструктор служит для работы с базой данных и загрузки из нее сигнатур вирусов. Второй конструктор служит для загрузки сегментов кода, которые в дальнейшем программа собирается проверять. Так как класс приспособлен для хранения последовательности байт, которые были взяты либо из базы, либо из файла, то в нем существует дополнительные методы, которые помогают для работы с ним. Публичными являются три метода, получения последовательности байт, поиск сегмента кода в сегменте и переопределенный метод класса ObjecttoString(), который возвращает название сегмента кода и его длину. В классе существует дополнительный закрытый метод makeSegment(), который используется для того, чтобы прочитать последовательность байт из файла, при каждом вызове осуществляется автоматическая проверка готовности класса к работе, и если он не готов к работе, тогда вызывается этот метод.
Для проверки работоспособности программы решено было создать уникальную сигнатуру. За вирусный код был условно взят следующий код на Delphi:
Для выделения последовательности байт соответствующую данному вирусу, было создано два exe файла, которые были «заражены» данными командами, также было создан еще один файл, который не содержал вирусный код. Для создания последовательности байт, соответствующей данному вирусу, была написана программа, которая находила все общие подпоследовательности, т.о. чтобы их множество не пересекалось, и подпоследовательности, которые можно было бы объединить в одну подпоследовательность были объединены, а из этого множества с помощью третьего файла были удалены подпоследовательности, которые присутствовали в нем. Таким образом была получена сигнатура вируса, состоящую из двух команд: вывести сообщение на экран и заснуть [2].
Антивирусные программы, выявляющие известные компьютерные вирусы называют сканерами. Сканеры разделяют на транзитные, т.е. запускаемые периодически и резидентные, которые постоянно находятся в оперативной памяти. В данном сканере не были использованы дополнительные методы, ограничившись лишь проверкой последовательности байт. Конечно, такой алгоритм не может претендовать на высокую скорость работы, но является достаточно надежным, и при сканировании относительно небольших объемов данных имеет право на существование. Сканер, реализованный в данной работе, является транзитным, потому что основное внимание уделяется поиску вредоносных программ, а не способу работы сканера. Для реализации обхода файлов, управление загрузки библиотеки, и других управляющих действий был создан класс ScanSystem, который состоит только из статичных методов служащих для управления программой. Основным является метод scan, который осуществляет основную работу сканера. Этот метод принимает на вход файл или папку,а дальше запускается метод run1(), который реализует обход файлов для подсчета общего количества файлов, которые нужно будет просканировать для оценки времени работы сканера. Т.е. если в метод передана папка, то он заходит в нее и рекурсивно запускается от всех ее элементов, если же это файл, то он просто запускает процедуру сканирования файла scanned(). Эта процедура считает количество выполненных процентов, а затем проверяет файл, занося в статистику информацию о нем. Вся статистика по сканированию хранится в статических переменных, открытых для публичного доступа. Из сканера можно узнать, сколько файлов он просканировал, сколько файлов из них не удалось открыть, сколько являлось файлами PE, сколько заражены.
public static void run(File file) <
String[] temp = file.list();
for (String s : temp) <
В качестве хранилища базы данных было решено сделать обычный текстовый файл. Данное решение было принято в связи с отсутствием большого количества сигнатур и простоты взаимодействия. В качестве инструмента добавления новых сигнатур вирусов можно использовать непосредственно сам блокнот. Формат базы данных:
количество вирусных сигнатур;
Разбор структуры PE файла
Весь PE файл можно разбить наследующие части: DOS заголовок, DSTUB- заглушка, PEHeader, Optional Header, Data Directory, Section Table.Т.к. наша цель не считать всю информацию о PE файле, зачастую избыточную, а как можно быстрее найти все сегменты кода, то вся задача сводиться к нахождению нужных смещений, но первым делом необходимо проверить является ли файл, который мы сейчас рассматриваем PE файлом [3]. Для проверки файла, сначала проверяем, является ли бинарный файл DOS совместимым. Для этого проверяю первых два байта на равенство сигнатуре MZ, затем выполняется переход по адресу 0х3с, в котором, если это PE файл должно содержаться смещение до PEHeader. Теперь смещаюсь по этому значению и рассматриваю первых два байта на равенство сигнатуре PE. Теперь эти два байта равны этой сигнатуре, то перед нами PE файл. Зная структуру PE файла, смещаюсь на нужное количество байт и считываю количество секций, теперь перемещаюсь на начало таблицы секций, где содержится вся информация по секциям, из этой информации нас интересует только название секции, ее размер, смещение до ее начала и ее атрибуты. Если секция содержит атрибут секции кода, то параметры этой секции сохраняются [4].
static public long convert(long signedvariable)<
//функция чтения WORD(unsignedshort)
public long readWord() throws IOException <
byte[] mas = new byte[2];
//функция чтения DWORD(unsignedint)
public long readDWord() throws IOException <
byte[] mas = new byte[4];
//функция используемая для работы двух верхних функций
private static long read(byte mas[],int numberOfByte) <
//функция чтения 1байтового Char из бинарного файла
public char readChar() throws IOException <
Поиск вхождений сигнатуры в сегменты данных
Так как при работе антивируса достаточно важна скорость проверки, то для поиска вхождений подпоследовательности в последовательность байт неразумно было использовать обычный поиск за квадратную асимптотику, поэтому для этой цели был использован алгоритм Кнута-Морисса-Пратта [1].
Написание пользовательского интерфейса
Для реализации интерфейса к антивирусному сканеру было решено придерживаться концепции минимизации пользовательского интерфейса. Так что весь интерфейс состоит из фрейма, с размещенными на нем тремя кнопками, двумя полями для ввода и отображения текста, баром и меткой. В Java присутствует концепция создания интерфейсов, которые сами изменяют свой размер на основе некоторых правил
кроссплатформенный антивирусный сканер сигнатура
Тестирование антивирусного сканера
Для тестирования данной программы следует проверить качество обнаружения сигнатур вируса и скорость его работы, также при тестировании могут выявиться некоторые ошибки, которые не были устранены при разработке антивирусного сканера. Для тестирования качества обнаружения создадим десять различных файлов, которые будут содержать код вируса, и десять таких же файлов без вируса. Для этого будем располагать сигнатуру следующими образами. Возьмем нормальный код, и поместим сигнатуру в write() в начало файла, а sleep() в середину, затем поместим sleep() в центр и в начало, таким образом, возьмем все возможные перестановки. При всех возможных перестановках выяснилось, что объект все равно определяется как вирус, но если в программе не присутствует либо sleep либо write, то данная программа уже не определяется как вирус, что доказывает корректную работу антивируса и правильность сделанной накануне сигнатуры. Теперь следует провести тест на скорость, для этого папку в которой содержатся файлы, которые были тестированы по отдельности, просканируем полностью. Время сканирования вышло около 1 секунды, увеличивая количество файлов. Увеличивая количество файлов до 780,из них исполняемых до 88, время работы антивируса осталось неизменным. Увеличив размер папки до 5 гигабайт, количество файлов до 15 тысяч, а количество исполняемых до 1500 тысячи файлов антивирус проработал 10 секунд, найдя 561 вирус. Данные тестирования показывают, что при небольших объемах данных или при отсутствии ограничений по времени антивирусный сканер выполнил свою задачу. Понятно, что в базе данных должно быть больше чем одна сигнатура, что может значительно уменьшить скорость работы сканера, потому что сейчас основное время тратиться не на анализ сигнатуры, а на разбор PE файла. Для устранения данных недостатков планируется введение дополнительных параметров в сигнатуру.
Реализовав простой сканнер и проверив его на тестовых файлах, стоит отметить, не смотря, на использование алгоритма Кнута-Морисса-Пратта достаточно медленное время работы. Для увеличения скорости работы сканнера в дальнейшем планируется введение дополнительных параметров для определения сигнатур, таких как хеш-суммы, сrc- суммы возможные смещения и т.п. Программа, несмотря на возможность проверки PE файлов, не умеет работать с архивами и сжатыми данными. Планируется ввести распаковку стандартных архивов, таких как zip и rar. Кроме PE файлов заражению могут подвергаться и другие файлы, работа которых связанна в основном со скриптовыми языками. Возможность нахождения скрипт вирусов также важна для дальнейшего развития данной тематики. Но на данный момент реализован антивирусный сканнер, который выполнил задачи, которые стояли перед ним.
Размещено на Allbest.ru
Подобные документы
Основы антивирусной защиты информации. Проверка компьютера на наличие вирусов, шпионских программ с помощью антивирусного сканера Kaspersky AntiVirus. Портативные антивирусные программы для внешних носителей информации (USB flash и внешние жесткие диски).
курсовая работа [187,2 K], добавлен 26.10.2013
Основна технічна характеристика сканера – розширення. Два типи розширення: інтерполіроване та механічне. Швидкість сканування, щільність зображення та глибина кольору. Порти для підключення сканера. Робота зі сканером. Рекомендовані параметри сканування.
контрольная работа [22,3 K], добавлен 21.02.2009
Телефакс как устройство факсимильной передачи изображения по телефонной сети. Назначение планшетного сканера. Использование листопротяжных сканеров. Принцип работы барабанного сканера. Применение сканера штрих-кода. Оптический сканер отпечатка пальцев.
реферат [11,6 K], добавлен 19.01.2010
Обнаружение компьютерных вирусов и вредоносных программ как основное назначение антивирусной программы (антивируса). Целевые платформы антивирусного программного обеспечения. Классификация антивирусных продуктов по основным параметрам и критериям.
презентация [3,3 M], добавлен 22.09.2011
реферат [28,7 K], добавлен 21.01.2010