首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓系统上的LD_PRELOADING dlopen

安卓系统上的LD_PRELOADING dlopen
EN

Stack Overflow用户
提问于 2015-06-11 14:14:28
回答 1查看 542关注 0票数 1

我对我的应用程序使用了哪些库和系统调用感到好奇,而它的running.So我开始研究我的应用程序与LD_PRELOAD和一些“系统调用”,如打开,访问和编写。

但是当我试图预加载dlopen时,为了找出加载了哪些库,我得到了这个错误: Symbol not found:

代码语言:javascript
复制
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。也许你能帮我..。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-04-04 09:50:43

Android dlopen是由链接器提供的,因此在从预加载的库中查找dlopen符号时,您需要使用RTLD_DEFAULT。请参阅:bionic/libdl/libdl.cbionic/linker/linker.cpp

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30772984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档