动态链接库函数劫持
之前做过劫持 cuda runtime 动态链接库的事情,在这里记录一下:
cudaError_t cudaMalloc ( void** devPtr, size_t size )
{
if(!fp) {
fp = fopen("/home/leenldk/sc/race/ASC2021-RACE/mem.out", "w");
}
cudaError_t (*lcudaMalloc) (void**, size_t) = (cudaError_t (*) (void**, size_t))dlsym(RTLD_NEXT, "cudaMalloc");
cudaError_t ret = lcudaMalloc(devPtr, size);
printf("cudaMalloc size : %#lx %#lx\n", size, (size_t)(*devPtr));
fprintf(fp, "cudaMalloc size : %#lx %#lx\n", size, (size_t)(*devPtr));
fflush(fp);
return ret;
}
编译为动态链接库,使用 LD_PRELOAD
预加载
update 2022.11.2
C++ 动态库 加载,卸载 时调用函数 :
static void init() __attribute__((constructor));
void init() {}
static void fini() __attribute__((destructor));
void fini() {}