2010-11-14 15 views
5

Devo programmare un semplice motore polimorfico. Io uso Linux (32 bit) e posso codificare in assembly e c. Non so come iniziare.Motore polimorfico semplice

Potete darmi uno schema per la costruzione di un tale motore? La mia idea è di fare un programma che:

  1. leggere la sezione di codice di un file
  2. crittografa in un buffer,
  3. spazio make all'inizio (è possibile?) Per aggiungere la routine di decrypt
  4. scrive il nuovo buffer all'interno della sezione di codice del programma.

È giusto? Riflette l'operazione di un tale motore?

+0

Tutorial che sembra buono: https://www.pelock.com/articles/polymorphic-encryption-algorithms. È stato pubblicato come risposta di solo collegamento da @Twistd. –

risposta

3

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.

+0

grazie per questa risposta! Mi ha dato una buona immagine della procedura. Quindi il motore è una parte del virus, non qualcosa che ha una sua esistenza indipendente (come intendo un programma)? –

Problemi correlati