14.04.2000 Полиморфные генераторы [LordDark]
   На  сегодняшний день существует множество полиморфных генераторов. Мне
не  понятны  мотивации  людей,  создающих полиморфики которые пробиваются
сегодняшними  антивирусами  (Dr.Web,AVP  и так далее). Вы вставили в свой
движок  несколько  инструкций,  которые  не  позволяют  AV продвинуться в
глубь.  Результат, - не определяемый вирус. Появляется заблуждение, что и
в  будущем  этот  зверек не будет обнаруживаться. Некоторые люди искренне
верят  в создание FullMorph'а , обнаружение которого станет не возможным.
Через   несколько   дней  появляется  очередной  апдейт  и  наше  изделие
определяется  на  "Ура".  Если  вирус  определяется, то и FullMorph будет
тоже.  Что  мы сделали не так? Ответом может служить то, что генератор не
достаточно  "полиморфный".  Универсальный  генератор должен иметь большое
число    "мусорных"    инструкций,   причем   инструкции   используемые в
расшифровщике (каркасе) должны так же использоваться в "мусоре".
Допустим наша фишка - ah=0,int 15h; ah=86
Пример кода:

Lab_1:
     Lea ax, [0000]
     Nop
     Int 15h
     Xchg al, ah
     Cmp al, 86h
     Jnz lab_1

   Из этого следует, что весь код должен иметь подобные инструкции. Кроме
0x15  прерывания  должны  вызываться  и другие(0x1C,0x08,..). К сожалению
разумных  генераторов  пока не существует (я не видел). Каждая инструкции
должна играть роль. Подобные вещи реализованы.
Пример:

_Ax dw 0; _Cx dw 0; ....
Gen_mov_ax:
   Mov ax, -1
   Call random
   Push ax
   Mov al, 0B8h
   Stosb
   Pop ax
   Stosw
   Mov [_Ax], ax
   Ret

   На данное время не один мною виденный AV не может пробиться сквозь LME
1.8,  хотя  он  далек  от  идеала. Надеюсь, мои домыслы натолкнули вас на
конкретную идею.
      
Статья для журнала Top Device