【发布时间】:2019-10-25 21:30:45
【问题描述】:
我知道我们可以使用 LD_PRELOAD 技巧来替换 libc 函数,例如 malloc()。那么LD_PRELOAD 究竟是如何工作的呢?它会取代 GOT/PLT 条目吗?
【问题讨论】:
标签: linux elf loader libc ld-preload
我知道我们可以使用 LD_PRELOAD 技巧来替换 libc 函数,例如 malloc()。那么LD_PRELOAD 究竟是如何工作的呢?它会取代 GOT/PLT 条目吗?
【问题讨论】:
标签: linux elf loader libc ld-preload
它将预加载的库放在符号搜索路径的开头。这样,所有对 malloc 的引用都绑定到它的实现,而不是 libc 中的实现。
在glibc中可以看到elf/rtld.c中的代码(对_dl_map_object_deps的调用)和elf/dl-deps.c中_dl_map_object_deps函数的实现。
【讨论】: