Найти в Дзене

Linux: анализируем бинарные файлы. Часть 4. Скрипты компоновщика.

Оглавление

Скрипты компоновщика Linux

Бинарный (двоичный) код. Источник изображения: pixabay.com
Бинарный (двоичный) код. Источник изображения: pixabay.com

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

Скрипт компоновщика по умолчанию можно просмотреть с помощью команды:

ld -verbose

Часть вывода команды ld -verbose в операционной системе Ubuntu.
Часть вывода команды ld -verbose в операционной системе Ubuntu.

Программа ld имеет свой собственный язык программирования, который интерпретируется, когда программа получает на вход файлы (такие как перемещаемые объектные файлы, разделяемые библиотеки и файлы заголовков). Этот язык программирования, также используется для того, чтобы определить, как будет организован выходной файл, например исполняемая программа. К примеру, если на выходе получается исполняемый файл формата ELF, сценарий компоновщика поможет определить, какой будет структура файла и в каких сегментах будут размещаться определённые секции. Вот еще один пример: секция .bss всегда расположена в конце сегмента данных. Этот факт также определяется сценарием компоновщика. Вам наверное интересно, для чего именно, это может вам пригодиться? Во-первых, важно иметь чёткое представление о том, как происходит процесс связывания во время компиляции. Компилятор GCC использует компоновщик и некоторые другие программы для выполнения этой задачи. В некоторых случаях очень важно иметь возможность контролировать структуру исполняемого файла.

Командный язык программы ld - это довольно сложный язык и обсуждение его синтаксиса и особенностей выходит за рамки данной статьи, но я настоятельно рекомендую Вам, найти время, силы и самостоятельно его изучить, поверьте оно того стоит!

При работе с исполняемыми файлами, обратите внимание, иногда бывает так, что адреса общих сегментов могут оказаться изменёнными, впрочем, как и остальные части структуры исполняемого файла. Это указывает на то, что используется модифицированный скрипт компоновщика. Сценарий компоновщика может быть указан с помощью компилятора gcc, при помощи использования параметра -T

Другие статьи по теме анализа бинарных файлов в операционной системе Linux