Как написать свой антивирус

Обновлено: 06.07.2024

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

Слово автора

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

Сигнатурный анализ

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

Тут есть различные методики. Как вариант — использовать сигнатуру, составленную из N байт вредоносного объекта. При этом можно сделать не тупое сравнение, а сравнение по некоторой маске (типа искать байты EB ?? ?? CD 13). Или задавать дополнительные условия вроде «такие-то байты должны находиться у точки входа в программу» и так далее. Сигнатура именно малвари — это частность.

Что такое YARA?

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

Сами разработчики позиционируют его как инструмент для помощи исследователям малвари в идентификации и классификации вредоносных семплов. Исследователь может создать описания для разного типа зловредов, используя текстовые или бинарные паттерны, в которых описываются формализованные признаки малвари. Таким образом получаются сигнатуры. По сути, каждое описание состоит из набора строк и некоторого логического выражения, на основе которого определяется логика срабатывания анализатора.

Если для исследуемого файла выполняются условия одного из правил, он определяется соответствующим образом (к примеру, червь такой-то). Простой пример правила, чтобы понимать, о чем идет речь:

rule silent_banker : banker
meta:
description = "This is just an example"
thread_level = 3
in_the_wild = true
strings:
$a =
$b =
$c = "UVODFRYSIHLNWPEJXQZAKCBGMT"
condition:
$a or $b or $c
>

В этом правиле мы говорим YARA, что любой файл, который содержит хотя бы одну из строк-семплов, описанных в переменных $a, $b, $c, должен классифицироваться как троян silent_banker. И это очень простое правило. На деле рулесы могут быть гораздо сложнее (мы об этом поговорим ниже).
Об авторитете проекта YARA говорит уже даже список проектов, которые его используют, а это:

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

Немного покопавшись, я довольно быстро разобрался, как писать для YARA правила, а также как прикрутить к нему сигнатуры вирусов от бесплатного авера и упаковщиков от PEiD. Но начнем мы с установки.

Установка

Как я уже сказал, проект написан на Python’е, поэтому легко может быть установлен и на Linux, и на Windows, и на Mac. На первых порах можно просто взять бинарник. Если вызвать приложение в консоли, то получим правила для запуска.

$ yara
usage: yara [OPTION]. [RULEFILE]. FILE | PID

То есть формат вызова программы следующий: сначала идет имя программы, затем список опций, после чего указывается файл с правилами, а в самом конце — имя исследуемого файла (или каталога, содержащего файлы), либо идентификатор процесса. Сейчас бы по-хорошему объяснить, как эти самые правила составляются, но не хочу сразу грузить тебя сухой теорией. Поэтому мы поступим по-другому и позаимствуем чужие сигнатуры, чтобы YARA мог выполнять одну из поставленных нами задач — полноценное определение вирусов по сигнатурам.

Свой антивирус

Первый содержит основную базу сигнатур, второй — самую полную на данный момент базу с различными дополнениями. Для поставленной цели вполне хватит daily.cvd, в котором собрано более 100 000 слепков малвари. Однако база ClamAV — это не база YARA, так что нам необходимо преобразовать ее в нужный формат. Но как? Ведь мы пока ничего не знаем ни о формате ClamAV, ни о формате Yara. Об этой проблеме уже позаботились до нас, подготовив небольшой скриптик, конвертирующий базу вирусных сигнатур ClamAV в набор правил YARA. Сценарий называется clamav_to_ yara.py и написан Мэтью Ричардом (bit.ly/ij5HVs). Скачиваем скрипт и конвертируем базы:

$ python clamav_to_yara.py -f daily.cvd -o clamav.yara

В результате в файле clamav.yara мы получим сигнатурную базу, которая сразу будет готова к использованию. Попробуем теперь комбинацию YARA и базы от ClamAV в действии. Сканирование папки с использованием сигнатуры выполняется одной единственной командой:

$ yara -r clamav.yara /pentest/msf3/data

