Поліморфний код — Вікіпедія

Поліморфний код — це програмний код, котрий може себе змінювати, без зміни свого алгоритму. Для мутації коду може бути використаний поліморфний генератор. Код може змінюватися кожного разу під час виконання, але результат роботи ніколи не змінюється. Для прикладу є функція котра має повертати число 4, даний результат можуть повертати багато виразів: -1 + 5, 1 * 4, 7 - 3. Ця техніка інколи використовується у комп'ютерних вірусах, у цьому випадку вони називаються поліморфні віруси. У вірусах ця технологія використовується для того щоб ускладнити знаходження вірусів антивірусними програмами.[1]

Поліморфний комп'ютерний вірус[ред. | ред. код]

Це комп'ютерний вірус котрий використовує поліморфний код для ускладнення свого детектування.

Історія[ред. | ред. код]

Перший відомий поліморфний вірус був написаний Марком Вашберном (Mark Washburn). Вірус, котрий мав назву 1260[2], був створений у 1990 році. Більш відомий поліморфний вірус був створений болгарським програмістом Dark Avenger (нік) у 1992 році, він також створив MtE (Mutation Engine).

Поліморфізм у комп'ютерних вірусах[ред. | ред. код]

Поліморфізм у вірусах в основному представлений наступними категоріями:

  • шифрування функцій вірусу за допомогою побайтної операції XOR.
  • будь-яка інструкція замінюється на іншу котра робить те саме.

Наприклад,

 add ebx, 7 

може бути замінена на

 sub ebx, −7 

або на пару команд

 add ebx, 9  sub ebx, 2 

код для перенесення даних з одного регістра до іншого

 mov ax, bx 

може бути замінений на

 push bx  pop ax
  • перестанова місцями інструкцій у випадку коли їх порядок ролі не має.
  • додавати сміттєві команди, такі команди котрі вірусом не використовуються, а лише є для ускладнення аналізу.

Шифрування це найбільш використовуваний метод у поліморфних вірусах. Шифрування саме по собі не є поліморфізмом. Для досягання поліморфізму, програмний код мутує за допомогою шифрування та дешифрування. Ця техніка дозволяє щоб один і той самий код виглядав по різному.[3]

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

Посилання[ред. | ред. код]

  1. Raghunathan, Srinivasan (2007). Protecting anti-virus software under viral attacks. M.Sc. Thesis, Arizona State University.[1] [Архівовано 17 квітня 2012 у Wayback Machine.]
  2. 1260 (computer virus)[2] [Архівовано 17 серпня 2021 у Wayback Machine.]
  3. Wong, Wing; Stamp, M. (2006). Hunting for Metamorphic Engines. Journal in Computer Virology. Department of Computer Science, San Jose State University. [3] [Архівовано 9 серпня 2017 у Wayback Machine.]