gpt4 book ai didi

c - C语言中,如何调用我的函数而不是系统库函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:51 26 4
gpt4 key购买 nike

<分区>

平台 - Linux

我有一个典型的需求,我需要为我的功能提供比系统提供的功能更高的优先级。

假设我有第三方库或可执行文件。它调用许多系统函数,如 strcpy 或 strlen 等。我无法修改可执行文件/库,因为我无权访问代码。

现在我已经实现了自己的 strlen 或 strcpy 函数。当第三方库或可执行文件正在执行时,它应该调用我的函数而不是系统库函数。

这可能吗?如果是,有人可以指导我如何执行此操作。

LD_PRELOAD 试验结果

根据此处的建议,我尝试使用 LD_PRELOAD。我试图覆盖 malloc 函数。

    #include <string.h>

void *malloc(int size)
{
void *ptr = NULL;
printf("Inside my malloc function\n");
ptr = malloc(size);
return ptr;
}

我将上面的代码放在一个c文件中并构建了mem.so文件并执行了下面的命令。

export LD_PRELOAD=./mem.so

所以现在我已经覆盖了 malloc 函数。

如果执行 lsclear 命令,我会得到以下结果,这是合乎逻辑的。

Inside my malloc function
Inside my malloc function
Inside my malloc function
Inside my malloc function
Inside my malloc function

看起来我重载的 malloc 函数被递归调用了。我只需要一次电话。我怎样才能做到这一点。

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