我想知道:使用LD_PRELOAD,我可以覆盖、拦截用C/C++编写的函数。是否有可能拦截用MySQL源代码编写的函数?
例如,我想要一个日志文件,包含所有MySQL连接(出于审计原因)。我将拦截mysql_real_connect() C函数是MySQL源代码,方法如下: LD_PRELOAD=my_intercepting_connect.so mysql
它(理论上)有用吗?有人做过这种事吗?或者类似的?
发布于 2011-02-05 13:02:41
使用LD_PRELOAD,您可以拦截应用程序从共享库中提取的任何符号。您无法拦截不跨越二进制边框的函数调用。因此,当您的应用程序被动态链接到mysql时,您可以拦截mysql_real_connect调用,当应用程序静态链接时,您就倒霉了。另外,您也不能拦截mysql库中的调用。
https://stackoverflow.com/questions/4906586
复制相似问题