Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Nod32 определяет прогу на wxWidgets как вирус |
Автор: mes 19.11.2007, 13:08 | ||
Здравствуйте. Столкнулся со следуюшей проблемой: При написании IRC-клиента с использованием библиотеки wxWidgets (Cpp) , антивирус нод32 выдает сообшение, что exe файл определен как возможно новый NewHeur_PE вирус и удаляет его. Поэксперементировав, обнаружил что достаточно 5ти строчек кода добавить к новому проекту (шаблон с окном) и получается эта история.
То есть, если в проге и определен сокет-объект (даже неиспользуемый ) и где нибудь в коде есть три строчки (также если они стоят вразброс) с командами от IRC-протокола, то такую прогу нод32 считает вирусом. :( Поискав по инету я нашел, что есть Backdoor-вирус который использует IRC комманды(написан на VISUALBASIC) , с которым скорей всего и путает нод32 мою прогу. Но от этого легче мне не стало . Не использовать wxWidget я не могу.. так как IRC-клиент только часть проекта уже написаного на этой библиотеке.. Может кто то встречался с таким, знает методы борьбы ? Заранее спасибо за любой совет. |
Автор: Greeen 19.11.2007, 13:16 |
Сталкивался с таким... Правда в MFC, тоже при работе с сокетами. Просто вырубал нод и инет (чтоб какашка не залезла) и работал дальше ![]() |
Автор: W4FhLF 19.11.2007, 13:20 |
Когда напишешь программу, свяжись с их лабораторией и опиши проблему. Обычно они решают подобные случаи. |
Автор: W4FhLF 19.11.2007, 14:02 | ||
Эвристический анализ этого антивируса основан на наборе некоторых характерных для вирусов правил исполнения, каждое правило имеет свой вес, при достижении определённого порога(по весовой сумме всех правил встретившихся в приложении) программа становится потенциальным вирусом с т.з. АВ. Видимо какое-то поколение вирусов использовало похожую сигнатуру(да в общем-то любой троян использует сокеты) и её сделали одним из правил. Хотя, конечно, очевидно, что правилу присужден слишком большой вес. Но тут ещё может быть кое-что. Ещё видимо сыграло свою роль и то, что компилятор инклудит библиотеку с множеством сетевых функций. |
Автор: Softaz 19.11.2007, 14:46 |
Помню у меня при использовании wininet + ping DrWeb определял "возможный" вирус. Есди без строк тех АВ не определяет как вирус, попробуй зашифровать строки. |
Автор: mes 20.11.2007, 00:17 | ||||
Я примерно так и сделал, к строкам храняшимся в коде программы добавил префикс, чтоб АВ ничего "плохого" в коде не нашел.. с такой строки считываю нужный кусок в константную переменную и работаю уже с ней. привожу один иэ вариантов как пример, вдруг кто то столкнется с такой же проблемой
Огромное спасибо за поддержку и советы |
Автор: bsa 20.11.2007, 12:27 | ||
может лучше так:
|
Автор: mes 20.11.2007, 19:05 |
а чем лучше ? |
Автор: Alek86 20.11.2007, 19:43 |
имхо, ничем. только если тебе хочется обмануть нод ![]() а в следующей версии он будет на _USER ругаться.... понятно, что проблемы то ихние, но программу же это не спасет... лучше что-то более уникальное |
Автор: mes 20.11.2007, 21:56 |
Иммено для этого объявляю переменные через #define-макрос, чтоб одним махом можно было поменять префикс а если вдруг что, то и суффикс добавить ![]() предлагай какой нравится, поставлю ![]() |
Автор: Alek86 20.11.2007, 22:04 |
к примеру <рабочее название проги>_USER и т.п. а вообще, имхо, тут нужно бы ID писать вместо строк |
Автор: mes 20.11.2007, 23:26 |
нельзя чтоб в теле проги были строки (даже нигде не используемые) команд IRC. ID отпадает так как, как я по ID расспознаю строку пришедшую по сети? а толку от рабочего названия если перед командой тот же штрих стоит ![]() P.S. Наверно ты невнимательно прочитал: префикс (_) нужен только для того чтоб в теле проги не хранилась команда похожая на ирк-команду. А использую в работе все равно только "чистую" команаду (без префикса), |
Автор: Alek86 21.11.2007, 15:38 | ||
угу, и правда ![]()
если эти строки "отсекаются" сразу по прибытии и нужны только по работе IRC, то да... мне почему-то показалось, что они фигурируют и в самом "ядре" программы, которое должно быть отделено от сети бетонной стенкой |
Автор: mes 21.11.2007, 19:17 | ||
Да используются только для расшифровки команд от ирка(и соответственно обратного преобразования). В "ядро" посылается уже отранслированная комманда "внутреннего" протокола. |