Skip to content

011[BETA]_VERSION

Choose a tag to compare

@andrei-ag andrei-ag released this 26 May 05:37

Вкладываем исходный код антивирусной утилиты, в его последнем состоянии, хотя бы, потому что он на порядок лучше последней, «официально выпущенной версии» (десятой). Все могло быть гораздо лучше, если бы мы работали над антивирусом в течение этих лет. Но, даже если сравнивать текущий функционал антивируса с тем, что был представлен в десятой версии, то это просто «небо и земля», а общее сходство блоков, составит менее 15%.

Перечень основных изменений:

  • Исходные тексты полностью переписаны под бесплатный интерпретатор FASM. Начиная с этой версии, Explosion Antivirus защищен Стандартной Общественной Лицензией GNU GPL, оригинальный текст которой на английском языке, а так же неофициальный перевод на русском, входят в состав каждой поставки антивирусного сканера. Если Вы не знакомы с текстом этой лицензии, мы, разработчики Explosion Antivirus, настоятельно рекомендуем ознакомиться с ним перед использованием самой программы или же ее исходных текстов (частично или в полной мере).

  • Для удобства отладки, добавлена возможность отключения таймера, используемого эмулятором. Отключение таймера инициируется через командную строку, при помощи специального ключа «/t-». При выключенном таймере, эмулятор будет работать до тех пор, пока не встретит неизвестную инструкцию или же обнаружит известный вирус. Что может быть полезно для полной эмуляции длинных расшифровщиков или же расшифровщиков, работающих по алгоритму RDA. Внимание, процесс проверки файлов с отключенным таймером, может занять весьма продолжительное время и даже привести к зависаниям.

  • Был доработан механизм создания «дампов» проверяемых файлов (ключ «/d» командной строки), который вызывается после завершения проверки исполняемого файла. В этом режиме, Explosion Antivirus создает файл с расширением “.dmp”, для каждого проверенного исполняемого файла (формат PE). По содержимому «дампа» можно посмотреть, результат работы эмулятора – например, как выглядит файл с расшифрованным (или же частично расшифрованным) вирусным телом. Однако даже при обнаружении вируса в исполняемом файле, в сформированном «дампе» не всегда будет содержаться его расшифрованная копия. Например, вирус Win9X/Zombie II, формирует расшифрованное тело в стеке, а для детектирования вируса Win32/Thorin совсем не обязательно полностью расшифровывать его тело (полная расшифровка необходима только для лечения этого вируса).

  • В процессе отладки эмулятора, возникла необходимость формирования листингов дизассемблера. Но спустя некоторое время, эта необходимость отпала сама по себе. Однако часть написанного на эту тему кода, мы не стали удалять, и она содержится в комплекте поставки.

  • Исходные тексты эмулятора, а так же используемого им дизассемблера инструкций, были реструктурированы и оптимизированы, а исходный код пополнился новыми комментариями и на наш взгляд, стал более понятен и приятен глазу. Функционал, реализованный в 10ой версии, был максимально отлажен и в результате, программа стала работать более стабильно. Так же, было увеличено число инструкций, распознаваемых дизассемблером (в том числе добавлены инструкции сопроцессора) и исполняемых эмулятором.

  • Добавлены функции работы с перечнем API, импортируемых исполняемым файлом, а так же примитивный эмулятор вызовов API. Над этим блоком, мы стали трудиться разбирая сложный полиморфный вирус Win32/Driller (Он же TUAREG), способный генерировать вызовы API при формировании своих расшифровщиков.

  • Были исправлены ошибки в алгоритмах разбора структуры файлов формата PE, приводившие к зависаниям программы.

  • Пересмотрены алгоритмы эмуляции инструкций работающих с виртуальным стеком (PUSH и POP).

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

  • Проверка файлов, упакованных последней версией UPX, временно не поддерживается. Эмулятор проходит почти весь код, но останавливается на вызове API “VirtualProtect”.

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

Частичный перечень ошибок, исправленных в эмуляторе:
1.Исправлена ошибка, возникавшая при имитации выполнения межсекционных переходов (если переход осуществлялся в самое начало второй, и выше, секции).
3.При обращении к данным, расположенным в другой секции, неправильно рассчитывалось их положение.
4.Переработан алгоритм полной имитации выполнения инструкций, обращающихся к данным. Раньше в большинстве случаев не сохранялось состояние флагов.
5.Если в коде, регистр ESP использовался не для обращений к стеку (а например, для обращения к данным), некорректно рассчитывалось смещение.

База антивируса пополнилась несколькими сигнатурами вирусов, в том числе полиморфиками Win9x/HPS, Win9x/Zombie II, Win32/Thorin и еще несколькими экземплярами. Сканер, способен обнаруживать наличие этих вирусов в исполняемых файлах и только. Разработка алгоритмов лечения, нами не планировалась. Основная цель подобного расширения базы - тест корректности новой версии эмулятора и дизассемблера инструкций. В дальнейшем, мы в первую очередь планируем развивать эмулятор антивируса (а так же использующиеся в его составе дизассемблер инструкций и кодо-анализатор) и очень надеемся, что в далеком будущем, его можно будет использовать не только для обнаружения шифрованных (полиморфных) вирусов, но и для снятия различных навесных защит. Прекрасно осознавая, тот факт, что рынок уже перенасыщен коммерческими программами, создатели которых ставят перед собой целью ожесточенную борьбу с вредоносными программами, мы не ставим перед собой подобных целей. Для этого есть масса специализированных продуктов, а Explosion Antivirus может быть полезен:

  • Программа поставляется в виде полностью открытых исходных кодов, которые могут служить примером реализации различных антивирусных технологий (например, алгоритма проверки исполняемых файлов PE и их лечения от различных вирусов, или же эмулятора программного кода). Стоит подчеркнуть, что методы реализации алгоритмов, использованные нами в Explosion Antivirus, не являются единственно правильными. Вы можете использовать части исходного кода для обучения или же в своих программах (согласно тексту лицензии GNU GPL).

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

На этом, кажется, все …

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

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

С уважением Most Needful Things: Andie Agafonov, Andrew Vedisheff.

Дата оригинального релиза: 21/12/2008

Full Changelog: v0.1.0...v0.1.1