L’autotrasferimento è una proprietà posseduta da un numero molto limitato di programmi per computer. Questi programmi possono alterare le loro posizioni in memoria durante l’esecuzione. La maggior parte dei programmi ha poco o nessun controllo sulla propria programmazione di base; invece che è gestito da programmi di ordine superiore. Questi sistemi possono cambiare la loro posizione spostando la loro programmazione o creando una copia di se stessi. Quando viene eseguita una copia, la posizione di esecuzione in genere cambia nel nuovo programma e il vecchio codice viene lasciato inattivo.
Nella maggior parte dei casi, un programma per computer in esecuzione si trova in due aree contemporaneamente. Si trova nella memoria fisica del computer, come un disco rigido o un’altra unità di archiviazione, e nella memoria volatile. Il programma viene spostato nella memoria volatile al momento dell’esecuzione per velocizzare i tempi di accesso e farlo funzionare più velocemente. La sua posizione in entrambe queste posizioni è generalmente determinata dal sistema operativo del computer.
Le posizioni di questi programmi sono chiamate indirizzi. Questi indirizzi vengono utilizzati dal sistema e da altri programmi per trovare rapidamente un programma quando necessario. Se un programma è suddiviso in memoria, funzionerà più lentamente che se fosse tutto insieme; pertanto, la maggior parte dei sistemi tenta di memorizzare programmi più grandi su indirizzi sequenziali. Ancora una volta, la scelta di farlo ricade in genere sul sistema operativo e il programma non ha alcun controllo diretto su di esso.
Quando un programma utilizza l’auto-rilocazione, ha un controllo significativamente maggiore su questi processi rispetto ai programmi tipici. Ha la capacità di controllare gli indirizzi a cui viene eseguito. Mentre è in uso, il programma può spostare la sua programmazione totale dalla posizione in cui si trova a un’altra posizione all’interno della memoria dello stesso computer. Alcuni programmi possono modificare solo uno dei due indirizzi, mentre altri possono modificare entrambi.
Di per sé, l’autotrasferimento è un processo raro, ma non problematico. Il vero pericolo arriva quando l’autotrasferimento viene utilizzato insieme a intenti dannosi. È possibile che un programma esegua un gran numero di cose inaspettate quando ha il controllo su se stesso. Può creare numerose copie fisiche o volatili per intasare la memoria di un computer. Ciò può causare un riavvio e può essere un precursore di un attacco di avvio.
Inoltre, il programma può eseguire backup di se stesso per impedirne la rimozione. Se un programma con auto-rilocazione dovesse essere eseguito e poi copiarsi, il programma originale esisterà ancora anche quando non viene utilizzato. Se il programma è dannoso e il sistema tenta di rimuoverlo, il programma attivo può semplicemente riattivare il codice originale prima che venga rimosso.