Как работает обфускатор
Как говорят медики, СПИД— это еще не приговор. Тоже самое и обфускация. Далеко не каждый обфускатор использует продвинутые методики "запутывания" и высаживаться на измену при этом слове не надо.
В простейшем случае, полиморфный генератор просто "накачивает" программу кучей незначащих команд типа nop, xchg reg,reg, or reg,reg[2]; никогда не выполняющимися переходами типа xor reg,reg/jnz junk, где xor – значимая команда, а junk – "мертвый код", и т. д. Вот, например:
or ch, ch ; "мусор", не воздействующий на регистр ch,
; но воздействующий на регистр флагов, однако
; это воздействие перекрываются последующим xor
xor eax,eax ; потенциально значимая команда
; (почему "потенциально" будет пояснено ниже)
seto bl ; "мусор", устанавливающий bl
в 1, если есть
; переполнение, а после xor
его всегда нет
repne jnz short loc_43409A ; "мусор", передающий управление если не ноль,
; но после xor
флаг нуля всегда установлен,
; плюс бессмысленный префикс repne
rep jnp short loc_43408D ; "мусор", передающий управление если нечет
; но после xor
флаг четности всегда установлен
jo short loc_434094 ; "мусор", передающий управление если флаг
; переполнения установлен, а он сброшен xor
xchg ebx,ebx ; "мусор", обмен регистров ebx
местами