Случайно создал вирус?

50

Я видел, что это происходит довольно часто: я пишу приложение в Delphi, и когда я его компилирую, вирус-сканер сообщает мне, что я создал вирус, а затем сразу же удаляет исполняемый файл. Это раздражает, но разумно легко исправить, выполнив полную перестройку, сначала удалив файлы *.dcu, а иногда просто ожидая.

Это происходит с Delphi 6, 7, 2005 и 2007, насколько я знаю. И Symantec, Kaspersky, McAfee и NOD32 все были виновны в сообщении этих ложных срабатываний. Я знаю это, потому что Delphi добавляет временные метки к своим файлам DCU, и эти временные метки заканчиваются в конечном исполняемом файле и, по-видимому, являются частью некоторой случайной сигнатуры вируса.

Я не хочу отключать вирус-сканер, даже не для одной папки или файла. И я на самом деле не для решения, но мне интересно следующее:

  • Имеют ли эти ложные срабатывания другие компиляторы?
  • Это также происходит с исполняемыми файлами .NET?
  • Другие также замечают похожие проблемы с Delphi?
  • 1
    Просто хочу добавить, что эта ошибка встречается довольно редко, но она все равно случается примерно раз в три месяца со мной или одним из моих коллег.
  • 12
    Я действительно где-то читал, что многие вредоносные программы и вирусы пишутся с использованием Delphi. ИМХО, это что-то говорит о универсальности и силе Delphi. Используется хакерами L33T :-)
Показать ещё 5 комментариев
Теги:
virus
false-positive
antivirus

18 ответов

96
Лучший ответ

Имеются ли эти ложные срабатывания с другими компиляторами?

Да, это была распространенная проблема в прошлом для AutoIt, как описано в этом форуме post "Действительно ли мои файлы AutoIt EXE действительно заражены?" . В большинстве случаев, включая AutoIt, это связано с плохими эвристическими практиками. Поскольку AutoIt использует бесплатный и открытый UPX компрессор часто ошибочно принимается за вредоносный код, который также использует UPX.

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

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

Оказывается, есть большой список программного обеспечения AV в википедии, называемый 'Список антивирусных программ. Это более полно, чем мой список выше.

Участник форумов Autoit сделал отличный script, чтобы отправить ложное сообщение большому списку поставщиков AV для автоматизации этот процесс немного.

  • 1
    Большой список создателей AV!
  • 0
    Очень хорошая ссылка действительно!
Показать ещё 8 комментариев
10

Звучит скорее как эвристическая шумиха для меня. У вас включена эвристика (некоторые сканеры могут ссылаться на нее как на "вирусный код" )? Шансы, что отметки времени будут равняться "части некоторой сигнатуры вируса", кажутся слишком маленькими, чтобы все время происходить.

Когда я запускал антивирусный сканер, я никогда не видел эту проблему с D6 или D7.

  • 1
    Да, эвристика включена. Не то чтобы я возражал, поскольку компьютер должен быть защищен, поэтому я скорее имею дело с случайным ложным срабатыванием, чем с источником инфекции. Я часто работаю над программным обеспечением для финансового рынка и, таким образом, большая часть его является конфиденциальной информацией.
8

В действительности существует вирус Delphi, см. http://www.sophos.com/blogs/sophoslabs/?p=6117

6

Да, моя команда испытала это, возможно, полдюжины раз в 2-3 года с Sophos в корпоративной среде. Итак, очень редко, но это происходит.

Наш IT-кретин начал требовать, чтобы я просмотрел все 1.5M-строки кода в нашем приложении, чтобы "заставить его уйти", но он не слишком затягивал эту линию...

Справедливости ради следует сказать, что он изначально был обеспокоен тем, что наши клиенты также могут получить такое предупреждение, но мы только когда-либо видели его срабатывание при создании exe из среды IDE на компьютере разработчика, никогда в выпуске exe exe на тестового окна или в другом месте.

Лично это случается так редко, что мы не беспокоимся об этом.

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

У меня это случилось со мной с развернутым кодом. Следующее обновление для сканера решило проблему. Некоторый cretin написал вирус, используя тот же самый компилятор, и подпись была частью библиотеки времени выполнения, а не во враждебном коде.

  • 0
    Это похоже на проблему, с которой часто сталкивается AutoIt. Я чувствую вашу боль, с развернутым кодом очень трудно (полностью) убедить клиента, что это ложный положительный результат.
  • 0
    Это для меня внутри, я знаю людей, управляющих им.
3

Это не так уж редко встречается при использовании нестандартных компиляторов или при создании необычных низкоуровневых материалов: я помню создание ложных срабатываний, когда я занимался разработкой ОС: AntiVir не нравился некоторые из моих плоских двоичных файлов.

В последнее время сообщение о такой проблеме появилось в списке рассылки tinyCC, сохраняющем AVG.

  • 0
    На самом деле, я знаю, что мне нужно вызывать только одну функцию Windows API в проекте DLL, чтобы вызывать тревожные сигналы почти на каждом вируссаннере. (API Keyhook считается подозрительным.) Но чтобы обойти ложные срабатывания, мне не нужно менять исходный код. Все, что мне нужно сделать, это выбросить файлы DCU (Delphi Compiled Units), чтобы он снова перестроил их с разными временными метками, создав, таким образом, другую подпись.
2

плюс к тому, что говорят другие, современные антивирусные программы повышают уровень вирусов, если ваши программы также используют некоторые "подозрительные" API (например, URLdownloadFile или другие связанные с API привязки). если вы используете Google delphi RAT FUD API undetectable, вы найдете много интересных тем.

2

