我很好奇我的应用程序在运行时使用了哪些库和系统调用。所以我开始使用 LD_PRELOAD 和一些“系统调用”(如打开、访问和写入)调查我的应用程序。
但是,当我尝试预加载 dlopen 以找出加载了哪些库时,我收到了这个错误:找不到符号:
void* dlopen(const char *file, int mode){
static void* (*o_dlopen) ( const char *file, int mode )=0;
printf( "dlopen was called\n" );
o_dlopen = (void*(*)(const char *file, int mode))
dlsym(RTLD_NEXT,"dlopen");
return (*o_dlopen)( file, mode );
}
似乎是 dlsym 第二次找不到 dlopen 。我用 -ldl 和 android NDK 提供的 arm-gcc 编译了我的预加载 *.so 文件。使用 -rdynamic 也不起作用。
预加载工作正常,但不适用于 dlopen。也许你能帮我...
提前致谢