El esquema básico es bastante diferente del que describió. Por lo general, solo el cuerpo del virus está encriptado, y no toda la sección del código. Considere la posibilidad de un virus simple que amplíe la sección de códigos o cree uno nuevo para su cuerpo. Ahora, para que sea polimórfica, hay que añadir el cifrado y hacer que el código de descifrado para ser no constante, por ejemplo:
1) insertar NOP al azar (nop
, add reg, 0
, push reg; pop reg
, etc.)
2) cambio el flujo de programa con (jmp next
, clc; jc next
, etc)
3) utilizar las instrucciones con el mismo efecto aritmético (add eax, 3
->add eax, 9; sub eax, 6
)
polimórfica significa que podría tener un número fijo de codificaciones , por lo que la forma más sencilla de crear uno es romper el código del descifrador en varios bloques y proporcionar varias codificaciones con la misma longitud para cada uno.
EDITAR: Sí, es una parte del cuerpo del virus. Para usarlo, coloque todos estos "ladrillos" en el cuerpo del virus, y cuando otro archivo esté infectado, cree una versión aleatoria del descriptor para este.
Tutorial que se ve bien: https://www.pelock.com/articles/polymorphic-encryption-algorithms. Fue publicado como una respuesta de solo enlace por @Twistd. –