Страница 1 из 1

Скомпилированные в VB6 EXE всё чаще принимаются за вирус.

СообщениеДобавлено: 16.06.2018 (Сб) 13:50
Mikle
Собственно subj.
Недавно бился над своей игрой, на virustotal более десяти ложных срабатываний, с помощью Teranas удалось побороть - пришлось отказаться от оптимизаций при компиляции и заменить запись в файл (всего лишь ini-файл конфигурации) с Open\Put\Close на API функции. На virustotal стало чисто, но народ жалуется, что защитник десятки ругается.
Сейчас скомпилировал пример мультипоточности от The Trick, фрактал Джулия. Результат: https://www.virustotal.com/#/file/b5214 ... /detection

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 16.06.2018 (Сб) 14:36
The trick
Бывает такое с Avast'ом, я обычно посылаю отчет о ложном срабатывании. Сейчас уже намного реже аваст детектит в VB6 exe-шниках вирусы ложно.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 16.06.2018 (Сб) 15:38
Mikle
Там 5 срабатываний, в том числе DrWeb, что особо печалит.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 02.07.2018 (Пн) 23:00
Teranas
У меня раньше, под впечатлением от одной древней статьи Криса, была мысль создать обработчик exe, который через определённое количество вставлял бы пустые инструкции, но я на это забил, так как тогда с ложным срабатыванием антивирусов ещё не было таких проблем.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 05.07.2018 (Чт) 22:53
jangle
Касперский стабильно детектил пустые экзешники с одной формой скомпилированные в P-CODE как вирус.
Все это следствие криворукости сотрудников антивирусных компаний.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 06.07.2018 (Пт) 8:23
Mikle
jangle писал(а):Все это следствие криворукости сотрудников антивирусных компаний.

Боюсь, что это следствие борьбы с VB6, а в перспективе и вообще с Win32 кодом. Постепенно сертифицируют всё необходимое, а остальное будет детектироваться, как вирус.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 06.07.2018 (Пт) 16:23
jangle
Снес кашпера со всех устройств и живу с виндовым антивирусом.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 07.07.2018 (Сб) 20:48
Teranas
Да в принципе проверка в реальном времени вообще не нужна, достаточно сканера, только лошары ушастые, не поставят программу на VB6, так как антивирус разорётся, и чем дальше, тем больше антивирусов ругаются на VB6.
Написал программу, без какой либо записи на диск и работы с файлами и то сработало 3 антивируса, правда, мало известных, все монстры проглотили нормально.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 08.07.2018 (Вс) 3:33
Хакер
Mikle писал(а):Боюсь, что это следствие борьбы с VB6,

А какой смысл такой борьбы? Всякая борьба в конце должна принести какую-то выгоду — здесь же выгода в чём?

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 08.07.2018 (Вс) 4:20
ger_kar
jangle писал(а):Снес кашпера со всех устройств и живу с виндовым антивирусом.
А у меня так и вообще никакого антивируса нет, даже виндошного, ибо в Windows XP его еще не было. И ничего нормально.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 08.07.2018 (Вс) 4:26
Хакер
ger_kar писал(а):
jangle писал(а):Снес кашпера со всех устройств и живу с виндовым антивирусом.
А у меня так и вообще никакого антивируса нет, даже виндошного, ибо в Windows XP его еще не было. И ничего нормально.


Это не имеет никакого значение, ведь равняться надо на потребителей (наших программ), а не на себя и «коллег».

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 08.07.2018 (Вс) 18:28
Mikle
Хакер писал(а):А какой смысл такой борьбы? Всякая борьба в конце должна принести какую-то выгоду — здесь же выгода в чём?

По крайней мере поначалу явно пытались всех пересадить на .net, выгода в продвижении новой платформы. Чего стоит удаление из уже существующих версий DirectX части файлов, предназначенных для совмещения с VB6.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 08.07.2018 (Вс) 21:46
Хакер
Но это же не Лаборатория Касперского сделала, а тот, кто продвигает дотнет.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 08.07.2018 (Вс) 21:52
Mikle
Естественно. Просто таким лабораториям нужно жить и зарабатывать в мире, где многое зависит от тех кто продвигает дотнет. Да и не Каспер в лидерах по преследованию VB6, из маститых тут в первую очередь nod32.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 16.08.2018 (Чт) 0:26
Williams
jangle писал(а):Касперский стабильно детектил пустые экзешники с одной формой скомпилированные в P-CODE как вирус.
Все это следствие криворукости сотрудников антивирусных компаний.


дебилы, вырезано