Опция -r указывает, что сканирование необходимо проводить рекурсивно по всем подпапкам текущей папки. Если в папке /pentest/msf3/data были какие-то тела вирусов (по крайней мере тех, что есть в базе ClamAV), то YARA немедленно об этом сообщит. В принципе, это уже готовый сигнатурный сканер. Для большего удобства я написал простой скрипт, который проверял обновления базы у ClamAV, закачивал новые сигнатуры и преобразовывал их в формат YARA. Но это уже детали. Одна часть задачи выполнена, теперь можно приступать к составлению правил для определения упаковщиков/крипторов. Но для этого пришлось немного с ними разобраться.

Игра по правилам

Итак, правило — это основной механизм программы, позволяющий отнести заданный файл к какой-либо категории. Правила описываются в отдельном файле (или файлах) и по своему виду очень напоминают конструкцию struct<> из языка С/С++.

rule BadBoy
strings:
$a = "win.exe"
$b = "http://foo.com/badfi le1.exe"
$c = "http://bar.com/badfi le2.exe"
condition:
$a and ($b or $c)
>

В принципе, ничего сложного в написании правил нет. В рамках этой статьи я коснулся лишь основных моментов, а детали ты найдешь в мануле. Пока же десять самых важных пунктов:

1. Каждое правило начинается с ключевого слова rule, после которого идет идентификатор правила. Идентификаторы могут иметь такие же имена, как и переменные в C/С++, то есть состоять из букв и цифр, причем первый символ не может быть цифрой. Максимальная длина имени идентификатора — 128 символов.

2. Обычно правила состоят из двух секций: секция определений (strings) и секция условия (condition). В секции strings задаются данные, на основе которых в секции condition будет приниматься решение, удовлетворяет ли заданный файл определенным условиям.

3.Каждая строка в разделе strings имеет свой идентификатор, который начинается со знака $ — в общем, как объявление переменной в php. YARA поддерживает обычные строки, заключенные в двойные кавычки (« ») и шестнадцатеричные строки, заключенные в фигурные скобки (<>), а также регулярные выражения:

$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:

$a at 100 and $b at 200

Если строка может находиться внутри определенного диапазона адресов, используется оператор in:

$a in (0..100) and $b in (100..fi lesize)

Иногда возникают ситуации, когда необходимо указать, что файл должен содержать определенное число из заданного набора. Делается это с помощью оператора 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 сигнатур.

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

[Name of the Packer v1.0]
signature = 50 E8 ?? ?? ?? ?? 58 25 ?? F0 FF FF 8B C8 83 C1 60 51 83 C0 40 83 EA 06 52 FF 20 9D C3
ep_only = true

Первая строка задает имя упаковщика, которое будет отображаться в PEiD, для нас же это будет идентификатор правила. Вторая — непосредственно сама сигнатура. Третья — флаг ep_only, указывающий, искать ли данную строку только по адресу точки входа, или же по всему файлу.

Ну что, попробуем создать правило, скажем, для ASPack? Как оказалось, в этом нет ничего сложного. Сначала создадим файл для хранения правил и назовем его, например, packers.yara. Затем ищем в базе PEiD все сигнатуры, в названии которых фигурирует ASPack, и переносим их в правило:

У всех найденных записей флаг ep_only установлен в true, то есть эти строки должны располагаться по адресу точки входа. Поэтому мы пишем следующее условие: «for any of them : ($ at entrypoint)».

Таким образом, наличие хоть одной из заданных строк по адресу точки входа будет означать, что файл упакован ASPack’ом. Обрати также внимание, что в данном правиле все строки заданы просто с помощью знака $, без идентификатора. Это возможно, так как в condition-секции мы не обращаемся к каким-то конкретным из них, а используем весь набор.

Чтобы проверить работоспособность полученной системы, достаточно выполнить в консоли команду:

$ yara -r packers.yara somefi le.exe

Скормив туда пару приложений, упакованных ASPack’ом, я убедился, что все работает!

