Co to jest samorelokacja?

Samoprzeprowadzka jest własnością bardzo małej liczby programów komputerowych. Programy te mogą zmieniać swoje lokalizacje w pamięci podczas wykonywania. Większość programów ma niewielką lub żadną kontrolę nad własnym programowaniem podstawowym; zamiast tego jest to obsługiwane przez programy wyższego rzędu. Systemy te mogą zmieniać swoją lokalizację, przenosząc swoje oprogramowanie lub tworząc własną kopię. Po wykonaniu kopii lokalizacja wykonania zwykle zmienia się na nowy program, a stary kod pozostaje uśpiony.

W większości przypadków wykonywany program komputerowy znajduje się jednocześnie w dwóch obszarach. Znajduje się w fizycznej pamięci komputera, takiej jak dysk twardy lub inna jednostka pamięci, oraz w pamięci ulotnej. Program podczas wykonywania jest przenoszony do pamięci ulotnej w celu przyspieszenia czasu dostępu i przyspieszenia działania. Jego pozycja w obu tych lokalizacjach jest zwykle określana przez system operacyjny komputera.

Lokalizacje tych programów nazywane są adresami. Adresy te są używane przez system i inne programy, aby w razie potrzeby szybko znaleźć program. Jeśli program jest podzielony w pamięci, będzie działał wolniej, niż gdyby był cały razem; dlatego większość systemów próbuje przechowywać większe programy pod sekwencyjnymi adresami. Po raz kolejny wybór, aby to zrobić, zwykle spada na system operacyjny, a program nie ma nad nim bezpośredniej kontroli.

Gdy program korzysta z samorelokacji, ma znacznie większą kontrolę nad tymi procesami niż typowe programy. Ma możliwość kontrolowania adresów, pod którymi wykonuje. Podczas używania program może przenieść swoje całe programowanie z lokalizacji, w której się znajduje, do innej lokalizacji w pamięci tego samego komputera. Niektóre programy mogą zmienić tylko jeden z dwóch adresów, podczas gdy inne mogą zmienić oba.

Samo relokacja jest procesem rzadkim, ale nie problematycznym. Prawdziwe niebezpieczeństwo pojawia się, gdy samorelokacja jest używana wraz ze złośliwymi zamiarami. Program może zrobić wiele nieoczekiwanych rzeczy, gdy ma nad sobą kontrolę. Może tworzyć wiele fizycznych lub ulotnych kopii w celu zatkania pamięci komputera. Może to spowodować ponowne uruchomienie i może być prekursorem ataku rozruchowego.

Ponadto program może tworzyć kopie zapasowe samego siebie, aby zapobiec jego usunięciu. Jeśli program z samorelokacją miałby się wykonać, a następnie skopiować się, oryginalny program będzie nadal istniał, nawet jeśli nie jest używany. Jeśli program jest złośliwy, a system próbuje go usunąć, aktywny program może po prostu ponownie włączyć oryginalny kod, zanim zostanie usunięty.