Изменение файла эльфа
Я хотел бы добавить новый флаг в файл эльфа. Этот флаг должен быть доступен ядру в дескрипторе процесса. Моей первой идеей было использовать libelf, но, к сожалению, в Ubuntu, похоже, есть ошибка. Elfedit, вероятно, был бы хорошим инструментом, но я не нашел версию для Linux, в частности Ubuntu.
Итак, мне интересно, может ли кто-нибудь подсказать мне, есть ли какой-нибудь другой полезный инструмент для добавления собственного флага в файл эльфа?
Большое спасибо за вашу помощь!
3 ответа
Люди, которые могут модифицировать ядро, чтобы использовать новый флаг, вероятно, не будут спрашивать, как добавить флаг в библиотеки ELF.
Итак, как вы планируете, чтобы ядро использовало этот новый флаг? Какова цель флага?
Поскольку вы добавляете в стандартную библиотеку libelf, не можете ли вы исправить ошибку для Ubuntu и сообщить им, что вы сделали это (сделайте это исправление доступным для них - хотя им, вероятно, потребуется передать его обратно по цепочке),
Пожалуйста, посмотрите на библиотеку ELFIO. Он содержит примеры WriteObj и Writer. Используя библиотеку, вы сможете создавать и / или изменять двоичные файлы ELF.
(хотя старый вопрос, но для справки я пишу ответ на основе моего собственного опыта)
Я предлагаю прочитать файл elf в структуре памяти, внести изменения в флаги и загрузить память процесса своей структурой в памяти. Этот метод потребует меньше усилий по сравнению с исправлением ошибок. Для начала проверьте файл elf.c на наличие elf, заголовка программы, структуры заголовков разделов. Вы можете прочитать заголовок файла в своей структуре, который должен иметь три члена структуры для elf, program, section. начните читать в своей структуре из заголовка эльфа. затем прочитайте заголовок программы по смещению, указанному в заголовке elf (итеративно для всех заголовков программы). Таким же образом вы можете читать все разделы через заголовки разделов. инкапсуляция структуры 3 заголовков в вашей собственной структуре также дает вам возможность иметь дополнительные необходимые данные в вашем другом члене структуры.