LINUX.ORG.RU

глобальный LD_PRELOAD

 , ,


0

2

Здравствуйте написал дин библиотеку для перехвата вызовов open read write... Вопрос такой как сделать чтобы моя библиотека линковалась со всеми программами ос linux после загрузке систем... Допустим LD_PRELOAD=«/имя_библиотеки.so» /bin/cat /file — соответственно будет перехватывать только из данного приложения. А нужно сделать так чтобы все методы open read write моя библиотека перехватывала во всех приложениях... ос МСВС 5.7 (порезаный ред хат)

Заменить собой системную либц? Кстати, системные вызовы в обход либц так не перехватишь же.

ilammy ★★★ ()

mv посоветовал бы, полагаю, воспользоваться systemtap. И даже с примером. Насчёт интероперабельности с конкретно названной ОС не знаю.

gag ★★★★★ ()

МСВС

Небось студентишки Отечественное IT развивают. Вставляя костыли тут и там.

anonymous ()

Допустим LD_PRELOAD=«/имя_библиотеки.so» /bin/cat /file — соответственно будет перехватывать только из данного приложения

Что мешает экспортировать эту переменную при загрузке системы? Ну или записать что нужно в ld.so.preload, как уже подсказали. В слаке так libsafe прикручивается и подменяет функции из libc.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Что мешает экспортировать эту переменную при загрузке системы?

Не все процессы наследуют переменные окружения.

anonymous ()
Ответ на: комментарий от devl547

у меня нет в ос файла /etc/ld.so.preload есть файл /etc/ld.so.conf в котором перечислены путь к папкам где лежат динамические библиотеки *.so. я так понял в этом файле нужно прописать путь до моей динамической библиотеки и перезагрузить систему тогда будет линковаться со всеми приложениями да?

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

тогда будет линковаться со всеми приложениями да?

тогда не будет линковаться со всеми приложениями нет

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

Устав запрещает самовольное создание файлов.

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

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

написал дин библиотеку для перехвата вызовов open read write...

интересно, как ты это сделал, даже не читав man ld.so:

/etc/ld.so.preload
    Файл со списком динамических ELF библиотек (через  пробел),
  которые  будут загружены перед программой.

/etc/ld.so.preload
    File containing a whitespace-separated list of ELF shared objects
  to  be loaded before the program.                                                 

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

я вообщем добавил в /etc/ld.so.preload полный путь до библиотеки сделал ldconfig в итоге мне показалось что не все программы операционки линкуются с моей библиотекой... как это можно исправить?

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

в итоге мне показалось что не все программы операционки линкуются с моей библиотекой... как это можно исправить?

перекрестись, что ли.

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

Да, статически собранные программы (напр. gcc -static) не нуждаются в резолве символов, и по этому LD_PRELOAD (и компания) работать не будет.

UPD: ответ по теме: http://reverseengineering.stackexchange.com/questions/185/how-do-i-add-functi...

KennyMinigun ★★★★★ ()
Последнее исправление: KennyMinigun (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.