首页
社区
课程
招聘
[求助]静态elf可执行文件如何动态加载一个so
发表于: 2015-5-10 10:46 15625

[求助]静态elf可执行文件如何动态加载一个so

2015-5-10 10:46
15625
一个静态elf可执行文件,有没有办法在启动的时候,使它加载一个第三方的so

1.是否有类似于windows增加PE导入表结构项的方法
2.是否有类似于windows增加一个节的方法
3.有elf 的现成工具可以推荐 的吗

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
2
可以通过LD_PRELOAD的方式让其加载指定的so文件
2015-5-10 18:24
0
雪    币: 105
活跃值: (226)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
自己写一个linker 或者,调用dlopen
2015-5-19 01:31
0
雪    币: 163
活跃值: (1874)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
ELF文件是一个二进制文件,如果自己去实现dlopen与dlsym,二进制的工作量太大了吧
2015-5-19 09:13
0
雪    币: 105
活跃值: (226)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
dlopen与dlsym是导出的函数,不想自己实现linker的话,你可以直接使用,
ps 自己写一个linker的代码量不多,不到1000行
2015-5-19 14:32
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不知道LZ要实现什么?2楼的方法不能满足吗?
如果dynamic里面有debug之类的条目,str table也能加的进去
否则的话,可能要自己重新构造一个文件了
2015-5-19 19:56
0
雪    币: 163
活跃值: (1874)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
完全静态,连/system/bin/linker都没有....
2015-5-21 00:00
0
雪    币: 163
活跃值: (1874)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
1.elf文件完全静态链接,无加载任何的so,连/system/bin/linker也都没有....  

2.不到1000行,指的是C层面 的吧。
2015-5-21 00:03
0
雪    币: 105
活跃值: (226)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
明白你的意思了,你说的静态elf文件,是一个.a的静态链接文件对吧,你可以这样子做,你引用这个静态库再写一个静态库,在你的实现代码里,任意添加你想做的事情
2015-5-24 13:14
0
雪    币: 163
活跃值: (1874)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
不是哈,是一个第三方的可执行文件
2015-5-24 21:05
0
雪    币: 105
活跃值: (226)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
哦,这样子,有三个做法:
1、在elf尾部插入shellcode,然后,修改elf文件的最后一个pt_load段头的增长该段的长度。把DT_INIT节或DT_INITARRAY的指针指向你的shellcode里,一般的加固技术也是这种做法。
2、把这个elf文件A打包到另一个elf文件B里面去,在B里干完你要干的事情后,再加载A,如果不想把A释放到文件系统里,就要自己实现一个linker。娜迦的加固也是这样做的。
3、修改elf文件里的DYNAMIC节,添加一个类型为DT_NEEDED的节点,还要把要加载的so的名字写入到DT_STRSZ节里去,由于elf文件里的里的地址都是写死的,不一定有空位置让你插一个新的结点,可能要抹掉现有的才有位置插,如果对llvm熟悉,可以利用llvm把elf文件转换成一个地址无关的lir语言,再进行修改。
2015-5-24 22:05
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
问下楼主,现在问题解决了么?近期遇到同样的问题,不知道如何入手分析
2017-5-22 17:02
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
13
我是成功加载SO了,但是    遇到  天天模拟器  就报错
2017-11-25 17:27
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
14
https://bbs.pediy.com/thread-222955.htm    我的问题贴。。。。。编译器自带的模拟器  没问题,可以加载的。但是在天天模拟器上  就  报错了,逍遥模拟器也是。。。。

2017-11-25 17:27
0
游客
登录 | 注册 方可回帖
返回