Олигоморфный код , также известный как полуполиморфный код , — это метод, используемый компьютерным вирусом для запутывания своего дешифратора путем генерации различных его версий, чтобы избежать обнаружения антивирусным программным обеспечением. Он похож на полиморфный код, но менее сложен, чем полиморфный код . [1]
Олигоморфный код работает, случайным образом выбирая каждую часть декриптора из нескольких предопределенных альтернатив. Во время выполнения эти компоненты могут быть объединены различными способами для создания новых, отдельных версий декриптора. [2]
Наличие нескольких возможных дешифраторов затрудняет обнаружение вируса с помощью сигнатур антивирусных программ. Однако большинство олигоморфных вирусов способны генерировать лишь ограниченное количество дешифраторов, [2] около нескольких сотен, [ требуется цитата ], поэтому обнаружение их с помощью простых сигнатур все еще возможно. Другой метод обнаружения олигоморфного дешифратора — создание сигнатуры для каждого возможного фрагмента кода, группировка фрагментов, которые могут заменять друг друга, и сканирование файла на наличие цепочки фрагментов дешифратора из чередующихся групп. Для обнаружения вируса можно использовать эмуляцию, но она может потребовать больше ресурсов, чем необходимо. [ требуется цитата ]
Первым известным вирусом, использующим олигоморфный код, был вирус Whale DOS , обнаруженный в 1990 году, который выбирал из нескольких десятков различных дешифраторов. Первым вирусом Windows 95, использующим олигоморфный код, был вирус Memorial, который мог генерировать 96 различных шаблонов дешифраторов. Другим примером является русское семейство вирусов WordSwap. [1]