Wat is zelfverplaatsing?
Zelfverplaatsing is eigendom van een zeer klein aantal computerprogramma's. Deze programma's kunnen hun locaties in het geheugen wijzigen tijdens het uitvoeren. De meeste programma's hebben weinig tot geen controle over hun eigen basisprogrammering; in plaats daarvan wordt dat afgehandeld door programma's van hogere orde. Deze systemen kunnen hun locatie wijzigen door hun programmering te verplaatsen of door een kopie van zichzelf te maken. Wanneer een kopie wordt gemaakt, verandert de uitvoeringslocatie meestal in het nieuwe programma en blijft de oude code inactief.
In de meeste gevallen bevindt een uitvoerend computerprogramma zich tegelijkertijd in twee gebieden. Het bevindt zich in de fysieke opslag van de computer, zoals een harde schijf of een andere opslageenheid, en in het vluchtige geheugen. Het programma wordt tijdens de uitvoering naar vluchtig geheugen verplaatst om de toegangstijd te versnellen en sneller te laten werken. De positie op beide locaties wordt meestal bepaald door het besturingssysteem van de computer.
De locaties van deze programma's worden adressen genoemd. Deze adressen worden door het systeem en andere programma's gebruikt om snel een programma te vinden wanneer dat nodig is. Als een programma wordt opgebroken in de opslag, werkt het langzamer dan wanneer het allemaal samen is; daarom proberen de meeste systemen grotere programma's over opeenvolgende adressen op te slaan. Nogmaals, de keuze om dit te doen valt meestal op het besturingssysteem en het programma heeft er geen directe controle over.
Wanneer een programma zelfverplaatsing gebruikt, heeft het aanzienlijk meer controle over deze processen dan typische programma's. Het heeft de mogelijkheid om de adressen te beheren waarop het wordt uitgevoerd. Terwijl het in gebruik is, kan het programma de totale programmering verplaatsen van de locatie waar het zich bevindt naar een andere locatie in het geheugen van dezelfde computer. Sommige programma's kunnen slechts één van de twee adressen veranderen, terwijl andere beide kunnen veranderen.
Zelfverplaatsing is op zichzelf een ongewoon, maar geen problematisch proces. Het echte gevaar komt wanneer zelfverplaatsing wordt gebruikt in combinatie met kwaadaardige bedoelingen. Het is mogelijk dat een programma een groot aantal onverwachte dingen doet wanneer het controle over zichzelf heeft. Het kan talloze fysieke of vluchtige kopieën maken om het geheugen van een computer te verstoppen. Dit kan een herstart veroorzaken en kan een voorloper zijn van een opstartaanval.
Bovendien kan het programma back-ups van zichzelf maken om te voorkomen dat het wordt verwijderd. Als een programma met zelfverplaatsing zou worden uitgevoerd en vervolgens zou worden gekopieerd, blijft het oorspronkelijke programma bestaan, zelfs wanneer het niet wordt gebruikt. Als het programma schadelijk is en het systeem probeert het te verwijderen, kan het actieve programma eenvoudig de oorspronkelijke code opnieuw inschakelen voordat het wordt verwijderd.