跳转至

函数钩子

如果我们的程序使用了动态库,我们可以使用函数钩子的方式实现在运行时替换掉实际执行函数的功能。

LD_PRELOAD

通过指定 LD_PRELOAD 变量,可以预先将我们自己的动态库符号加载到加载器中,这样,在程序运行需要调用动态库中的同名函数时,就会优先搜索我们提供的动态库,从而调用的是我们自己的编写的函数。

例如,假如我们自己实现了一个 malloc,并编译到了 libmymalloc.so 中,那么就可以通过指定 LD_PRELOAD=./libmymalloc.so,在不重新编译原来的应用程序的情况下,让应用程序使用我们自己编写的 malloc


最后更新: 2022-03-28 20:26:47
本页作者: Howard Lau