Готовый прототип

YARA оказался на редкость понятным и прозрачным инструментом. Мне не составило большого труда написать для него вебадминку и наладить работу в качестве веб-сервиса. Немного креатива, и сухие результаты анализатора уже раскрашиваются разными цветами, обозначая степень опасности найденного зловреда. Небольшое обновление базы, и для многих из крипторов доступно краткое описание, а иногда даже и инструкция по распаковке. Прототип создан и работает отменно, а начальство пляшет от восторга!

  • В первой части мы разберем Yara проект. Разберем как установить инструмент, как получить yara-правила, найдем угрозы.
  • Во второй части научимся сами писать yara-правила.
  • В третьей части напишем антивирус.

Что такое YARA?
Yara - это инструмент, который помогает нам идентифицировать и классифицировать образцы вредоносных программ с помощью правил. Мы можем использовать Yara для классификации файлов или запуска процессов, чтобы определить, к какому семейству относятся вредоносные программы.

Также YARA является мультиплатформенным инструментом, работает на всех популярных ОС и может использоваться через интерфейс командной строки или из ваших собственных скриптов Python с расширением yara-python. Также можно использовать GUI(Рассмотрим далее).

Установка.
Чтобы установить Yara, сначала нужно выполнить следующую команду:
apt install yara

1548226897972.jpg

После этого мы можем использовать Yara, выполнив команду yara, которая по умолчанию отобразит справку по использованию, как показано ниже:

Мы видим, что для запуска Yara нам нужно предоставить набор правил (RULEFILE), которые мы хотим применить, и путь к файлу (FILE) или pid (PID) процесса, который мы хотим сканировать.

Подготовка правил для тестов.
Правила ClamAV:

Теперь нам нужно получить файл правил, чтобы использовать Yara. В следующей части мы сами напишем файл с правилами, но сейчас будем использовать правила ClamAV. Единственная проблема с правилами ClamAV состоит в том, что мы не можем использовать их непосредственно с Yara, потому что Yara имеет свой собственный способ их описания(свой синтаксис).

Именно здесь вступает в игру скрипт clamav_to_yara.py .

Для этого нам нужно клонировать SVN-репозиторий, который включает скрипт python clamav_to_yara.py .
Ссылка на репозиторий mattulm/volgui

1548230722465.jpg

1548230619774.jpg

1548230935363.jpg

1548230985274.jpg

  • python clamav_to_yara.py -f main.ndb -o test.yara
  • yara -r test.yara /myfolder_for_test

Правила PEiD можно скачать с сайта: Panda Security Mediacenter - All the info about your cybersecurity.
Чтобы преобразовать правила PEiD в правила Yara, мы можем просто использовать Python скрипт peid_to_yara.py , который также можно загрузить с jvoisin/yara_rules

1548230802973.jpg

Затем мы выполняем преобразование, выполнив следующую команду: python peid_to_yara.py -f userdb.txt -o peid.yara
После завершения команды подписи Yara будут содержаться в выходном файле peid.yara.

Тестовый вирус - EICAR
Теперь нам нужен какой-либо вирус для наших тестов, но если у вас нет желания тестировать реальные вирусы, которые также могут принести вред вашему ПК при тесте, вы можете сами создать тестовый вирус, но он будет совершенно безобидным.

EICAR вирус - это небольшой кусок текста, суть которого заключается в том, что все современные AV его обнаруживают.
Мы будем его также тестировать в “полевых условиях”, например, для проверки нашего AV( Если конечно статья вам зайдет ).

1548233263971.jpg

Но в этой статье мы проверим обнаруживают ли его инструмент Yara.

Теперь давайте сотворим этот “псевдо-вирус”
Для этого создайте файл и вставьте следующий текст: X5O!P%@AP[4\PZX54(P^)7CC)7>$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* .
После этого вам необходимо сохранить файл под любым расширением(exe, com, bat, asm…)

Где взять реальные вирусы.

