Исходник C++ desktop antivirus static scanner.

Модератор форума
Участник
Статус
Оффлайн
Регистрация
26 Янв 2020
Сообщения
378
Реакции[?]
157
Поинты[?]
9K
Приветствую, многоуважаемые пользователи yougame, посещающие данный раздел. Предоставляю вашему вниманию собственноручно написанный антивирус на с++. Идейным вдохновителем послужил opensource пример движка для обнаружения угроз - yara. Примечателен он тем, что его база данных состоит из своеобразных "правил", задающихся при помощи собственного "языка". Я решил повторить наработки этого проекта, воплотив его уже в полноценное приложение для сканирования системы.
Если вас заинтересовало развитие данного проекта, пишите мне по всем вопросам в указанные в профиле контакты. Буду рад сотрудничеству;)
Используемые библиотеки и особенности:
gui - ImGui
rule parser - flex / bison.
multi-thread scanning system with uniform distribution of tasks across cores.

GITHUB:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
EFI_COMPROMISED_DATA
лучший в мире
Статус
Оффлайн
Регистрация
26 Янв 2018
Сообщения
920
Реакции[?]
1,632
Поинты[?]
85K
без негатива, конечно, но

слишком громко сказано

воплотив его уже в полноценное приложение для сканирования системы
зачем? уже реализовано сто тысяч раз, к тому же значительно лучше, чем у тебя
https://github.com/Neo23x0/Loki как пример
 
Модератор форума
Участник
Статус
Оффлайн
Регистрация
26 Янв 2020
Сообщения
378
Реакции[?]
157
Поинты[?]
9K
без негатива, конечно, но


слишком громко сказано


зачем? уже реализовано сто тысяч раз, к тому же значительно лучше, чем у тебя
Пожалуйста, авторизуйтесь для просмотра ссылки.
как пример
решил попрактиковаться в написании подобных приложений) В любом случае, как pet проект - имеет место быть
 
feel irl
Участник
Статус
Оффлайн
Регистрация
21 Дек 2018
Сообщения
677
Реакции[?]
294
Поинты[?]
16K
Приветствую, многоуважаемые пользователи yougame, посещающие данный раздел. Предоставляю вашему вниманию собственноручно написанный антивирус на с++. Идейным вдохновителем послужил opensource пример движка для обнаружения угроз - yara. Примечателен он тем, что его база данных состоит из своеобразных "правил", задающихся при помощи собственного "языка". Я решил повторить наработки этого проекта, воплотив его уже в полноценное приложение для сканирования системы.
Если вас заинтересовало развитие данного проекта, пишите мне по всем вопросам в указанные в профиле контакты. Буду рад сотрудничеству;)
Используемые библиотеки и особенности:
gui - ImGui
rule parser - flex / bison.
multi-thread scanning system with uniform distribution of tasks across cores.

GITHUB:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Мне хочется у тебя спросить. Вот есть файл
Пожалуйста, авторизуйтесь для просмотра ссылки.
.
Там у тебя написаны такие строки
C++:
static std::mutex g_lock;

#define MUTEX_LOCK g_lock.lock()
#define MUTEX_UNLOCK g_lock.unlock()
А далее мы встречаем такой код
C++:
if ( is_executable( path ) )
    {
        MUTEX_LOCK;
        ++g_file_scanner->target_ammount;
        g_file_scanner->targets_for_scan.emplace_back( path );
        MUTEX_UNLOCK;
    }
C++:
    for ( auto& rule : Melhior::g_database->m_rules )
    {
        if ( catch_target( file, file_size, rule ) )
        {
            //fuck off
            UnmapViewOfFile( file );
            CloseHandle( hMap );
            CloseHandle( h_file );
            MUTEX_LOCK;
            --g_file_scanner->target_ammount;
            MUTEX_UNLOCK;

            std::filesystem::path p( path_to_target );
            MUTEX_LOCK;
            g_quarantine->handle_infected( p.filename( ).string( ), path_to_target, rule.name( ) );
            ++g_file_scanner->valid_targets;
            MUTEX_UNLOCK;
            break;
        }
    }
