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

时间:2012-11-07 20:48:38

标签: c linux hook libc

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

请告诉我,我怎样才能获得原始dlopen()和dlsym()函数的地址?

感谢。

1 个答案:

答案 0 :(得分:3)

__libc_dlsym()是libc提供的dlsym()dlopen()__libc_dlopen()有对应关系。