Saya telah melihat diskusi sebelumnya tentang sihir ELF, yang terbaru komentar dalam pertanyaan pertukaran tumpukan Keamanan ini . Saya pernah melihatnya disebutkan sebelumnya, dan saya pernah melihatnya di log boot saya sendiri .. Tapi saya tidak yakin apa itu.
Halaman manual di peri sedikit di atas kepala saya, karena saya tidak melakukan C atau bahasa tingkat yang lebih rendah.
Sebagai seseorang yang menggunakan Linux sebagai sistem operasi setiap hari, apa itu ELF?
Jawaban:
Langsung dari halaman manual yang Anda referensi:
ELF mendefinisikan format biner dari file yang dapat dieksekusi yang digunakan oleh Linux. Saat Anda menjalankan executable, OS harus tahu cara memuat executable ke dalam memori dengan benar, cara mengatasi dependensi library dinamis dan kemudian ke mana harus melompat ke executable yang dimuat untuk mulai mengeksekusinya. Format ELF menyediakan informasi ini. ELF magic digunakan untuk mengidentifikasi file ELF dan hanya beberapa byte pertama dari file:
atau
16 byte ini dengan jelas mengidentifikasi file sebagai executable ELF. Banyak format file memiliki byte "ajaib" yang menyelesaikan tugas yang sama - mengidentifikasi jenis file.
sumber
readelf
mengakui adalah 16 byte.e_ident
), di mana 4 byte pertama adalah angka ajaib (EI_MAG0
melaluiEI_MAG3
)/bin
, tentu saja, hampir pasti biner ELF. Beberapa file acak yang Anda unduh, meskipun ... tidak ada yang tahu."Angka ajaib" adalah nama yang diberikan pada urutan byte yang konstan (biasanya) pada awal file, yang digunakan untuk menandai file-file tersebut sebagai format file tertentu. Mereka melayani tujuan yang mirip dengan ekstensi file.
Lihat entri file jargon untuk informasi lebih lanjut.
Misalnya, gambar PNG selalu dimulai dengan delapan byte yang sama: 137 80 78 71 13 10 26 10
Karenanya angka ajaib ELF adalah byte pada awal file elf yang mengidentifikasinya.
sumber