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 ★★★★★
()
Ответ на: комментарий от devl547

ну создал а дальше собственно что писать в него?

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

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

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

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

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

kold2015
() автор топика
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от KennyMinigun

я просто слышал что не все вроде бы программы могут линковаться с динамической библиотекой...

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

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

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

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