2010-11-14 19 views
5

Tengo que programar un motor polimórfico simple. Uso linux (32 bits) y puedo codificar en ensamblador y c. No sé cómo comenzar.Motor polimórfico simple

¿Me puede dar un esquema para construir un motor de este tipo? Mi idea es hacer un programa que:

  1. leer la sección de código de un archivo
  2. lo cifra en un buffer,
  3. espacio de maquillaje al principio (¿es posible?) Para agregar la rutina de descifrado
  4. escribe el nuevo buffer dentro de la sección de código del programa.

¿Es eso correcto? ¿Refleja la operación de tal motor?

+0

Tutorial que se ve bien: https://www.pelock.com/articles/polymorphic-encryption-algorithms. Fue publicado como una respuesta de solo enlace por @Twistd. –

Respuesta

3

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.

+0

gracias por esta respuesta! Me dio una buena imagen del procedimiento. Entonces, el motor es parte del virus, no algo que tenga su propia existencia independiente (¿me refiero a un programa)? –

Cuestiones relacionadas