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

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 10:54, 20 вересня 2017, створена SOMBot (обговорення | внесок) (більше не розпізнається як ізольована)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

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

Див. також[ред. | ред. код]