我如何获得操作系统提供的dlopen()/ dlsym()的地址

niX*_*man 5 c linux hook libc

我需要为dlsym()和dlopen()系统调用实现钩子.为了从钩子调用原始的dlsym(),我需要获取这个系统调用的地址.我尝试在so-library-constructor-function中获取地址.但我只得到钩子函数的地址.我试图指定为RTLD_DEFAULT的处理程序,以及RTLD_NEXT.使用RTLD_DEFAULT时,我得到NULL.使用RTLD_NEXT时,我得到了钩子函数的地址.dlopen()我不能用于同样的原因,因为我在dlopen()上有钩子.

请告诉我,如何获取原始dlopen()和dlsym()函数的地址?

谢谢.

Ign*_*ams 3

__libc_dlsym()dlsym()libc 提供的。dlopen()有它自己的对应物作为__libc_dlopen().