[Хакер] :: Мат запрещён правилами. Устное предупреждение.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 05.10.2018 (Пт) 15:47
BV
Не хочется снова это писать, но ребята.. зачем насиловать труп? VB6 мёртв, и уже давно. Печально, да, но любишь -- отпусти!
Я бы рекомендовал любителям WYSIWYG обратить внимание на RAD Studio 10.x. Дельфи или плюсы, это уже пусть каждый решает сам для себя. Я выбрал плюсы. Там достаточно современный фронтэнд в лице clang, а конструктор форм по удобству, как минимум, не уступает старому доброму VB-шному. Один минус, всё это дело стоит денег. Но кого это останавливало на просторах СНГ? :)

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 05.10.2018 (Пт) 20:42
Хакер
BV писал(а):VB6 мёртв, и уже давно. Печально, да, но любишь -- отпусти!

VB6 мёртв только в головах тех, кто вбил себе мысль, что он мёртв.

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

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

Я не смотрел RAD Studio, но уверен, что ему не доплюнуть до VB6 в ряде вопросов, и причина здесь не в том, что разработчики там не дотягивают до тех, что создали VB6 или что продукт недоработан.

Причина в уникальной концепции, заложенной в VB6. Я не говорю, что это уникально хорошая концепция — я имею в виду то, что я не видел больше нигде чего-то подобного. В других IDE, как ни крути, IDE являешься лишь побочной примочкой к компилятору. Здесь же IDE сама является компилятором, часть этапов, составляющих компиляцию, происходит непосредственно в момент ввода кода, остальная же часть делается по JIT-принципу и с минимальными телодвижениями между перезапусками.

В 98-ом году такая архитектура давала то, что эквивалентный проект на С/С++ компилировался и линковался 30 секунд, а проект на VB6 запускался почти мгновенно. Помимо этого, за 20 лет по-моему не появилось ничего, где был бы настолько же мощный Immediate Pane и настолько гибкая возможность запаузить проект, попереписывать кучу кода, и продолжить его выполнение. И дело не в том, что у других RAD-ов разработчики слабые, а в том, что сама концепция языка, технологии компиляции/сборки очень удачна (и видимо заранее была такой избрана в угоду RAD-ности).

Кроме того, какой другой язык или среда имеет такую степень родства и встроенной поддержки COM и OLE Automation? Где ещё объекты априори являются COM-объектами, где ещё можно так же легко запрограммировать объект/класс, которые может быть создан и использован из кучи сред (например из vbs-скрипта или js-скрипта, причём с удалённой машины), или создать расширение проводника/IE, автокада, или какой-нибудь плагин/хендлер для Windows?

Создать объект (контрол), который может быть встроен на HTML-страницу в IE, или наоборот, в своё приложение встроить IE-контрол и из приложения рулить объектной моделью страницы, взаимодействовать с JS-скриптами? Это можно и на чистом Си всё сделать, но где ещё это можно сделать настолько легко и быстро, как в VB6?

Создать проект типа ActiveX EXE, создать в нём класс, который делает Implements некоторого чужого заранее оговоренного интерфейса, понапихать в реализации членов этого интерфейса ключевое слово Stop, запустить проект на отладку (не компилируя в EXE/DLL!), дождаться и поймать момент, когда чужой хост создаст экземпляр нашего класса и дёрнет метод интерфейса, и только в этот момент начать писать настоящую реализацию вызванного метода. Какой ещё RAD позволяет использовать такую механику работы? Т.е. не так, что сначала мы пишем метод, а потом его вызывают, а сначала метод вызывают, а потом мы его пишем.

Я много раз использовал такой сценарий работы, когда надо написать нечто, что будет взаимодействовать со сторонним приложением (путём отдачи ему объекта, реализующего нужный интерфейс) — когда начинаешь работать с чем-то ранее незнакомым, зачастую не знаешь, какие методы интерфейса «обратной связи» в каких обстоятельствах будут вызваны/сгенерированы, и какие аргументы будут переданы. И подход «поймай момент и попробуй поиграться с реализацией» помогает очень быстро встать на рельсы взаимодействия с новым неизвестным сторонним приложением/средой/системой.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 05.10.2018 (Пт) 23:11
Mikle
BV писал(а):Не хочется снова это писать, но ребята.. зачем насиловать труп? VB6 мёртв, и уже давно. Печально, да, но любишь -- отпусти!

Если бы был мёртв, зачем бы его так старательно убивали? Я бы задавал вопрос по-другому: "зачем пациента отправляют в морг, ведь он не умер, даже не болен, а просто стар".

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 06.10.2018 (Сб) 18:15
ger_kar
Mikle писал(а):Если бы был мёртв, зачем бы его так старательно убивали? Я бы задавал вопрос по-другому: "зачем пациента отправляют в морг, ведь он не умер, даже не болен, а просто стар".
Шикарно сказал!!!

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 08.10.2018 (Пн) 1:12
iGrok
Mikle писал(а):Я бы задавал вопрос по-другому: "зачем пациента отправляют в морг, ведь он не умер, даже не болен, а просто стар".

Да никто его никуда не отправляет.

