能力值:
( LV8,RANK:140 )
|
-
-
2 楼
可以通过LD_PRELOAD的方式让其加载指定的so文件
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
自己写一个linker 或者,调用dlopen
|
能力值:
( LV5,RANK:60 )
|
-
-
4 楼
ELF文件是一个二进制文件,如果自己去实现dlopen与dlsym,二进制的工作量太大了吧
|
能力值:
( LV5,RANK:60 )
|
-
-
5 楼
dlopen与dlsym是导出的函数,不想自己实现linker的话,你可以直接使用,
ps 自己写一个linker的代码量不多,不到1000行
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
不知道LZ要实现什么?2楼的方法不能满足吗?
如果dynamic里面有debug之类的条目,str table也能加的进去
否则的话,可能要自己重新构造一个文件了
|
能力值:
( LV5,RANK:60 )
|
-
-
7 楼
完全静态,连/system/bin/linker都没有....
|
能力值:
( LV5,RANK:60 )
|
-
-
8 楼
1.elf文件完全静态链接,无加载任何的so,连/system/bin/linker也都没有....
2.不到1000行,指的是C层面 的吧。
|
能力值:
( LV5,RANK:60 )
|
-
-
9 楼
明白你的意思了,你说的静态elf文件,是一个.a的静态链接文件对吧,你可以这样子做,你引用这个静态库再写一个静态库,在你的实现代码里,任意添加你想做的事情
|
能力值:
( LV5,RANK:60 )
|
-
-
10 楼
不是哈,是一个第三方的可执行文件
|
能力值:
( 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语言,再进行修改。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
问下楼主,现在问题解决了么?近期遇到同样的问题,不知道如何入手分析
|
能力值:
(RANK:10 )
|
-
-
13 楼
我是成功加载SO了,但是 遇到 天天模拟器 就报错
|
能力值:
(RANK:10 )
|
-
-
14 楼
https://bbs.pediy.com/thread-222955.htm 我的问题贴。。。。。编译器自带的模拟器 没问题,可以加载的。但是在天天模拟器上 就 报错了,逍遥模拟器也是。。。。
|
|
|