HEUR/QVM03.0.44E9 Malware.Gen

При запуске кода с презентации Graph3D uses Graph3D; begin var s := Sphere(P3D(-2,-2,0),1); var tr := Arr(P3D(2,-2,0),P3D(2,2,0),P3D(2,2,4), P3D(2,-2,4),P3D(-2,2,0),P3D(-2,-2,0)); s.AnimMoveTrajectory(tr,5).Begin; end.

антивирус 360 Total Security находит HEUR/QVM03.0.44E9 Malware.Gen и удаляет программу. Что это значит?

Это значит, что или криво настроен антивирус или он просто глючит. Софт на этом ресурсе чистый.

Антивирус 360 самый плохой в этом отношении. Он находит вирус в откомпилированной нашим компилятором программе!

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

  1. незнакомое, временное и подозрительное ПО всегда следует запускать в песочнице (для программной виртуализации рекомендую полу-бесплатный SandBoxIE);
  2. нужно контрольное мнение – HIPS и проверка на внешних ресурсах вроде VitusTotal;
  3. желательно сэкономить себе время и нервы, исключив папку временной и финальной сборки из проверки и
  4. сообщать разработчикам об осечке.

Например, схожие предупреждения делали различные антивирусы со многими компиляторами (включая на саму Studio!) и игровыми движками, не говоря о кросс-платформах. Хотя если вы точно знаете, что файл чистый, то нечего и отвлекаться.

Однако хотелось бы узнать, есть ли или планируется хоть какая-то встроенная защита или проверка готового EXE от мальвары?

Очень бы хотелось узнать, как такое можно сделать

Я думаю, многие софтверные гиганты озолотили бы автора такого решения

1 лайк

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

P.S. Ну то есть, это защита от какого нибудь изменения самого .exe . Но я не совсем понял от чего защищаем… И - если так подумать, обфускация тут больше поможет)))

Да, вопрос касается если не частных сертификатов (например, самого пользователя), то хотя бы самопроверки ЕХЕ через контрольную сумму, чтобы программа выдавала предупреждение. В общем, почему-то решил, что раз срабатывают некоторые антивирусы, возможно используется какой-то упаковщик/обфускатор вроде UPX.

Раньше баловались самомодифицируемыми исполняемыми файлами через типизированные константы и дописыванием данных (ограничения количества запусков, лучших игроков или вложений вроде PCX/BIN/CFG/INI) в конец файла, не говоря о anti-debug)

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

1 лайк

Согласен: если файл (как именованый массив данных) рассчитывать стандартными алгоритмами, то результат можно подогнать, но если (1) алгоритм проприетарный/не по умолчанию или (2) загрузчик выполняет роль контейнера-упаковщика, то это помогает выявить возможные повреждения или изменения.

  • А насколько сложно добавить возможность цифровой подписи аналогично Signing в той же VS, чтобы на ближайшие годы избавиться от наездов антивирусов и получить минимальную страховку?

Наличие ЭЦП не избавит “от наездов”, поскольку не каждый антивирус способен эту ЭЦП проверить. Для этого он должен знать публичный ключ разработчика софта, сертифицированный общедоступным центром авторизации. Ведь тот же резидентный “касперский” некоторыми антивирусами принимается за вирус, несмотря на все подписи. Проверка ЭЦП - всего лишь акт подтверждения суждения “Да, это написал Вася Пупкин и никто больше там не рылся”.

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

2 лайка

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

Ну не добавлять же так каждый .exe . Вы сами писали, и я полностью согласен - большОе преимущество паскаля в том что достаточно 1 файла исходников, чтоб сделать какую-нибудь простенькую программу.

А потом ещё при распространении программ… Это если у моего теоретического друга не разбирающегося в компах стоит этот антивирус - как ему скинуть мою программу?))

Не понял. Я счел, что антивирус ругается на инсталлятор PacalАВС.NET, а не на каждый файл, который создан компилятором. Если ругается на каждый - “фтопку” такое антивирусное средство.

А с чего вы взяли что про установщик?

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

2 лайка

Да, именно антивирус 360 ругался на каждый создаваемый компилятором файл. Он считал сам компилятор вирусом поскольку тот создаёт и запускает бинарники, а также считал все эти создаваемые бинарники вирусами. Потому как нечего создавать тут понимаешь.

Ещё этим грешит эвристический AVG. Он каждый создаваемый файл при каждой компиляции тестировал 15 секунд, после чего говорил, что всё в порядке. При следующем запуске всё повторялось

Я вот представляю себе exeшник, который будет проверять свою контрольную сумму в момент запуска. Эвристическому анализатору такое поведение покажется точно подозрительным

1 лайк

Меня этот вопрос тоже интересовал.

А что, VS добавляет цифровую подпись к любому консольному приложению автоматически? Что-то я её в IL-коде не замечал.