20

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

4

5 回答 5

21

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

取自Sourceware Mail Archive

$ 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
于 2015-06-03T10:24:18.137 回答
20

关于 ELF file headers 这个问题有一些(可能)相关的答案。提到的接受的答案objcopy用于向 ELF 文件添加部分,并且BSD bintools声称具有 BSD 许可的实现objcopy可能适合您的需求。

于 2009-07-06T17:28:48.547 回答
3

以下链接可能有用:

于 2011-05-21T04:23:52.697 回答
2

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

于 2009-07-24T12:18:42.147 回答
1

我自己还没有尝试过,但你可以看看 libelf 中的函数 elf_newscn

于 2010-01-08T01:34:42.907 回答