18 апреля 2012 г.

Пишем свой антивирус.


Пишем свой антивирус.

Опишу немного принцип нашего самого простого антивируса. Антивирус будет основан на сравнении md5 сумм снятых нашим же антивирусом с системных файлов (практически вся папка виндовс с поддиректориями конечно же ). Вот как у меня выглядит реализация смотрите на скрине:




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

Для тех кто еше не знаком с мд5 скажу в кратце что изменения хотя бы одного бита в файле вызовет панику антивируса т.к мд5 измененного файла будет другой. Вот и путем сравнения базы (ранее просканированных файлов) и текущего сканирования мы и будем находить подозрительные файлы. Желательно конечно делать первое сканирование нашу базу антивирусную (список мд5 сумм) после установки свежой ОС.

Как видно на скрине кроме слепка появляется еше размер файла, можно конечно сравнивать одни только размеры файлов но это не так надежно, т.к размер файла может не измениться после заражения, вирус или любая подобная дрянь может использовать свободные участки программы (нулевые блоки 0х00 0х00 и многое другое ) не создавая новый блок, а перезатирая не нужные участки. Это более сложная тема относящаяся к формату PE, но и жутко интересно.

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

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

Ну думаю идею я описал. Дерзайте. Позже возможно выложу код данного антивируса или как я его назвал антивирусный анализатор )))

Комментариев нет:

Отправить комментарий