Если вам тестовый вирус EICAR чем-то не устраивает, то можно воспользоваться базой для скачивания реальных вирусов.
Для этих целей можно воспользоваться сервисом - VX Vault
Среди плюшек можно отметить, что у каждого вируса имеется MD5,SHA-1,SHA-256 хэшы, IP-адресса.(Это нам поможет при написание Yara-правил).

После всего этого мы можем классифицировать примеры вредоносных программ, используя только инструмент Yara, и нам больше не нужно сканировать их с помощью правил ClamAV и PEiD. Это потому что Yara уже содержит правила из ClamAV и PEiD, которые используются в процессе сканирования, что очень удобно так как у нас имеется довольно большая база сигнатур для поиска "зловреда".

Создав свой антивирус, а создавать мы будем используя базу Yara-правил. Мы можем автоматически классифицировать вредоносные программы, правда пока только с помощью правил. Это очень полезно, когда нам быстро необходимо просканировать образец вредоносного ПО определенной категории.
Также думаю я добавлю функционал заливки файла на VirusTotal для точного обнаружения.

Именно на основе Yara правил мы и будем создавать свой сигнатурный AV.

1548231957280.jpg

Демонстрация.
И так теперь проверим и посмотрим как протестировать файл(папку).
Для тестирование папки мы должны выполнить следующую команду: yara -r <Yara-правило> <Сканируемая папка>
В моем случае я тестирую уязвимый дамп памяти:

1548232351504.jpg

Как видно помимо различной информации вредоносный дамп был успешно обнаружен как Empire ReflectivePick x64.

Еще пару сканирований:

1548232573490.jpg

Чтобы убрать лишнюю информацию нужно использовать атрибут -w

1548232656913.jpg

Теперь рассмотрим как ищет "зловреда" Yara GUI версия для Windows.

1548234414646.jpg

1548234580256.jpg

1548667087427.jpg

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

Честно сказать, данный продукт может обнаруживать только известные вредоносные программы. Но если мы напишем нашу собственный вирус или закодируем его с помощью нашего собственного кодировщика, он, вероятно, не будет обнаружен, поскольку в Yara не загружены соответствующие сигнатуры. Этот пункт касается и нашего будущего антивируса.

Тем не менее, использование Yara для обнаружения вредоносной активности в файлах по-прежнему выгодно, поскольку большинство вредоносных программ в Интернете представляют собой стандартные вредоносные файлы и не содержат дополнительной маскировки, поэтому большинство вредоносных файлов можно обнаружить.

Создание собственного антивируса

Создание собственного антивируса

Тема: Как создать собственный сканер-антивирус ЦЕЛЬ: Изучить алгоритм работы существующих антивирусов и создать собственный антивирус Задача: Создать программу, позволяющую проверять систему на наличие вредоносных программ Продукт проекта: Сканер-антивирус Гипотеза: Можно ли создать антивирус и встроить его в браузер Методы решения: Сравнения работы антивирусов и их исследования, тестирование и отладка программы Актуальность: Антивирусы – актуальны в наше время. Они защищают компьютеры от вредоносных программ. Самые популярные антивирусы разрабатываются многими кампаниями, такими как: KasperskyLab, AVG, DrWEB, Avast!, Norton, Panda и т. д.

История антивирусов История вирусов и антивирусов началась приблизительно в 2000 году. Появление первых вирусов привело к тому, что стало необходимостью создание антивирусной программы. Самая первая такая разработка принадлежала Российской компании «Диалог-Наука». Ее антивирус выпускался на двух дискетах. Обновления выходили на таком же носителе каждую неделю. Удивительным фактом было то, что при обнаружении какого-либо вируса удаление не происходило. Для этого требовалось отослать результаты в лабораторию Москвы. Здесь уже разрабатывалось лекарство. Именно эта организация в последствие организовала известную во всем мире Лабораторию Касперского. Одновременно организация «Диалог-Наука» работала над созданием антивируса Dr.Web.

