Elf

什麼是精靈魔法?

  • October 17, 2016

我以前看過關於 ELF 魔法的討論,最近是在這個安全堆棧交換問題中的評論。我之前看到過它,我在自己的啟動日誌中也看到過它。但我不確定它是什麼。

elf 上的手冊頁有點讓我頭疼,因為我不使用 C 或更低級別的語言。

作為一個使用 Linux 作為日常作業系統的人,什麼是 ELF?

就在您引用的手冊頁中:

elf - format of Executable and Linking Format (ELF) files

ELF 定義了 Linux 使用的執行檔的二進制格式。當你呼叫一個執行檔時,作業系統必須知道如何正確地將執行檔載入到記憶體中,如何解決動態庫依賴關係,然後在哪裡跳轉到載入的執行檔開始執行它。ELF 格式提供此資訊。ELF 魔法用於辨識 ELF 文件,它只是文件的前幾個字節:

% od -c -N 16 /bin/ls
0000000 177   E   L   F 002 001 001  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000020

或者

% readelf -h /bin/ls | grep Magic
 Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 

這 16 個字節明確地將文件標識為 ELF 執行檔。許多文件格式具有完成相同任務的“魔術”字節——辨識文件類型。

引用自:https://unix.stackexchange.com/questions/153352