LINUX.ORG.RU

Можно ли подменить динамический загрузчик?


0

0

Т.е. екзешник/shared библиотека слинкованы так, что используют /lib/ld-linux.so.2. А хочется запустить всё это дело под кастомной libc, установленной в кастомную директорию вместе с кастомным же ld-linux.so.2. Можно ли?..

Спасибо!

anonymous

Я не уверен, но мне помнится, /lib/ld-linux.so.2 всегда прописывается прямо в файле, так что увы...

Die-Hard ★★★★★
()

Попробуй с помощью chroot. Только нужно будет продублировать в новом корне все, что нужно этому экзешнику

kosmonavt
()
Ответ на: комментарий от bd

Кстати, никто не пробовал на место /lib/ld-linux.so.2 всунуть скрипт (или, если скрипт нельзя, то простенькую программу), которая в зависимости от настроек (ну, переменные окружения, например) вызывала бы различные кастомные ld-linux.so.2, подсовывая им свои аргументы?

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> на место /lib/ld-linux.so.2 всунуть скрипт ...
> вызывала бы различные кастомные ld-linux.so.2

не думаю, что это имеет смысл. как мы можем вызвать
ld-linux.so.2 ? только exec(). а что станет с текущим
процессом (в контекст которого грузится наш interpreter)
после еще одного exec() ?

легче заменить само приложение скриптом, который вызывает
нужный ld-linux.

idle ★★★★★
()
Ответ на: комментарий от idle

2idle:

Да, глупость сморозил...

Можно, однако, в исходниках ld-linux.so.2 поковыряться...

Die-Hard ★★★★★
()

>Т.е. екзешник/shared библиотека слинкованы так

Если цель - relocatable, то можно сделать ld --dynamic-linker=/.../myrtld myprog -o myprog_myrtld

Если же это не так(что почти наверняка), то или надо отталкиваться от того, что запущен будет именно /lib/ld-linux.so.2 или же поправить linker ручками в коде соответствующего executable(если по ширине влезет). :)

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.