提问人:Victor 提问时间:6/26/2023 最后编辑:Victor 更新时间:6/27/2023 访问量:88
Linux 内核 6.1 上的pthread_create拦截
pthread_create interception on Linux Kernel 6.1
问:
我正在尝试使用 LD_PRELOAD 拦截对 pthread 库的调用。
我成功拦截了除 .我没有收到任何错误,拦截根本不会发生。pthread_mutex_init
pthread_mutex_lock
pthread_create
我的代码在内核 5.10 (glibc 2.31) 上运行,但一旦在内核 6.1 (glibc 2.36) 上运行,它就不再工作了。但是,我需要内核 6.1 来处理代码中的其他内容,因此降级不是一种选择。
内核 5.10 和 6.1(或 glibc 2.31 和 2.36)之间的pthread_create函数有什么变化吗?
我的代码:编译为共享库,然后使用 LD_PRELOAD 加载。
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <pthread.h>
#include <stdio.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine)(void *), void *arg) {
printf("[p] pthread_create\n");
return 0
}
int pthread_mutex_init(pthread_mutex_t *mutex,
const pthread_mutexattr_t *attr) {
printf("[p] pthread_mutex_init\n");
return 0
}
[p] pthread_mutex_init
显示但未显示。[p] pthread_create
注意:我知道截获的二进制文件使用的事实。在内核 5.10 中使用相同的代码和相同的二进制文件被打印出来。pthread_create
[p] pthread_create
答: 暂无答案
评论
-Wl,--wrap=pthread_create
__wrap_pthread_create
DEBUG_PTHREAD
pthread_create()
0
pthread_t