2010-09-30 54 views
2

我正在創建一個ELF可執行文件,我需要知道操作系統需要哪些部分才能加載和執行它。可用的ELF可執行文件需要哪些部分?

詳情:

 
OS:    Ubuntu 10.04 (64-bit) 
Kernel version: 2.6.32-24 
Architecture:  i386 

我認識到,下面很可能是必要的:

  • 的.text
  • 的.symtab
  • .rel.text

有其他嗎?

回答

4

"A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux "有關於如何(ab)使用各種ELF部分使可執行文件儘可能小的信息。如果您需要更多信息,它還包含指向ELF規範的鏈接。 (這也是一個相當有趣的閱讀。)也許它會告訴你你需要知道什麼?

+0

是啊。它非常有幫助!謝謝! – 2010-09-30 20:18:58

+3

嚴格地說,你不需要**任何**部分。動態加載程序使用程序頭來加載文件,而不是節頭。這篇文章確實提到了這一點,但我只是想明確提及它。如果您需要導入符號,可以通過添加PT_DYNAMIC段來完成。 – 2010-10-01 12:22:51

2

我決定嘗試系統地從GCC生成的ELF文件中剝離部分。

我能夠除去許多部分,但這些不能被刪除,具有可執行仍執行不分段錯誤:

 
.dynsym 
.dynstr 
.gnu.version_r 
.rel.plt 
.init 
.plt 
.text 
.fini 
.ctors 
.dtors 
.dynamic 
.got.plt 
.data 
.strtab 
相關問題