将部分添加到ELF文件

我需要能够添加一个任意部分到ELF文件。 在这个程序中我不能使用GPL代码,所以BFD是不可能的。 我可以使用libelf / gelf来阅读部分,但文档相当稀疏,我不知道如何添加一个部分。 有人知道怎么做这个吗? 我宁愿不写我自己的ELF代码。

Solutions Collecting From Web of "将部分添加到ELF文件"

在这个关于ELF文件头的问题中有几个(可能)相关的答案。 被接受的答案提到使用objcopy向ELF文件添加部分, BSD bintools声称拥有可能适合您需求的objcopy的BSD许可实现。

我知道这是一个老问题,但我找到了一个有用的例子,帮助我将其应用到我的项目中。 (如果有人绊倒这个问题)

从Sourceware邮件归档采取

 $ echo 'int main() { puts ("Hello world"); }' | gcc -xc - -c -o hello.o $ echo "this is my special data" >mydata $ objcopy --add-section .mydata=mydata \ --set-section-flags .mydata=noload,readonly hello.o hello2.o $ gcc hello2.o -o hello $ ./hello Hello world $ objdump -sj .mydata hello 

以下链接可能有用:

  • 教程“ libelf by Example ”中有关于创建新的ELF对象的章节。
  • elftoolchain项目有详细描述libelf的API的手册页。

还没有尝试过,但是你可能会看libelf中的函数elf_newscn