c - 如何获取操作系统提供的 dlopen()/dlsym() 地址

标签 c linux hook libc

我需要为 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/

相关文章:

python - 在导入钩子(Hook)中获取完整的模块名称

c - 编辑源文件后,“make”不会重新编译

c - 段错误(核心已转储)C

linux - 从 CVE 获取受影响的包和版本?

java - Youtrack 安装,未找到 Java

c - Windows 键盘 Hook 无法作为服务运行

objective-c - 有没有办法在系统范围内注入(inject) OS X 系统框架?

c - 数组中不同的唯一元素

c - “如何在C中修复错误的加密程序”

linux - 将带有日期的 stderr 重定向到来自 Cron 的日志文件