2009-07-06 85 views
16

我需要能夠將任意節添加到ELF文件。我不能在這個程序中使用GPL代碼,所以BFD是不可能的。我可以使用libelf/gelf來讀取部分,但文檔對於這些部分來說相當稀少,而且我無法弄清楚如何添加部分。有人知道怎麼做這個嗎?我寧願不寫我自己的ELF代碼。將節添加到ELF文件

回答

17

this question about ELF file headers有幾個(可能)相關答案。使用objcopy向ELF文件添加部分時提及的接受答案,BSD bintools聲稱擁有可能適合您需要的objcopy的BSD許可實施。

+0

採取這看起來很有希望。謝謝 – c4757p 2009-07-06 18:51:39

1

還沒有嘗試過(還)自己,但你可能看功能elf_newscn在了libelf

14

我知道這是一個老問題,但我找到了一個工作示例,幫助我將它應用於我的項目。 (萬一有人絆倒在這個問題)

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