Антивирус-сканер Scan+ На сегодняшний день существует множество антивирусов, но в каждом есть свои плюсы и минусы. Создание антивируса включает в себя следующие подзадачи и процессы: 1. Создание «движка» антивируса 2. Разработка графического интерфейса 3. Создание базы вирусов Существует только два способа реализации алгоритма проверки кода вируса. Первый способ – это перебор строк кода вируса, второй способ – перебор букв кода вируса. И первый и второй способы помогут создать «движок» антивируса. Но второй способ очень объёмный в написании кода и не подходит для создания базы вирусов.

Алгоритм проверки файлов Происходит перебор кода вируса

WinLocker Trojan.Winlock (Винлокер) — семейство вредоносных программ, блокирующих или затрудняющих работу с операционной системой, и требующих перечисление денег злоумышленникам за восстановление работоспособности компьютера, частный случай Ransomware (программ-вымогателей). Впервые появились в конце 2007 года. Широкое распространение вирусы-вымогатели получили зимой 2009—2010 годов, по некоторым данным оказались заражены миллионы компьютеров, преимущественно среди пользователей русскоязычного Интернета. Второй всплеск активности такого вредоносного ПО пришёлся на май 2010 года. Часто эти вирусы удаляют загрузочный файл hal.dll, который позволяет компьютеру произвести загрузку системы Windows. Winlocker невозможно убрать стандартными средствами Windows(перезагрузка ПК, запуск безопасного режима и т.д.) Winlocker удаляется только сторонними программами(LiveCD, Dr.Web, AVZ tool). Для удаления Winlocker’а я разработал специальный модуль к своему антивирусу – AWT.

Модуль AWT Модуль AWT (AntiWinlockTool) поможет, если компьютер «заразился» вредоносной программой WinLocker. AWT – консольное приложение, содержащее набор команд, которые удаляют Winlocker и восстанавливают систему путём создания нового файла hal.dll Для полного доступа к процессам использовалась библиотека Assembler. AWT запускается сам, если окно Winlocker’а запущено. Затем происходит удаление Winlocker’a.

Команда check(проверка) Команда check проверяет наличие файла hal.dll без использования процессора. Проверка происходит через ОЗУ. Если файла нет, то AWT восстановит систему.

Команда restore(восстановить) Команда restore восстановит систему в любом случае, независимо от того, есть ли файл или нет.

Тест антивируса Для теста антивируса можно воспользоваться сайтом VirusTotal. VirusTotal – это сайт для сканирования файлов. На сайте существует возможность зарегистрировать свой продукт на срок 10 дней.

Результаты сканирования Сканирование показало, что собственный антивирус Scan+ распознал загруженный файл как Haxdoor.Fam

Сравнительная карта антивирусов Антивирусы Ситуация AVG Kaspersky Lab Avast! Norton Dr.Web Scan+ Вирус на носителе Прямое удаление угрозы Перемещение в карантин Перемещение в карантин Сканирование носителя и удаление угрозы Сканирование носителя и удаление по решению пользователя Прямое удаление угрозы Вирус на винчестере или SSD Прямое удаление угрозы Перемещение в карантин и удаление Удаление угрозы по решению пользователя Сканирование и удаление угрозы Сканирование и удаление по решению пользователя Прямое удаление угрозы Вредоносный сайт Предупреждение Предупреждение Блокировка сайта Предупреждение Блокировка сайта Блокировка сайта ZIP или RAR архивы Сканирование архива через папку TEMP Сканирование архива напрямую - - Сканирование архива через папку TEMP Сканирование архива через папку TEMP Загрузка угрозы с Интернета Прямое удаление угрозы (дополнение) Перемещение в карантин (дополнение) - - - Прямое удаление угрозы ZIP или RAR архивы с паролем - Сканирование - - Сканирование -

Здравствуйте! Подскажите пожалуйста, что нужно изучить, чтобы научиться писать антивирусные программы, драйвера и тд. Какие языки изучать и на какие разделы высшей математики налегать?

