将自定义数据嵌入到不会由ld.so编辑mmap的ELF文件中 [英] Embedding custom data into ELF file that will not get mmap'ed by ld.so
本文介绍了将自定义数据嵌入到不会由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屋!
查看全文