Измените внутреннее имя библиотеки OpenSSL с помощью команды ‘chatr’ на HPIA

#c #unix #makefile

#c #unix #makefile

Вопрос:

Мне нужно изменить внутреннее имя разделяемой библиотеки libcrypto.so.0.9.8 на libcrypto.so для определенной цели. Я не могу сделать это с помощью команды chatr, которая отображает только внутреннее имя.

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

Заранее спасибо.

Ответ №1:

Используйте переменную среды LD_PRELOAD. Это позволяет вам вставлять библиотеки.

По сути, вы настраиваете символическую ссылку в каталоге, которым вы управляете, с именем libcrypto.so.0.9.8, которая указывает на библиотеку, которую вы хотите использовать, (я полагаю): /lib/ libcrypto.so. Наведите LD_PRELOAD на символическую ссылку.

LD_PRELOAD не будет работать с программами setuid в HPUX.

Вы тщательно проверили, что все точки входа, которые вы используете в своем коде, находятся в libcrypto.so ?

Поскольку я понятия не имею, что происходит, это может быть не идеальным решением. Это лучшее предположение.

Комментарии:

1. Спасибо за ответ. Даже если у вас есть символическая ссылка, загрузчик фокусируется только на внутреннем имени. LD_PRELOAD — хороший вариант, хотя в данном случае это не сработало бы. В итоге я перекомпилировал OpenSSL, удалив параметр h в Makefile.shared для hpux.