我需要为 dlsym() 和 dlopen() 系统调用实现 Hook 。为了从 Hook 中调用原始的 dlsym(),我需要获取此系统调用的地址。我尝试在 so-library-constructor-function 中获取地址。但我只得到钩子(Hook)函数的地址。我尝试将处理程序指定为 RTLD_DEFAULT 和 RTLD_NEXT。使用 RTLD_DEFAULT 时,我得到 NULL。使用 RTLD_NEXT 时,我得到了 Hook 函数的地址。 dlopen() 出于同样的原因我不能使用,因为我在 dlopen() 上有钩子(Hook)。
请告诉我,如何获取原始 dlopen() 和 dlsym() 函数的地址?
谢谢。
最佳答案
__libc_dlsym()
是 libc 提供的 dlsym()
。 dlopen()
有自己的对应物 __libc_dlopen()
。
关于c - 如何获取操作系统提供的 dlopen()/dlsym() 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13277950/