Što je samopremještanje?

Samopremještanje je vlasništvo vrlo malog broja računalnih programa. Ovi programi mogu mijenjati svoje lokacije u memoriji tijekom izvođenja. Većina programa ima malu ili nikakvu kontrolu nad vlastitim osnovnim programiranjem; umjesto toga to obrađuju programi višeg reda. Ovi sustavi mogu promijeniti svoju lokaciju bilo pomicanjem svog programiranja ili stvaranjem svoje kopije. Kada se napravi kopija, mjesto izvršenja obično se mijenja u novi program, a stari kod ostaje neaktivan.

U većini slučajeva, izvršni računalni program nalazi se u dva područja istovremeno. Nalazi se u fizičkoj memoriji računala, poput tvrdog diska ili druge jedinice za pohranu, te u nestabilnoj memoriji. Program se pri izvršavanju premješta u hlapljivu memoriju kako bi se ubrzalo vrijeme pristupa i ubrzao rad. Njegov položaj na oba ova mjesta općenito je određen operativnim sustavom računala.

Lokacije tih programa nazivaju se adresama. Te adrese sustav i drugi programi koriste za brzo pronalaženje programa kada je to potrebno. Ako je program razbijen u memoriji, on će raditi sporije nego ako je sve zajedno; stoga većina sustava pokušava pohraniti veće programe preko sekvencijalnih adresa. Još jednom, izbor za to obično pada na operativni sustav i program nema izravnu kontrolu nad njim.

Kada program koristi samopremještanje, ima znatno veću kontrolu nad tim procesima od tipičnih programa. Ima mogućnost kontrole adresa na kojima se izvršava. Dok je u upotrebi, program može premjestiti svoje ukupno programiranje s mjesta na kojem se nalazi na drugo mjesto unutar memorije istog računala. Neki programi mogu promijeniti samo jednu od dvije adrese, dok drugi mogu promijeniti obje.

Samo po sebi, samopremještanje je neuobičajen, ali ne i problematičan proces. Prava opasnost dolazi kada se samopremještanje koristi zajedno sa zlonamjernom namjerom. Moguće je da program učini veliki broj neočekivanih stvari kada ima kontrolu nad sobom. Može stvoriti brojne fizičke ili nestabilne kopije kako bi začepio memoriju računala. To može uzrokovati ponovno pokretanje i može biti preteča napada pokretanja sustava.

Osim toga, program može napraviti sigurnosne kopije samog sebe kako bi spriječio njegovo uklanjanje. Ako bi se program sa samopremještanjem izvršio i potom sam kopirao, izvorni će program i dalje postojati čak i kada se ne koristi. Ako je program zlonamjeran i sustav ga pokuša ukloniti, aktivni program može jednostavno ponovno omogućiti izvorni kod prije nego što ga ukloni.