Lo schema di base è molto diverso da quello che hai descritto. Di solito solo il corpo del virus è crittografato, non l'intera sezione del codice. Si consideri un semplice virus che estende la sezione del codice, ne crea uno nuovo per il suo corpo. Ora, per rendere più polimorfa, si deve aggiungere la crittografia e rendere il codice decryptor di essere non costante, ad esempio:
1) Inserire nops caso (nop
, add reg, 0
, push reg; pop reg
, ecc)
2) cambia il flusso del programma con (jmp next
, clc; jc next
, ecc)
3) utilizzare le istruzioni con lo stesso effetto aritmetico (add eax, 3
->add eax, 9; sub eax, 6
)
polimorfico significa che potrebbe avere un numero fisso di codifiche , quindi il modo più semplice per crearne uno è quello di spezzare il codice del decodificatore in più blocchi e fornire diverse codifiche con la stessa lunghezza per ciascuna.
MODIFICA: Sì, fa parte del corpo del virus. Per usarlo, metti tutti questi "mattoni" nel corpo del virus e quando un altro file è infetto, crei una versione casuale del decodificatore per esso.
Tutorial che sembra buono: https://www.pelock.com/articles/polymorphic-encryption-algorithms. È stato pubblicato come risposta di solo collegamento da @Twistd. –