Изменение файла эльфа

Я хотел бы добавить новый флаг в файл эльфа. Этот флаг должен быть доступен ядру в дескрипторе процесса. Моей первой идеей было использовать libelf, но, к сожалению, в Ubuntu, похоже, есть ошибка. Elfedit, вероятно, был бы хорошим инструментом, но я не нашел версию для Linux, в частности Ubuntu.

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

Большое спасибо за вашу помощь!

3 ответа

Люди, которые могут модифицировать ядро, чтобы использовать новый флаг, вероятно, не будут спрашивать, как добавить флаг в библиотеки ELF.

Итак, как вы планируете, чтобы ядро ​​использовало этот новый флаг? Какова цель флага?

Поскольку вы добавляете в стандартную библиотеку libelf, не можете ли вы исправить ошибку для Ubuntu и сообщить им, что вы сделали это (сделайте это исправление доступным для них - хотя им, вероятно, потребуется передать его обратно по цепочке),

Пожалуйста, посмотрите на библиотеку ELFIO. Он содержит примеры WriteObj и Writer. Используя библиотеку, вы сможете создавать и / или изменять двоичные файлы ELF.

(хотя старый вопрос, но для справки я пишу ответ на основе моего собственного опыта)

Я предлагаю прочитать файл elf в структуре памяти, внести изменения в флаги и загрузить память процесса своей структурой в памяти. Этот метод потребует меньше усилий по сравнению с исправлением ошибок. Для начала проверьте файл elf.c на наличие elf, заголовка программы, структуры заголовков разделов. Вы можете прочитать заголовок файла в своей структуре, который должен иметь три члена структуры для elf, program, section. начните читать в своей структуре из заголовка эльфа. затем прочитайте заголовок программы по смещению, указанному в заголовке elf (итеративно для всех заголовков программы). Таким же образом вы можете читать все разделы через заголовки разделов. инкапсуляция структуры 3 заголовков в вашей собственной структуре также дает вам возможность иметь дополнительные необходимые данные в вашем другом члене структуры.

Другие вопросы по тегам