Я не очень хотел бы разбираться, как именно оно работает и правда ли просто очень везёт, но...
Насколько я понимаю, то ты не ожидаешь того, что в какой-то момент кто-то случайно два раза залокает один и тот-же мьютекс... Я бы использовал здесь юник лок или лок гвард
ну или просто wait-free, вместо всех мьютексов, ибо кому нужны блокировки вообще... хотя в самом деле, вероятно, здесь они необходимы
А что ты думаешь насчёт этого? Прав ли я?
 
Модератор форума
Участник
Статус
Оффлайн
Регистрация
26 Янв 2020
Сообщения
378
Реакции[?]
157
Поинты[?]
9K
Мне хочется у тебя спросить. Вот есть файл
Пожалуйста, авторизуйтесь для просмотра ссылки.
.
Там у тебя написаны такие строки
C++:
static std::mutex g_lock;

#define MUTEX_LOCK g_lock.lock()
#define MUTEX_UNLOCK g_lock.unlock()
А далее мы встречаем такой код
C++:
if ( is_executable( path ) )
    {
        MUTEX_LOCK;
        ++g_file_scanner->target_ammount;
        g_file_scanner->targets_for_scan.emplace_back( path );
        MUTEX_UNLOCK;
    }
C++:
    for ( auto& rule : Melhior::g_database->m_rules )
    {
        if ( catch_target( file, file_size, rule ) )
        {
            //fuck off
            UnmapViewOfFile( file );
            CloseHandle( hMap );
            CloseHandle( h_file );
            MUTEX_LOCK;
            --g_file_scanner->target_ammount;
            MUTEX_UNLOCK;

            std::filesystem::path p( path_to_target );
            MUTEX_LOCK;
            g_quarantine->handle_infected( p.filename( ).string( ), path_to_target, rule.name( ) );
            ++g_file_scanner->valid_targets;
            MUTEX_UNLOCK;
            break;
        }
    }
Я не очень хотел бы разбираться, как именно оно работает и правда ли просто очень везёт, но...
Насколько я понимаю, то ты не ожидаешь того, что в какой-то момент кто-то случайно два раза залокает один и тот-же мьютекс... Я бы использовал здесь юник лок или лок гвард
ну или просто wait-free, вместо всех мьютексов, ибо кому нужны блокировки вообще... хотя в самом деле, вероятно, здесь они необходимы
А что ты думаешь насчёт этого? Прав ли я?
Спасибо за важное уточнение, да, ты абсолютно прав)
 
Разработчик
Статус
Оффлайн
Регистрация
1 Сен 2018
Сообщения
1,598
Реакции[?]
880
Поинты[?]
114K
Приветствую, многоуважаемые пользователи yougame, посещающие данный раздел. Предоставляю вашему вниманию собственноручно написанный антивирус на с++. Идейным вдохновителем послужил opensource пример движка для обнаружения угроз - yara. Примечателен он тем, что его база данных состоит из своеобразных "правил", задающихся при помощи собственного "языка". Я решил повторить наработки этого проекта, воплотив его уже в полноценное приложение для сканирования системы.
Если вас заинтересовало развитие данного проекта, пишите мне по всем вопросам в указанные в профиле контакты. Буду рад сотрудничеству;)
Используемые библиотеки и особенности:
gui - ImGui
rule parser - flex / bison.
multi-thread scanning system with uniform distribution of tasks across cores.

GITHUB:
Пожалуйста, авторизуйтесь для просмотра ссылки.
От антивируса тут только название, правильнее было бы это назвать статическим анализом файлов с поддержкой написания правил, а так +реп за любое вложение в опенсурс.

p.s: зачем тебе тянуть имгуи, если есть Qt?
 
Модератор форума
Участник
Статус
Оффлайн
Регистрация
26 Янв 2020
Сообщения
378
Реакции[?]
157
Поинты[?]
9K
От антивируса тут только название, правильнее было бы это назвать статическим анализом файлов с поддержкой написания правил, а так +реп за любое вложение в опенсурс.

p.s: зачем тебе тянуть имгуи, если есть Qt?
Не очень привычно мне с ним работать, хотя, признаюсь, было бы гораздо проще)
 
Сверху Снизу