gpt4 book ai didi

php - 使用 dlsym 插入库

转载 作者:行者123 更新时间:2023-11-29 02:38:07 25 4
gpt4 key购买 nike

我正在编写一个插入库来跟踪 libc 中某些库函数的使用情况,例如 open()、close()、connect() 等。它在大多数应用程序上运行良好。但是,当我尝试使用 PHP,特别是使用 PHP 的 MySQL 模块时,没有跟踪到该模块内对 libc 的函数调用(因此没有 connect()、没有 socket() 等)。 “strace”告诉我发生了系统调用 socket()、connect() 等。在模块和 libmysqlclient.so.16.0.0 上运行"file"表示它们都是动态链接的。所以应该不是静态链接引起的问题。可能是什么问题?

我使用的是 Fedora 11 64 位版本。

谢谢。

最佳答案

看来不是静态链接引起的。事实上,PHP 是动态链接到其他库的。问题在于 PHP 加载扩展的方式。

PHP 通过调用带标志 RTLD_LAZY 的 dlopen() 来加载扩展,这意味着符号只会在执行引用时解析。这会绕过 LD_PRELOAD 指定的插入。

关于php - 使用 dlsym 插入库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1621654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com