Раньше я видел дискуссию о магии ELF, совсем недавно комментарии в этом вопросе об обмене стека безопасности . Я видел это упомянутое ранее, и я видел это в моих собственных журналах загрузки .. Но я не уверен, что это такое.
Страница справочника по эльфу немного над моей головой, так как я не говорю на языках Си или более низкого уровня.
Как человек, который использует Linux в качестве повседневной операционной системы, что такое ELF?
Ответы:
Прямо со справочной страницы, на которую вы ссылаетесь:
ELF определяет двоичный формат исполняемых файлов, используемых Linux. Когда вы вызываете исполняемый файл, ОС должна знать, как правильно загрузить исполняемый файл в память, как разрешить динамические зависимости библиотеки, а затем куда перейти в загруженный исполняемый файл, чтобы начать его выполнение. Формат ELF предоставляет эту информацию. Волшебство ELF используется для идентификации файлов ELF и представляет собой лишь первые несколько байтов файла:
или
Эти 16 байтов однозначно определяют файл как исполняемый файл ELF. Многие форматы файлов имеют «волшебные» байты, которые выполняют одну и ту же задачу - определение типа файла.
источник
readelf
подтверждает, что это 16 байтов.e_ident
), из которых первые 4 байта являются магическим числом (EI_MAG0
сквознымEI_MAG3
)/bin
, конечно же, почти наверняка является двоичным файлом ELF. Какой-то случайный файл, который вы скачали, хотя ... ничего не сказано«Магические числа» - это имя, присваиваемое константным последовательностям байтов (обычно) в начале файлов, используемое для обозначения этих файлов как файлов определенного формата. Они служат аналогичной цели расширений файлов.
См. Запись файла жаргона для получения дополнительной информации.
Например, изображения PNG всегда начинаются с одних и тех же восьми байтов: 137 80 78 71 13 10 26 10
Следовательно, магические числа ELF - это байты в начале файлов elf, которые идентифицируют их как таковые.
источник