将自定义数据嵌入到不会由ld.so编辑mmap的ELF文件中 [英] Embedding custom data into ELF file that will not get mmap'ed by ld.so

查看:14
本文介绍了将自定义数据嵌入到不会由ld.so编辑mmap的ELF文件中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个500MB的文件,其中包含一些自定义数据(即ZIP存档)。我希望将其嵌入到我的ELF可执行文件中,以便在分发ELF文件时,我只能发送1个文件,而不是2个文件。

问题是,当我的应用程序启动时,我不希望操作系统自动加载这个500MB的ZIP数据。我希望我的应用程序打开它自己的文件,找到数据,并以这种"懒惰"的方式使用这些数据。

在Windows上,可以将这个500MB的ZIP文件放到PE资源中。这样,此数据将不会由可执行加载程序加载。

ELF格式中有没有一个地方可以嵌入如此大量的数据,使其不会被操作系统自动映射?

我知道我可以将数据附加到文件的末尾,然后操作系统应该在加载阶段跳过它。但是否可以使用ELF结构来嵌入此数据?

推荐答案

ELF格式中有没有一个地方可以嵌入如此大量的数据,使其不会被操作系统自动映射?

这对于ELF来说是微不足道的--只需将数据放入未分配的节中。

使用objcopy将任意数据文件转换为可以链接到的.o是最简单的:

objcopy -I binary -B i386 -O elf64-x86-64 
  --rename-section .data=.mydata,readonly,contents src dst.o

这篇关于将自定义数据嵌入到不会由ld.so编辑mmap的ELF文件中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