Сміттєвий код

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Сміттєві команди, сміттєвий код (Superfluous Code) — машинні команди, результат виконання яких в програмі не використовується. Додавання сміттєвого коду є однією з головних технік обфускації машиного коду. Головним чином використовується крипторами та іншим зловмисним ПЗ для обходу сигнатурного детекту і пакерами для ускладення зворотньої розробки (аналіз алгоритму роботи програми).

Приклад (fasm x86)

[ред. | ред. код]

Декриптор без сміттєвих команд:

   mov  esi, start_of_virus_body
   mov  ebx, decryption_key
   mov  ecx, virus_size
 decryption_loop:
   xor  [esi], ebx
   inc  esi
   loop decryption_loop

Декриптор, що містить сміттєві команди:

   mov  esi, start_of_virus_body
   nop                              ; сміття
   mov  ebx, decryption_key
   add  edx, 105                    ; сміття
   mov  ecx, virus_size
   xchg ebp, edx                    ; сміття
   jc   decryption_loop             ; сміття
 decryption_loop:
   xor  [esi], ebx
   push ebx                         ; сміття
   pop  eax                         ; сміття
   inc  esi
   dec  eax                         ; сміття
   loop decryption_loop
   jcxz next                        ; сміття
 next:

Див. також

[ред. | ред. код]