В некоторых приложениях, если я использую RtlVclOptimize.pas, антивирус Avira сообщает, что я создал вирус.

  • 0
    Это интересно, потому что Avira не предупреждает меня о вирусе во всех наших приложениях. Может быть, это сочетание с другими подразделениями.
2

Я никогда не видел этого, выполнив большую часть разработки на С++ и .NET с помощью Visual Studio (начиная с версии от 1.5 до 2010).

  • 9
    Первая инфекция вирусом C # все еще продолжается, поэтому, пожалуйста, подождите немного. Для установки вам нужны рамки 250 МБ и права администратора. :-)
2

Я видел это только с ассемблерами. Например, MASM32 фактически предупреждает людей о том, что он может запускать антивирусные сканеры, так как EXE настолько малы (и/или некоторые вирусы написаны в монтаж). Мой сканер McAfee помешал некоторые из примеров программ как вирусы.

Это должно произойти только для антивирусных сканеров, которые имеют режим просмотра "подозрительный".

1

Если у вас есть проблемы с ложными срабатываниями, существует VirusTotal онлайн-сервис, который поможет вам проверить ваш файл против количества антивирусных ядер.
Это бесплатный сервис, и в настоящее время он может запускать антивирусную проверку почти с 40 антивирусными ядрами.

  • 0
    Это не будет практично, когда мое AV-программное обеспечение сообщает о вирусе в каком-то исполняемом файле, который я только что скомпилировал. Я знаю, что это не вирус, если я сам не написал. Проблема в том, что AV блокирует мой процесс компиляции при обнаружении ложного срабатывания. Это раздражает.
  • 0
    Я знаю. VirusTotal - это просто место, где вы можете узнать, какие антивирусные движки ошибочно воспринимают ваше программное обеспечение как вирус, и вы можете связаться с ними и попросить их устранить проблему.
Показать ещё 1 комментарий
1

Я помню еще один странный:

Файл помечен как подозрительный. Единственное, что файл был .OBJ! Файл .EXE, содержащий код, содержавшийся .OBJ, не считался проблемой.

1

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

  • 0
    Была и эта проблема. Был модуль Delphi, который использовался в исполняемом файле, и он реализовал связку ключей. Затем устройство использовалось в DLL для запуска под Outlook, и оно оказалось работающим. Но он вызвал довольно много вирусов, кроме сканера Касперского, который я использовал тогда! Опять же, это было еще хуже, так как DLL установил keyhook в каждом процессе. Это невозможно, когда API вызывается из исполняемого файла.
1

Я бы не назвал это "ложным положительным", потому что, строго говоря, это неверно, и антивирусное программное обеспечение никоим образом не "виновато".

Я на 99% уверен, что это эвристический анализ, действующий (я уверен, он обнаруживает ваш исполняемый файл как нечто вроде строк win32.virus.generic - обратите внимание на общий, это знак, что это не его подпись db, а скорее была обнаружена эвристикой), и, будучи эвристикой и всеми, она не дает вам никакой гарантии, что все, что она находит, является злонамеренным, это просто объясняет вам, что исполняемый файл подозрительно с его точки зрения.

Самое простое решение для этого - просто добавить исключение для своего файла по имени (это всегда одно и то же имя, правильно?). Если вам неудобно, вы должны, вероятно, сделать свое антивирусное программное обеспечение, прежде чем предпринимать действия, чтобы вы могли пропустить файл вручную.

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

  • 0
    На самом деле, проблема может возникнуть с ЛЮБЫМ источником, который компилируется в Delphi, поэтому имя файла может быть другим. Создание исключения для исполняемого файла увеличит риск в очень небольшом количестве, но мне нужно сделать это, чтобы обойти очень редкую проблему. Тем более, что есть простой обходной путь, это не реальная проблема. Просто раздражает, когда это происходит. И, как я уже сказал, наши системы работают с финансовыми приложениями, поэтому мы все время параноики. ;-) Раздражает, но требуется.
  • 5
    Как это не может быть ложным срабатыванием? Программное обеспечение AV ложно идентифицирует его как вредоносное ПО. Значение «ложного срабатывания» зависит от результата, а не от того, является ли процесс разумным или нет. Многие разумные процессы дают ложные срабатывания.
1

Несколько лет назад, каждый раз, когда мы обновляли GNU Linker из источников mingw и начали распространять его вместе с нашим компилятором, мы получили несколько сообщений о том, что vivusscanners классифицировал ld.exe как вирус. (.exes writing.exes...)

1

Некоторые антивирусные программы даже обозначают пакетный файл как вирус и не могут быть уверены, что это не так. Довольно раздражает, если этот файл является частью библиотеки сторонних разработчиков, и вирусное предупреждение запускается каждый раз, когда TortoiseSVN проверяет его. Я закончил отключать антивирусный сканер, удаляя файл и совершая фиксацию. (Без отключения сканера я даже не мог этого сделать:-()

0

VS Platform toolset 2010 отображает мою простую программу как вирус. Изменение инструментария на VS 2013 решает его.

Он просто создает HttpWebRequest и записывает результат в файл.

0

У многих честных разработчиков проблемы из-за небрежного антивирусного программного обеспечения. Смотрите также: Как предотвратить ложноположительную вирусную сигнализацию на моем программном обеспечении?

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

  • 0
    На самом деле, с предыдущим работодателем мне приходилось управлять приложением, которое было объявлено вирусом несколькими антивирусными продуктами. Как оказалось, DLL в проекте неправильно использовала функцию перехвата API, устанавливая перехват клавиатуры на глобальном уровне. Это было вирусное поведение и должно было быть исправлено! Предыдущий разработчик не знал об этой проблеме, поэтому приложение было не очень стабильным, и многие пользователи не могли его установить ... Действительно раздражает.
  • 0
    Есть разница между вирусным поведением и настоящим вирусом !!!!
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню