簡體   English   中英

將任意數據附加到ELF文件是否違反了ELF規范?

[英]Does appending arbitrary data to an ELF file violate the ELF spec?

我想在ELF文件中添加一些信息,但理想情況下,它需要以一種方式完成,即程序可以在不了解ELF或使用普通標准語言庫之外的工具的情況下輕松讀取此信息。 我想把這些數據簡單地附加到ELF文件的末尾(用某種哨兵來指示數據的開始,這樣讀取程序就可以向后尋找哨兵了),但我想確保這樣做不會首先違反ELF規范。 我對使用這樣的附加數據是否能夠正常運行特定加載器感興趣; 我想知道ELF規范本身是否保證任何東西,以便我可以知道不同的ELF兼容的加載器會很滿意。

我之前已經問過這樣的問題,但要么假設這個附加是好的,要么沒有直接反應:

據我所知,ELF規范在這里:

我無法通過幾次搜索確定該規范是否明確允許我想要的屬性。

規范並沒有真正說出任何關於它的內容,因此有人可能會爭論“使用尾隨數據這是未定義的行為”。 另一方面,ELF規范對其期望非常清楚:“ 部分和細分沒有指定的順序。 只有ELF標題在文件中具有固定位置。 “,它提供了足夠的空間以某種方式嵌入數據,使用一個部分,或者沒有一個[這是未引用的數據!]。

這種“數據自由”至少從20世紀80年代末開始被利用; 考慮“自解壓檔案”,其中通用解包代碼存根在尾隨數據部分上松散。

實際上,即使在非可執行數據格式(如RIFF和PNG)中也可以找到這種隱式功能。 當然,並非所有格式都允許這樣做; 特別是那些數據定義為運行到EOF而不是存儲在某個標題中的固定長度的數據。 (考慮ZIP:附加數據是不可能的,但是前置是,這導致兩個 (未修改的)解壓縮程序操作系統可以讀取EXE-ZIP。)

使用這樣的未引用數據只有一個缺點:在讀取和保存文件時,您可能會丟失此數據。

可以將額外的數據添加到ELF文件中(因為您可以向ELF添加新的段和新的部分),但是您應該(或改進)工具來處理“改進的”ELF,這可能是重要的負擔。 並且不要忘記記錄您正在做的事情(如果可能的話,在可自由訪問的文檔中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM