c - 将部分添加到 ELF 文件

标签 c linux elf

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

最佳答案

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

取自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

关于c - 将部分添加到 ELF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1088128/

相关文章:

gcc - 64 位平台上的 ELF 目标文件大小限制是多少?

c - 如何一次读取 14 位二进制文​​件而不是 8 位?

字符计数程序无法正常工作

linux - 如何记录 bash 脚本中启动的作业的 pid

ruby-on-rails - 如何在 Amazon Linux 上将 selenium 与 chrome 驱动程序一起使用。错误:Selenium::WebDriver::Error::UnknownError:未知错误:找不到 Chrome 二进制文件

c++ - 我是不是使用检测例程 (pin) 得到了错误的 ebp,还是我在这里遗漏了什么?

C/UNIX 从输入读取(受字符计数和超时限制)

c - 使用 getchar() 读取整数

linux - 查看文件的实时日志,仅回显符合特定条件的行

linker - 解释 readelf -S 输出