Переместить связанную программу

Можно ли переместить уже связанный файл elf на другой адрес и также обновить внутренние ссылки?

Например, имея статически связанный файл elf, связанный с адресом 0x50000, как я могу переместить его на 0x1000000 и обновить указатели и адреса?


person Julio Guerra    schedule 04.07.2013    source источник


Ответы (1)


Можно ли переместить уже связанный файл elf на другой адрес

В целом: нет. Компоновщик отбрасывает записи о перемещении, необходимые для обновления внутренних ссылок в исполняемом файле.

Теперь, если ваш исполняемый файл не использует глобальные данные и не принимает адреса каких-либо функций, и вы используете архитектуру, в которой JMPs и CALLs являются pc-относительными, тогда он можно просто обновить сегменты PT_LOAD и .e_entry в сегменте Elf{32,64}_Ehdr.

person Employed Russian    schedule 05.07.2013