gpt4 book ai didi

c - 选择性调用写包装器

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:42 24 4
gpt4 key购买 nike

我已经拦截了写入库函数来重定向写入,但只希望将一些写入 uae 包装器,而其他(用于写入套接字)应该转到原始 libc 函数。已尝试使用 dlsym 但似乎没有用。

已经使用了LD-PRELOAD环境变量

希望得到帮助

编辑:部分代码

int call_execute()
{
.....
static ssize_t (*real_write)(int,const void*,size_t) = NULL;
...

real_write= (size_t(*)(int,const void*,size_t)dlsym(RTLD_NEXT,"write");

...
real_write(sockfd,argcalls[i],strlen(argcalls[i]));

}

最佳答案

#include <unistd.h>
#include <stdio.h>
#include <dlfcn.h>

typedef ssize_t (*readf)(int, void *, size_t);

ssize_t
read(int fd, void *buf, size_t count) {
readf p = dlsym(RTLD_NEXT, "read");
printf("passing read with %d bytes\n", count);
return p(fd, buf, count);
}

$gcc -W -Wall -shared -o/tmp/libpre.so test.c -ldl

$env LD_PRELOAD=/tmp/libpre.so cat/dev/null

上面应该产生这样的输出:

通过 32768 字节读取

关于c - 选择性调用写包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6492828/

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