【发布时间】:2021-09-20 02:49:05
【问题描述】:
可以使用 dlsym 包装诸如 printf 之类的变体函数,因为它具有 va_list 版本 vprintf。 所以,
int printf(const char *format, ...); //is equivalent to
int vprintf(const char *format, va_list ap);
引用https://stackoverflow.com/a/51627404/6353189 正好说明了这一点。
但是由于我在 linux 上没有看到克隆系统调用的 va_list 版本,所以不知道如何 把它包起来。
【问题讨论】:
-
"可以包装诸如 printf 之类的变体函数"。您似乎暗示 only 可变参数函数可以被包装。但事实并非如此——你引用的帖子并没有这么说。请描述您的原始问题以及您希望通过这种“包装”实现什么。
-
@kaylum: glibc
clone是一个可变参数函数
标签: c glibc ld-preload dlsym