[我知道我们可以使用LD_PRELOAD技巧来替换libc函数,例如malloc()。那么LD_PRELOAD到底如何工作?它会取代GOT / PLT条目吗?
LD_PRELOAD
malloc()
它将预加载的库放在符号搜索路径的开头。这样,对malloc的所有引用都绑定到其实现,而不是libc中的实现。
malloc
在glibc中,您可以在elf/rtld.c中看到代码(对_dl_map_object_deps的调用),并在_dl_map_object_deps中看到elf/dl-deps.c函数的实现。
elf/rtld.c
_dl_map_object_deps
elf/dl-deps.c