Переменные окружения связанные с компоновщиком Linux
Концепции динамического загрузчика / компоновщика, а также связывания (линковки) - это обязательные компоненты процесса компоновки и исполнения программы. В Linux есть несколько способов изменить поведение динамического компоновщика. Вот несколько атрибутов, связанных с компоновщиком, которые могут быть Вам полезны:
Переменная среды LD_PRELOAD
В переменной среды LD_PRELOAD можно указать путь к библиотеке, которая должна быть динамически скомпонованна перед любыми другими библиотеками. Это позволяет функциям и символам из предварительно загруженной библиотеки, переопределить функции и символы из других библиотек, которые подключаются позднее. По сути, это позволяет вам выполнять изменения в реальном времени во время исполнения, путём перенаправления функций разделяемых библиотек. Этот приём может использоваться для обхода кода анти-отладки и для руткитов пользовательского уровня.
Переменная окружения LD_SHOW_AUXV
Переменная окружения LD_SHOW_AUXV сообщает загрузчику программы, что нужно отображать вспомогательный вектор во время процесса исполнения. Вспомогательный вектор - это информация, которая размещается в стеке программы (с помощью процедуры загрузки ядром исполняемого файла ELF) с информацией, которая передаётся в динамический компоновщик совместно с некоторой другой информацией о программе. Если, Вы, например, захотите получить адрес памяти страницы vDSO в образе процесса (данный адрес также может быть получен из файла maps, как уже говорилось ранее), вы должны выполнить поиск строки AT_SYSINFO.