首页
社区
课程
招聘
[求助]自己写一个linker然后加载另外的so文件 无法执行
发表于: 2016-5-25 20:43 5598

[求助]自己写一个linker然后加载另外的so文件 无法执行

2016-5-25 20:43
5598
根据大神的帖子 http://bbs.pediy.com/showthread.php?t=197512 和例子,自己写了一个linker,然而这个可以对so文件进行解析,也能得到函数的地址,但是不能执行。
我自己查找了一下,在载入init段初始化执行的时候没有进行执行,大神说的直接open libc.so 然后用next进行链接也是有问题的,根本就不让链接上去啊。。。
有人还自己写过linker吗?求交流!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
你的linker是怎么写的啊,求开源
2016-5-26 10:15
0
雪    币: 148
活跃值: (278)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
姿势问题,哥写的兼容2.x-6.0
2016-5-26 10:47
0
雪    币: 93
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
求大神指点!可以求个源码吗!
2016-5-26 11:59
0
雪    币: 93
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
用不了啊 你楼下的大神写的可以用 求他开源才是王道啊!
2016-5-26 12:00
0
雪    币: 93
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
可以求个qq么?想请教一下具体问题呀!
自己加载的so文件怎么链接到全局solist里呀?
2016-5-26 12:03
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
曾经我看过thomasking大神so系列文章,还算对so有点基础的,唯独他这篇文章没有看,听你这么一说我就去看了,正在学习中,我打印了一堆的日志,发现一

我发现个超级奇葩的事情,

Mini_elf_loader.c文件,其中解析过程
        //.rel.plt节地址 elf.h文件定义是23,这里打印却是17,奇怪
        case DT_JMPREL:
                LOGE("---DT_JMPREL-*d=%x",*d);//0x13c
            si->plt_rel = (Elf32_Rel*) (si->base + *d);
            break;

奇葩啊奇葩啊,怎么变成17了,实在不科学啊,,,哎,你用的elf.h那个DT_JMPREL定义的值是多少啊,我手机这里怎么打印出来变成17啊啊啊啊!!

楼主啊你的elf.h文件是那个路径下面的啊啊啊啊啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2016-5-26 18:11
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
狂晕知道了,0x17就是23啊,这个坑坑死我了,我用%x打印的日志啊,然后显示17,然后跟宏定义对不上号来,我新找的一份elf.h是10进制显示的狂晕啊,无语啊无语啊。自己把自己坑了快一下午了
2016-5-26 18:47
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
楼主啊你留下qq啊,我在调试偶像的那份代码啊,我们一起学习,一起写一个啥,thomas大神不是已经写得很清楚了吗,多点注释,再参考下linker.c,有兴趣吗
2016-5-26 18:48
0
雪    币: 93
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
行啊。。。你qq多少啊?
我目前是不进行更改,实现一个单独的link来着。
2016-5-26 19:14
0
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
楼主啊,大神给的例子你运行成功了吗,我看日志发现,跟你一样啊,执行到init_array节的第一个函数,找到了正确的地址,然后就闪退了
2016-5-26 21:18
0
雪    币: 148
活跃值: (278)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
你并不需要链入全局solist啊,只需要loader可见啊,自加载的so整个的soinfo结构体是你维护的,你链入solist了,其他动态库也无法使用,因为你没办法保证你的soinfo跟各个版本的soinfo是一致的
2016-6-7 12:14
0
游客
登录 | 注册 方可回帖
返回
//