Просто из-за компиляции в P-Code не работает ряд стандартных эвристик антивирусов, рассчитанных на работу с реальным кодом. И вместо того, чтобы разбирать yet another VM, сам факт использования этого компилятора (без учёта используется вм или нет) включают в эвристику и сходу дают ему достаточно высокий балл, а дальше достаточно любого минимально подозрительного действия и привет.

По той же причине сходу цепляют generic-детект файлы, защищённые чем-нибудь типа VMProt, Themida и иже с ними.

CIL/JVM - тоже VM, но они гораздо активнее используются, и аверам приходится их поддерживать и учиться с ними работать.

Аналогичные проблемы имеет сейчас Delphi 7, например. Пустой проект на нём хватает детекты половины списка вирустотала с чем-нибудь типа heur:suspicious, или heur:generic. Аналогично - старые версии MSVC. И мноооогое другое.
Можно сказать, все редкоиспользуемые компиляторы в группе риска.

Для коммерческих проектов это решается элементарно - получаем code signing сертификат, подписываем им файлы, все детекты как рукой.

Для некоммерческих сложнее. Комодо предлагает что-то за 100$/год, но надо смотреть что там за корневой центр и доверяют ли ему целевые ОС.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 08.10.2018 (Пн) 20:22
Teranas
Написал прогу, проверил VirusTotal, всё чисто,
пожал UPX, проверил, так все дружно разорались, что это самый страшный вирус в мире...
Вот так вот.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 03.10.2019 (Чт) 11:04
Mikle
Продолжаем разговор.
Написал программу, в которой dll подключается полностью динамически, в том смысле, что имя dll неизвестно заранее, а получается через Command$ среди прочих параметров.
Dll подключаю с помощью LoadLibrary, далее нужно вызывать ф-цию через указатель.
Сначала использовал кирпич от The trick, всё получилось нормально, только вот микрософтовский защитник удаляет мою программу (а половина её пользователей сидит на десятке), кроме него ещё два срабатывания непопулярных антивирусов на VirusTotal, пробовал играться с параметрами вплоть до компиляции в P-Code - ещё хуже.
Тогда для вызова ф-ции через указатель использовал кирпич Хакера - на VirusTotal 16 срабатываний, в том числе Касперский! Но хоть микрософтовский перестал реагировать.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 03.10.2019 (Чт) 17:20
Хакер
Mikle писал(а):Сначала использовал кирпич от The trick, всё получилось нормально, только вот микрософтовский защитник удаляет мою программу (а половина её пользователей сидит на десятке), кроме него ещё два срабатывания непопулярных антивирусов на VirusTotal, пробовал играться с параметрами вплоть до компиляции в P-Code - ещё хуже.


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

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

Но вообще, ситуация не может не злить. Надо как-то с этим беспределом и дескриминиацией по средству разработки бороться. Не принимают ли Microsoft-овцы претензий по ложному опознаванию?

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 03.10.2019 (Чт) 19:59
Mikle
Хакер писал(а):Не принимают ли Microsoft-овцы претензий по ложному опознаванию?

Принимают, процитирую сам себя с gamedev.ru:
из микрософта пришло письмо, что заявка принята и поставлена в очередь, срок рассмотрения будет зависеть от популярности проверяемого приложения... уж послали - так послали, типа оно может быть популярно, когда их система, под которую оно и написано, его блокирует.

Хакер писал(а):код функций модифицировать внешней утилитой

Была у меня такая мысль, если что - обращусь.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 03.10.2019 (Чт) 20:46
The trick
Майкл, попробуй inline assembler, там без самомодификации.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 03.10.2019 (Чт) 20:54
Mikle
Я в конце концов поступил проще - зарегистрировал одну dll фиксированно с помощью Declare, в ходе программы делаю копию нужной dll с зарегистрированным именем. Костыль - но работает, правда и так 11 срабатываний на VirusTotal, но ни одного более-менее популярного, даже уровня Авиры-Аваста.
В данном случае выкрутился, на будущее - посмотрим.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 03.10.2019 (Чт) 21:40
Хакер
Mikle писал(а):Я в конце концов поступил проще - зарегистрировал одну dll фиксированно с помощью Declare, в ходе программы делаю копию нужной dll с зарегистрированным именем.

Так у тебя за один запуск программа никогда не требует более 1 dll?

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 03.10.2019 (Чт) 21:59
Mikle
Хакер писал(а):Так у тебя за один запуск программа никогда не требует более 1 dll?

Да, я упростил до этого, но имя dll заранее неизвестно.

Re: Скомпилированные в VB6 EXE всё чаще принимаются за вирус

СообщениеДобавлено: 09.10.2019 (Ср) 9:55
Mikle
Ответа от микрософта так и нет, зато есть сюрприз - теперь и упрощённая версия программы с переименованием dll детектируется их антивирусом. Неделю их эта версия устраивала, но теперь нашли-таки вирус...