Я в настоящее время ищу способ добавить данные к уже скомпилированному исполняемому файлу ELF, т.е. встраиваю файл в исполняемый файл, не перекомпилировав его.
Я мог легко сделать это при помощи cat myexe mydata > myexe_with_mydata
, но я не мог получить доступ к данным из исполняемого файла, потому что я не знаю размера исходного исполняемого файла.
У кого-либо есть идея того, как я мог реализовать это? Я думал о добавлении раздела к исполняемому файлу или использованию специального маркера (0xBADBEEFC0FFEE
например) для обнаружения начала данных в исполняемом файле но я не знаю, существует ли более красивый способ сделать это.
Заранее спасибо.
Вы можете добавить файл в файл elf как специальный раздел с помощью objcopy (1) :
objcopy --addsection sname=file oldelf newelf
добавит файл в oldelf и запишет результаты в newelf (oldelf не будет изменен )
Затем вы можете использовать libbfd для чтения файла elf и извлечения раздела по имени или просто запустить свой собственный код, который читает таблицу разделов и находит ваш раздел. Убедитесь, что имя раздела не противоречит тому, что ожидает система, - главное, чтобы ваше имя не начиналось с .
, все будет в порядке.