Kas yra savęs perkėlimas?

Savarankiškas persikėlimas yra nuosavybė, kurią turi labai mažas kompiuterių programų skaičius. Vykdydamos šios programos gali pakeisti savo vietas atmintyje. Dauguma programų beveik nekontroliuoja savo bazinio programavimo; vietoj to tvarko aukštesnės eilės programos. Šios sistemos gali pakeisti savo vietą perkeldamos savo programavimą arba sukurdamos savo kopiją. Kai padaroma kopija, vykdymo vieta paprastai pakeičiama į naują programą, o senasis kodas paliekamas neaktyvus.

Daugeliu atvejų vykdanti kompiuterinė programa vienu metu yra dviejose srityse. Jis yra kompiuterio fizinėje atmintyje, pavyzdžiui, standžiajame diske ar kitame saugojimo bloke, ir nepastovioje atmintyje. Vykdant programa perkeliama į nepastovią atmintį, kad būtų pagreitintas prieigos laikas ir ji veiktų greičiau. Jo padėtį abiejose šiose vietose paprastai lemia kompiuterio operacinė sistema.

Šių programų vietos vadinamos adresais. Šiuos adresus naudoja sistema ir kitos programos, kad prireikus greitai rastų programą. Jei programa suskaidoma saugykloje, ji veiks lėčiau nei visa kartu; todėl dauguma sistemų didesnes programas bando saugoti nuosekliais adresais. Vėlgi, pasirinkimas tai padaryti paprastai tenka operacinei sistemai, o programa jos tiesiogiai nekontroliuoja.

Kai programa naudoja savarankišką perkėlimą, ji žymiai labiau kontroliuoja šiuos procesus nei įprastos programos. Ji turi galimybę valdyti adresus, kuriais ji vykdoma. Kai ji yra naudojama, programa gali perkelti visą programavimą iš vietos, kurioje ji yra, į kitą vietą to paties kompiuterio atmintyje. Kai kurios programos gali pakeisti tik vieną iš dviejų adresų, o kitos gali pakeisti abu.

Savarankiškas persikėlimas yra neįprastas, bet ne problematiškas procesas. Tikrasis pavojus kyla tada, kai perkėlimas į kitą vietą naudojamas kartu su piktavališkais ketinimais. Programa gali padaryti daug netikėtų dalykų, kai ji gali kontroliuoti save. Jis gali sukurti daugybę fizinių ar nepastovių kopijų, kad užkimštų kompiuterio atmintį. Tai gali sukelti paleidimą iš naujo ir gali būti įkrovos atakos pirmtakas.

Be to, programa gali pasidaryti atsargines kopijas, kad išvengtų jos pašalinimo. Jei programa su savaiminiu perkėlimu būtų vykdoma ir nukopijuota pati, pradinė programa vis tiek išliks net tada, kai ji nenaudojama. Jei programa yra kenkėjiška ir sistema bando ją pašalinti, aktyvi programa gali tiesiog iš naujo įjungti pradinį kodą prieš jį pašalindama.