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

Сміттєві команди, сміттєвий код (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:

Див. також

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.