Итак, все, вероятно, знают, что glibc /lib/libc.so.6
может быть запущен в оболочке, как обычный исполняемый файл, в случае которого он печатает информацию о своей версии и выходит. Это делается путем определения точки входа в .so. В некоторых случаях было бы интересно использовать это и для других проектов. К сожалению, низкоуровневая точка входа, которую вы можете установить с помощью параметра ld -e, немного слишком низка: динамический загрузчик недоступен, поэтому вы не можете вызвать какие-либо правильные функции библиотеки. glibc по этой причине реализует системный вызов write() через голый системный вызов в этой точке входа.
Теперь мой вопрос: может ли кто-нибудь подумать о том, как можно было бы загружать полный динамический компоновщик из этой точки входа, чтобы можно было получить доступ к функциям из других .so?