Mis on enese ümberpaigutamine?

Iseseisev ümberpaigutamine on vara, mida valdab väga väike arv arvutiprogramme. Need programmid võivad täitmise ajal muuta nende asukohti mälus. Enamikul programmidel on vähe või puudub igasugune kontroll oma põhiprogrammeerimise üle; selle asemel tegelevad sellega kõrgema järgu programmid. Need süsteemid saavad oma asukohta muuta, liigutades oma programmeerimist või luues endast koopia. Kui koopia tehakse, muutub täitmiskoht tavaliselt uueks programmiks ja vana kood jäetakse seisma.

Enamasti asub täitev arvutiprogramm korraga kahes piirkonnas. See asub arvuti füüsilises mälus, nagu kõvakettal või muul salvestusseadmel, ja lenduvas mälus. Programm teisaldatakse täitmisel muutmällu, et kiirendada juurdepääsuaega ja muuta see kiiremini tööle. Selle asukoha mõlemas asukohas määrab üldiselt arvuti operatsioonisüsteem.

Nende programmide asukohti nimetatakse aadressideks. Süsteem ja teised programmid kasutavad neid aadresse, et vajadusel kiiresti programm leida. Kui programm on salvestusruumis lagunenud, töötab see aeglasemalt kui siis, kui see on kõik koos; seetõttu üritab enamik süsteeme salvestada suuremaid programme järjestikuste aadresside peale. Taaskord langeb selle valik tavaliselt operatsioonisüsteemile ja programmil pole selle üle otsest kontrolli.

Kui programm kasutab ise ümberpaigutamist, on tal nende protsesside üle oluliselt suurem kontroll kui tavalistel programmidel. Sellel on võime juhtida aadresse, millel see käivitatakse. Kui see on kasutusel, saab programm liigutada kogu programmeerimise asukohast, kus see asub, sama arvuti mälus teise kohta. Mõned programmid saavad muuta ainult ühte kahest aadressist, samas kui teised saavad muuta mõlemat.

Iseenesest on ümberpaigutamine haruldane, kuid mitte problemaatiline protsess. Tõeline oht tekib siis, kui koos pahatahtlike kavatsustega kasutatakse enda ümberpaigutamist. Programmil on võimalik teha palju ootamatuid asju, kui tal on enda üle kontroll. See võib luua arvukalt füüsilisi või lenduvaid koopiaid, et ummistada arvuti mälu. See võib põhjustada taaskäivitamise ja võib olla alglaadimisrünnaku eelkäija.

Lisaks saab programm teha endast varukoopiaid, et vältida selle eemaldamist. Kui ise ümberpaigutusega programm käivituks ja seejärel ennast kopeeriks, jääb algprogramm alles ka siis, kui seda ei kasutata. Kui programm on pahatahtlik ja süsteem üritab seda eemaldada, saab aktiivne programm algse koodi enne eemaldamist lihtsalt uuesti lubada.