elf可执行文件如何动态加载一个so
2018-06-01 · 百度知道官方认证企业
腾讯电脑管家
腾讯电脑管家是腾讯公司推出的免费安全管理软件,能有效预防和解决计算机上常见的安全风险,并帮助用户解决各种电脑“疑难杂症”、优化系统和网络环境,是中国综合能力最强、最稳定的安全软件。
向TA提问
关注
展开全部
有三个做法:
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语言,再进行修改。
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语言,再进行修改。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询