O que é auto-realocação?
A auto-realocação é propriedade de um número muito pequeno de programas de computador. Esses programas podem alterar seus locais na memória durante a execução. A maioria dos programas tem pouco ou nenhum controle sobre sua própria programação básica; em vez disso, é tratado por programas de ordem superior. Esses sistemas podem alterar sua localização movendo sua programação ou criando uma cópia deles mesmos. Quando uma cópia é feita, o local de execução geralmente muda para o novo programa e o código antigo é deixado inativo.
Na maioria dos casos, um programa de computador em execução está localizado em duas áreas simultaneamente. Ele está localizado no armazenamento físico do computador, como um disco rígido ou outra unidade de armazenamento, e na memória volátil. O programa é movido para a memória volátil na execução, a fim de acelerar o tempo de acesso e fazê-lo funcionar mais rapidamente. Sua posição em ambos os locais é geralmente determinada pelo sistema operacional do computador.
Os locais desses programas são chamados de endereços. Esses endereços são usados pelo sistema e outros programas para encontrar rapidamente um programa quando necessário. Se um programa for dividido em armazenamento, ele funcionará mais lentamente do que se estiver todo junto; portanto, a maioria dos sistemas tenta armazenar programas maiores em endereços seqüenciais. Mais uma vez, a opção para fazer isso normalmente recai sobre o sistema operacional e o programa não tem controle direto sobre ele.
Quando um programa usa a realocação automática, ele tem um controle significativamente maior sobre esses processos do que os programas típicos. Ele tem a capacidade de controlar os endereços nos quais é executado. Enquanto estiver em uso, o programa pode mover sua programação total do local em que está para outro local na memória do mesmo computador. Alguns programas podem alterar apenas um dos dois endereços, enquanto outros podem alterar os dois.
Por si só, a autolocalização é um processo incomum, mas não problemático. O verdadeiro perigo ocorre quando a auto-realocação é usada junto com a intenção maliciosa. É possível que um programa faça um grande número de coisas inesperadas quando tiver controle sobre si mesmo. Ele pode criar inúmeras cópias físicas ou voláteis para entupir a memória do computador. Isso pode causar uma reinicialização e pode ser um precursor de um ataque de inicialização.
Além disso, o programa pode fazer backup de si mesmo para impedir sua remoção. Se um programa com realocação automática for executado e depois se copiar, o programa original ainda existirá mesmo quando não estiver sendo usado. Se o programa for malicioso e o sistema tentar removê-lo, o programa ativo poderá simplesmente reativar o código original antes de removê-lo.