Обфускация
Код, генерируемый компилятором, очень громоздок и разобраться в нем крайне непросто, однако, все-таки возможно. Чтобы этому помешать, некоторые протекторы используют "запутывание" или обфускацию (от английского obfuscation). В простейшем случае автоматический кодогенератор, свинченный с полиморфного движка, внедряет в код огромное количество незначащих команд типа NOP, XCHGEAX,EBX/XHG EBX,EAX, нашпиговывая ими программу как рождественскую утку или гуся. Более совершенные генераторы используют разветвленную систему условных переходов, математические операции и присвоения, результат которых никак не используется, и другие полиморфные технологии.
.00434000: 60 pushad
.00434001: E800000000 call .000434006 -------- (1)
.00434006: 5D pop ebp
.00434007: 50 push eax
.00434008: 51 push ecx
.00434009: EB0F jmps .00043401A -------- (2)
.0043400B: B9EB0FB8EB mov ecx,0EBB80FEB ;"e?0e"
.00434010: 07 pop es
.00434011: B9EB0F90EB mov ecx,0EB900FEB ;"e?0e"
.00434016: 08FD or ch,bh
.00434018: EB0B jmps .000434025 -------- (3)
.0043401A: F2 repne
.0043401B: EBF5 jmps .000434012 -------- (4)
.0043401D: EBF6 jmps .000434015 -------- (5)
.0043401F: F2 repne
.00434020: EB08 jmps .00043402A -------- (6)
.00434022: FD std
.00434023: EBE9 jmps .00043400E -------- (7)
.00434025: F3 repe
.00434026: EBE4 jmps .00043400C -------- (8)
.00434028: FC cld
.00434029: E959585051 jmp 051533887
.0043402E: EB0F jmps .00043403F -------- (9)