Приветствую тебя уважаемый читатель. Речь в этой статье пойдет о
полиморфизме.
Люди имевшие дело с полиморфизмом знают, что традиционным методом
является создание полиморфного расшифровщика. При этом основной код
шифруется. Существует еще один метод создания полиморфного кода,
менее традиционный.
Суть данного метода заключается в следующем:
генерируется код результатом работы которого является появление
в стеке исходного кода. Далее передается управление в стек на
исходную программу. Код который дописывается к жертве выглядит
примерно так:
мусор
push 0xXXXXXXXX ; Последнее двойное слово исходного кода
мусор
push 0xXXXXXXXX
мусор
:
:
push 0xXXXXXXXX ; Первое двойное слово исходного кода
мусор
jmp esp
мусор
Данный метод имеет свой плюсы и свои минусы.
К минусам можно отнести большой коэффициент увеличения кода. Так при
коэффициенте увеличения кода 4, исходный код в 1к преобразуется в 4к
кода. И это не предел (Этот коэфициент можно менять в файле dinav2.inc).
К плюсам следует отнести высокую степень полиморфности. Она обусловлена
тем что при данном подходе ограничения на "мусор" минимальны.К плюсам
также следует отнести тот факт, что кодовая секция (в PE файле) в
которую будет дописываться наш код может быть и ReadOnly. При этом
многие антивирусы ничего не заподозрят.
Этот метод был реализован мной в виде процедуры MakePolyImg в dinav2.inc файле.
Параметрами этой процедуры является :
Esi=Смещение на исходный код
Edi=Смещение на буфер в котором генерируется полиморфный код
Ecx= Размер исходного кода.
Результатом работы является:
edi=сгенерированный полиморфный код,
eax=размер генерированного полиморфного кода.
Пример использования DINA v2.0 находится в файле dinav2.asm
(c) Voodoo/SMF
http://smf.chat.ru
|