Как LD_PRELOAD обновляет функцию библиотеки - PullRequest
0 голосов
/ 26 октября 2019

Я знаю, что мы можем использовать трюк LD_PRELOAD для замены функции libc, например, malloc(). Так как именно LD_PRELOAD работает? Заменяет ли это запись GOT / PLT?

1 Ответ

1 голос
/ 26 октября 2019

Это помещает предварительно загруженную библиотеку в начало пути поиска символа. Таким образом, все ссылки на malloc связаны с его реализацией, а не с реализацией в libc.

В glibc вы можете увидеть код в elf/rtld.c (вызов _dl_map_object_deps) иреализация функции _dl_map_object_deps в elf/dl-deps.c.

...