-
-
关于dlopen函数
-
2017-11-14 15:21
3234
-
#include<stdio.h>
#include<stdlib.h>
#include<dlfcn.h>
int main()
{
int a,b;
void *p;
int (*func)(int,int);
scanf("%d%d",&a,&b);
p=dlopen("libdldl.so",RTLD_NOW);
if(p==NULL)
{
printf("dlopen error!\n");
exit(0);
}
else
printf("dlopen ok!\n");
func=dlsym(p,"max");
printf("%d and %d compare result is that %d is max\n",a,b,(*func)(a,b));
dlclose(p);
return 0;
}
程序可以正常执行,可以输出dlopen ok。
用dlopen加载so文件,这时候是不是会跳转到linker去解析这个so?我在linker里怎么抓不到log?下面是linker中dlfcn.cpp中我抓log的方法
void* dlopen(const char* filename, int flags) {
if(strcmp(filename,"libdldl.so")==0)
INFO("libdldl.so is find ");
......}
然后用adb logcat -d>log.txt 抓log 发现找不到libdldl.so。
哪位大神帮忙看下,谢谢。
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界