Начни со сравнения строк.


Чтобы писать антивирусы нужно изучать вирусы.

Поздно, антивирусы не нужны уже лет 5 как.

Но если очень хочется — устройся в того же касперского.

Что изучать, чтобы писать антивирусы?

Маркетинг, основы шпионажа и азы пропаганды.

Языки: c (без плюсов, в первую очередь), c++, в меньшей степени assembler. Высшая математика для этого не нужна, но для написания драйверов нужно хорошее знание ядра и программного интерфейса железа, для которого пишутся драйвера. Для написания антивирусов — вирусы, как уже сказали.

А вообще начать программировать лучше с чего-нибудь попроще. Например, с Go! (известен также как golang). Но это без графики (впрочем, для драйверов она и не нужна). А уже потом по ходу дела определиться в специализации, и если желание не пропадёт, перейти к изучению написанного в п. 1.


Подскажите пожалуйста, что нужно изучить, чтобы научиться писать антивирусные программы?

Тебе так или это серьёзно и работа?
Для Linux или какой иной ОС?


А чего видеоигры и компиляторы в список не добавишь? Обобщать, так по полной.


Не трогь его, может он гуй для настройки PAM,ACL, AppArmore, Selinux и прочих систем мандатного контроля напишет.

torvn77 ★★★★★ ( 06.11.20 21:32:33 )
Последнее исправление: torvn77 06.11.20 21:45:08 (всего исправлений: 2)

Ну я кстати и программирую на го, приятный язык

Ну чисто для интереса, как хобби

Ну я кстати и программирую на го

Если уже достаточно хорошо изучил его, а также основные алгоритмы, паттерны и библиотеки (сетевые и пр.), то можно переходить к си без плюсов. Когда почувствуешь себя уверенно и в нём, можно начать изучать структуры и api ядра. Потом можно попробовать создать на си какое-нибудь простенькое устройство. Например, /dev/one, которое всегда выдаёт 1 (аналогично /dev/zero) или что-то ещё, что придёт в голову. Это уже пол пути к написанию полноценных драйверов под linux.

Антивирусы под Linux не очень актуальны. Можно посмотреть исходники clamav. Хотя в мире антивирусов он не больно котируется, зато открытый. Что там нужно в первую очередь изучать? Думаю (но могу ошибаться), если речь об антивирусах в узком смысле слова (т. е. не включая разные мониторы и пр.), то это поиск сигнатур. Для этого нужно хорошо освоить дизассемблер (а перед этим, естественно, ассемблер) и отладчик. Впрочем, отладчик понадобится везде, как и профайлер.

Но вообще драйвер и антивирус — совершенно разные темы. Непонятно, почему ты их собрал в одном вопросе.

Ну и для трудоустройства неплохо ещё овладеть си++, т. к. фирм, где пишут на нём, больше, чем фирм, использующих чистый си. Хотя для системного программирования чистый си лучше, а для прикладного в большинстве случаев не нужен ни си, ни си++.


Ладно, даю краткое пояснение:
То что на линуксе нет антивирусов это всё враки.
Всё на линуксе есть и даже круче чем у Касперского, потому что является органической частью ядра.
Всё отличие от виндовых антивирусов в том, что нет единого центра управления и шильдика "Антивирус".

Это очень сложные и в понимании, и в настройке системы и я них не разбираюсь, могу вот только ещё раз повторить узвестную мне часть страшных слов: Selinux,AppArmore,мандатный контроль доступа, iptables, остальные слова ищи сам, я надеюсь что ты уже понял, что надо искать не "антивирус", а то что реализует тот или иной конкретный функционал.

В принципе, если хочешь, о можешь всё это изучить, сделать единый центр конфигурации и управления и назвать его "Антивирусом".

Ну и про Clamave тебе уже выше написали.


А анон то пошел годный. Чем ближе 21 год, тем надежнее ответы. Ну надо же! Первым постом и в яблочко.

Читайте также: