Упаковка файла в исполняемый файл ELF

Я в настоящее время ищу способ добавить данные к уже скомпилированному исполняемому файлу ELF, т.е. встраиваю файл в исполняемый файл, не перекомпилировав его.

Я мог легко сделать это при помощи cat myexe mydata > myexe_with_mydata, но я не мог получить доступ к данным из исполняемого файла, потому что я не знаю размера исходного исполняемого файла.

У кого-либо есть идея того, как я мог реализовать это? Я думал о добавлении раздела к исполняемому файлу или использованию специального маркера (0xBADBEEFC0FFEE например) для обнаружения начала данных в исполняемом файле но я не знаю, существует ли более красивый способ сделать это.

Заранее спасибо.

7
задан Pierre Bourdon 24 May 2010 в 23:07
поделиться

1 ответ

Вы можете добавить файл в файл elf как специальный раздел с помощью objcopy (1) :

objcopy --addsection sname=file oldelf newelf

добавит файл в oldelf и запишет результаты в newelf (oldelf не будет изменен ) Затем вы можете использовать libbfd для чтения файла elf и извлечения раздела по имени или просто запустить свой собственный код, который читает таблицу разделов и находит ваш раздел. Убедитесь, что имя раздела не противоречит тому, что ожидает система, - главное, чтобы ваше имя не начиналось с . , все будет в порядке.

5
ответ дан 7 December 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: