5

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

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

谢谢。

4

1 回答 1

3

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

于 2012-11-07T21:37:40.383 回答