Обфускация и ее преодоление

         

оригинальный код до обфускации


Легко показать, что между последним обращением к eax и его реницилизацией можно как угодно модифицировать регистр eax без ущерба для выполнения программы, поскольку любые операции присвоения все равно будут перекрыты командой mov eax,ebx. "Запутанный" код может выглядеть например, так:

       push eax             ; ß последнее значимое обращение к eax

       xor eax,eax          ; мусор

l1:

       inc eax                     ; мусор

       jz     l2            ; мусор

       cmp    eax, ebx      ; мусор

       jnz    l1            ; мусор

       cmp    eax, ecx      ; мусор

       jge    l1            ; мусор

l2:

       sub eax, 666h        ; мусор

       shl eax, 1           ; мусор

       mov eax, ebx         ; ß значимая реиницилизация eax



Содержание раздела