ELF Magic Nedir?


26

Daha önce bu Güvenlik yığını değişimi sorusundaki yorumlar hakkında ELF sihri hakkında bir tartışma gördüm . Daha önce de bahsettiğimi ve kendi önyükleme günlüklerimde gördüm. Ama ne olduğundan emin değilim.

Elf'teki man sayfası , C veya alt seviye dilleri yapmadığım için başımın biraz üzerinde.

Her gün işletim sistemi olarak Linux kullanan biri olarak, ELF nedir?



13
Başlık, rpg stackexchange için daha uygundur.
Cthulhu

Yanıtlar:


37

Tam referansta olduğunuz man sayfasından:

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

ELF, Linux tarafından kullanılan çalıştırılabilir dosyaların ikili formatını tanımlar. Bir yürütülebilir dosyayı çağırdığınızda, işletim sistemi yürütülebilir dosyayı doğru şekilde nasıl yükleyeceğinizi, dinamik kütüphane bağımlılıklarını nasıl çözeceğinizi ve daha sonra onu çalıştırmak için yüklenen yürütülebilir dosyaya nereye atlayacağınızı bilmelidir. ELF formatı bu bilgiyi sağlar. ELF magic, ELF dosyalarını tanımlamak için kullanılır ve bir dosyanın sadece ilk birkaç baytıdır:

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

veya

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

Bu 16 bayt açıkça bir dosyayı ELF çalıştırılabilir olarak tanımlar. Birçok dosya formatı aynı görevi gerçekleştiren "sihirli" baytlara sahiptir - bir dosya türünü tanımlar.


8
Gerçek sihir sadece ilk dört bayttır. Aşağıdaki alanlar endianness, CPU mimarisi ve diğer çeşitli şeyleri açıklar.
Simon Richter

@SimonRichter anlambilim aşağı kaynar. İlk 4 bayt, birçok dosya türünün genel tanımlanması için sihirdir, ancak soru sahibi readelf, 16 bayt olduğu bile kabul edilen "ELF sihirini" belirtti .
casey

2
Eğer gerçekten teknik almak istiyorsanız, ilk 16 byte ( "kimlik" vardır e_identki ilk 4 bayt (sihirli sayı vardır) EI_MAG0aracılığıyla EI_MAG3)
Michael Mrozek

1
@slebetman "Sihir" i kullanımım ELF spesifikasyonundan geliyor: "Bir dosyanın ilk 4 baytı, dosyayı bir ELF nesne dosyası olarak tanımlayan" sihirli bir sayıya sahip "
Michael Mrozek

2
“Açıkça” küçük bir parçayı abartıyor. Dosyanın nereden geldiğini bilmiyorsanız, her şey bir tahmindir. Bir dosya /bin, elbette, neredeyse kesinlikle bir ELF ikili. İndirdiğiniz bazı rasgele dosyalar, ancak ... söyleyecek bir şey yok.
cHao

11

"Sihirli sayılar", dosyaların başında sabit bayt dizilerine (genellikle) verilen ve bu dosyaları belirli bir dosya biçiminde işaretlemek için kullanılan addır. Dosya uzantılarına benzer bir amaca hizmet ederler.

Daha fazla bilgi için jargon dosyasının girişine bakın .

Örneğin, PNG görüntüleri her zaman aynı sekiz baytla başlar: 137 80 78 71 13 10 26 10

Dolayısıyla, ELF sihirli sayıları, onları tanımlayan elf dosyalarının başındaki baytlardır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.