将部分添加到ELF文件

时间:2009-07-06 17:11:36

标签: c linux elf

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

5 个答案:

答案 0 :(得分:17)

this question about ELF file headers中有一些(可能)相关的答案。接受的答案提到使用objcopy将部分添加到ELF文件,BSD bintools声称拥有可能符合您需求的BSD许可的objcopy实现。

答案 1 :(得分:16)

我知道这是一个老问题,但我找到了一个帮助我将它应用到我的项目的工作示例。 (万一有人偶然发现这个问题)

取自Sourceware Mail Archiv

$ echo 'int main() { puts ("Hello world"); }' | gcc -x c - -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

答案 2 :(得分:3)

以下链接可能很有用:

答案 3 :(得分:2)

看看ELFsh,它现在是ERESI项目的一部分 http://www.eresi-project.org/ 他们有很多文档和很酷的工具使用。

答案 4 :(得分:1)

我自己还没试过,但是你可以看一下libelf中的函数elf_newscn