TGViewer
.NET Kings .NET Kings @netskings · 7.38K subscribers
Post #575 4.15K
👁‍🗨Hello world~

Разбор ELF: Формат объектных файлов под микроскопом

• Я уже писал про ELF файлы, но тогда у меня была цель просто рассказать про них то, с чем вы будете сталкиваться чаще всего. Сегодня же я хочу разобрать эту тему более досконально. Информацию брал отсюда.

• И так при сборке программ на C, C++ или даже ассемблере, результатом компиляции становятся объектные файлы. Это промежуточные бинарные файлы, используемые компоновщиком (linker) для создания исполняемого приложения или разделяемой библиотеки, существует их три основных типа:

• Перемещаемый файл (relocatable file) содержит код и данные, предназначенные для дальнейшей компоновки. Используется как часть проекта, а не запускается напрямую.

• Исполняемый файл (executable file) содержит программу, пригодную для выполнения.

• Разделяемый объектный файл (shared object file) содержит код и данные, пригодные для компоновки в двух контекстах. Во-первых, редактор связей может обрабатывать его совместно с другими перемещаемыми и разделяемыми объектными файлами для создания другого объектного файла. Во-вторых, динамический компоновщик объединяет его с исполняемым файлом и другими разделяемыми объектами для создания образа процесса.

• Все эти типы файлов используют формат ELF, стандартный для Unix систем, включая Linux. Он универсален, поддерживает компоновку и запуск, и одинаково подходит как для приложений, так и для библиотек.

• Структура ELF-файла (подробнее на изображении):

• Заголовок ELF: всегда в начале файла. Содержит "дорожную карту" файла.
• Секции (Sections): основная информация, код, данные, таблицы символов, информация о переадресации и т. д.
• Таблица заголовков секций: содержит сведения о каждой секции (имя, размер, смещение и т. д.).
• Таблица заголовков программы (Program Headers): нужна для создания образа процесса при запуске.

• Файлы, используемые только при сборке, могут не содержать заголовки программы. А исполняемые файлы, наоборот, могут обойтись без таблицы секций.

• Порядок секций и заголовков внутри ELF-файла может быть произвольным, кроме ELF-заголовка, который всегда находится в начале.

• Формат ELF был создан для того, чтобы быть удобным как для линкера, так и для загрузчика (loader).

• В следующих постах узнаем про представление данных и представление символов. Удачи!

• Поддержать автора монеткой: @v_meshke
  • ❤ 10
  • 👍 2
  • 🔥 2
  • ☃ 1
More from @netskings
  1. Oct 6, 2026👁‍🗨Hello world~ Разбор ELF: Формат объектных файлов под микроскопом Секции • В первом по…
  2. Oct 5, 2026Освой сети и командную строку с лучшими обучающими каналами 🤩 Network Admin - обучающий к…
  3. Oct 5, 2026👁‍🗨Hello world~ Компилятор: Путь от исходника до исполняемого файла. Обзор и практика на…
  4. Oct 4, 2026👁‍🗨Hello world~ Когда проблема не в коде, а в замысле. OWASP A06: Insecure Design • Inse…
  5. Oct 3, 2026👁‍🗨Hello world~ Изучаем сеть: Как коммутатор запоминает устройства • Коммутатор передаёт…
  6. Oct 2, 2026👁‍🗨Hello world~ Парадокс дней рождения: почему коллизии хешей находить проще, чем кажетс…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →