Kaj je samopreselitev?

Samopreselitev je lastnina zelo majhnega števila računalniških programov. Ti programi lahko med izvajanjem spremenijo svoje lokacije v pomnilniku. Večina programov ima malo ali nič nadzora nad lastnim osnovnim programiranjem; namesto tega to obravnavajo programi višjega reda. Ti sistemi lahko spremenijo svojo lokacijo tako, da premaknejo svoje programiranje ali ustvarijo svojo kopijo. Ko je narejena kopija, se mesto izvajanja običajno spremeni v nov program, stara koda pa ostane v mirovanju.

V večini primerov se izvajalni računalniški program nahaja na dveh območjih hkrati. Nahaja se v fizičnem pomnilniku računalnika, kot je trdi disk ali druga pomnilniška enota, in v hlapnem pomnilniku. Program se ob izvajanju premakne v hlapni pomnilnik, da se pospeši čas dostopa in deluje hitreje. Njegov položaj na obeh lokacijah na splošno določa operacijski sistem računalnika.

Lokacije teh programov se imenujejo naslovi. Te naslove uporabljajo sistem in drugi programi za hitro iskanje programa, ko je to potrebno. Če je program v pomnilniku razbit, bo deloval počasneje, kot če je vse skupaj; zato večina sistemov poskuša shraniti večje programe prek zaporednih naslovov. Še enkrat, izbira za to običajno pade na operacijski sistem in program nima neposrednega nadzora nad njim.

Ko program uporablja samopremestitev, ima bistveno večji nadzor nad temi procesi kot tipični programi. Ima možnost nadzora naslovov, na katerih se izvaja. Medtem ko je v uporabi, lahko program premakne svoje skupno programiranje z mesta, kjer je, na drugo lokacijo v pomnilniku istega računalnika. Nekateri programi lahko spremenijo samo enega od dveh naslovov, drugi pa oba.

Sama selitev je nenavaden, vendar ne problematičen proces. Resnična nevarnost nastane, ko se samopreselitev uporablja skupaj z zlonamernimi nameni. Program lahko naredi veliko nepričakovanih stvari, ko ima nadzor nad samim seboj. Ustvari lahko številne fizične ali nestanovitne kopije, da zamaši pomnilnik računalnika. To lahko povzroči ponovni zagon in je lahko predhodnik zagonskega napada.

Poleg tega lahko program sam naredi varnostne kopije, da prepreči njegovo odstranitev. Če bi se program s samoprestavitvijo izvedel in nato sam kopiral, bo izvirni program še vedno obstajal, tudi če se ne uporablja. Če je program zlonamerni in ga sistem poskuša odstraniti, lahko aktivni program preprosto znova omogoči izvirno kodo, preden jo odstrani.