Linux LD_如何预加载更新库函数

Linux LD_如何预加载更新库函数,linux,elf,loader,libc,ld-preload,Linux,Elf,Loader,Libc,Ld Preload,我知道我们可以使用LD_PRELOAD技巧来替换libc函数,例如malloc()。那么,LD_PRELOAD到底是如何工作的呢?它是否替换GOT/PLT条目?它将预加载的库放在符号搜索路径的开头。这样,对malloc的所有引用都绑定到它的实现,而不是libc中的实现 在glibc中,您可以看到elf/rtld.c中的代码(调用\u dl\u map\u object\u deps)以及elf/dl deps.c中的\u dl\u map\u object\u deps函数的实现

我知道我们可以使用
LD_PRELOAD
技巧来替换libc函数,例如
malloc()
。那么,
LD_PRELOAD
到底是如何工作的呢?它是否替换GOT/PLT条目?

它将预加载的库放在符号搜索路径的开头。这样,对
malloc
的所有引用都绑定到它的实现,而不是libc中的实现

在glibc中,您可以看到
elf/rtld.c
中的代码(调用
\u dl\u map\u object\u deps
)以及
elf/dl deps.c
中的
\u dl\u map\u object\u deps
函数的实现