Изменение файла эльфа - PullRequest
6 голосов
/ 27 апреля 2009

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

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

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

Ответы [ 3 ]

2 голосов
/ 27 апреля 2009

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

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

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

1 голос
/ 10 июня 2011

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

0 голосов
/ 27 августа 2015

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

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

...