Кіріспе
Өзін-өзі өзгертетін бағдарламалық код, антивирустық бағдарламаларды жеңу немесе кері инженерия жасау үшін құрастырылған. Компьютерлік техникада полиморфты код – бастапқы алгоритмін сақтап, мутация жасау үшін полиморфты механизмді пайдаланатын код. Яғни, код әр орындалған сайын өзін өзгереді, бірақ кодтың функциясы (семантикасы) өзгермейді. Мысалы, 3+1 және 6-2 сияқты қарапайым математикалық өрнектер бірдей нәтиже береді, бірақ процессорда әртүрлі машиналық кодпен орындалады. Бұл тәсілді компьютерлік вирустар, шелл-кодтар және компьютерлік құрттар өздерін жасыру үшін кейде қолданады. Шифрлау – кодты жасырудың ең көп таралған тәсілі. Шифрлау кезінде кодтың негізгі бөлігі (пайдалы жүктеме деп те аталады) шифрланады және түсініксіз болып көрінеді. Кодтың бұрынғысынша жұмыс істеуі үшін, оған шифрлау функциясы қосылады. Код орындалғанда, бұл функция жүктемені оқиды және оны орындамас бұрын шифрлайды. Шифрлау ғана полиморфизм емес. Полиморфты мінез-құлыққа қол жеткізу үшін шифрлаушы/шығарғыш жұбы кодтың әрбір көшірмесімен мутацияланады. Бұл бірдей функцияны орындайтын кодтың әртүрлі нұсқаларын жасауға мүмкіндік береді.
In computing, polymorphic code is code that uses a polymorphic engine to mutate while keeping the original algorithm intact that is, the code changes itself every time it runs, but the function of the code (its semantics) stays the same. For example, the simple math expressions 3+1 and 6 2 both achieve the same result, yet run with different machine code in a CPU. This technique is sometimes used by computer viruses, shellcodes and computer worms to hide their presence. Encryption is the most common method to hide code. With encryption, the main body of the code (also called its payload) is encrypted and will appear meaningless. For the code to function as before, a decryption function is added to the code. When the code is executed, this function reads the payload and decrypts it before executing it in turn. Encryption alone is not polymorphism. To gain polymorphic behavior, the encryptor/decryptor pair is mutated with each copy of the code. This allows different versions of some code which all function the same.
Қауіпті код
Вирусқа қарсы бағдарламалық жасақтама мен кіргізуді анықтау жүйелерінің көпшілігі компьютерлік файлдар мен компьютерлік желі арқылы жіберілген дерек пакеттерін іздеу арқылы қауіпті кодты табуға тырысады. Егер қауіпсіздік бағдарламалары белгілі компьютерлік вирустар мен құрттарға сәйкес келетін үлгілерді тапса, олар қауіпті жою үшін тиісті шаралар қолданады. Полиморфты алгоритмдер мұндай бағдарламалық жасақтамаларға зиянды кодты тануды қиындатады, өйткені ол үнемі өзгеріп отырады. Зұлым бағдарламашылар шифрланған кодын вирус сканерлеу стратегиясынан қорғау үшін шифрланбаған шифрлау қозғалтқышын (және оның нәтижесіндегі шифрланған жүктемені) вирус немесе құрт таратылған сайын қайта жазуға тырысады. Вирусқа қарсы бағдарламалық қамтамасыз ету, осы зиянды бағдарламаларды сенімді түрде анықтау үшін шифрлау қозғалтқышының әртүрлі мутацияларындағы негізгі үлгілерді табу үшін күрделі үлгілерді талдауды қолданады. Эмуляция полиморфты бұрмалауды жеңу үшін қолданылуы мүмкін, зиянды бағдарламаны виртуалды ортада өздігінен ашуға мүмкіндік береді, содан кейін дәстүрлі қолтаңба сканерлеу сияқты басқа әдістерді пайдалануға болады. Мұндай виртуалды орта кейде «құм қорап» деп аталады. Егер дешифрленген жүктеме дешифрлеу алгоритмінің өзгеруіне қарамастан бірдей болса, полиморфизм вирусты мұндай эмуляциядан қорғамайды. Метаморфты кодтық әдістерді анықтауды одан әрі қиындату үшін қолдануға болады, себебі вирус жадыда инфекциядан инфекцияға дейін тұрақты болып қалатын код блоктары болмайынша орындалуы мүмкін. Бірінші полиморфты вирусты Марк Уошберн жазған. «1260» деп аталған вирус 1990 жылы жазылған. Жақсы танымал полиморфты вирус 1992 жылы хакер Dark Avenger антивирустық бағдарламалардан үлгіні танудан қашу мақсатымен жасады. Көп таралған және өте қауіпті полиморфты вирус – файлды жұқтырғыш «Вирут».