ईएलएफ मैजिक क्या है?


26

मैंने ELF जादू के बारे में चर्चा से पहले देखा है, हाल ही में इस सुरक्षा स्टैक एक्सचेंज प्रश्न में टिप्पणियां । मैंने इसे पहले उल्लेख किया है, और मैंने इसे अपने बूट लॉग में देखा है .. लेकिन मुझे यकीन नहीं है कि यह क्या है।

एल्फ पर मैन पेज मेरे सिर पर थोड़ा सा है, क्योंकि मैं सी या निचले स्तर की भाषाएं नहीं करता हूं।

किसी ऐसे व्यक्ति के रूप में जो हर दिन ऑपरेटिंग सिस्टम के रूप में लिनक्स का उपयोग करता है, ईएलएफ क्या है?



13
शीर्षक आरपीजी स्टेक्सचेंज के लिए बेहतर अनुकूल है।
Cululhu

जवाबों:


37

आपके द्वारा संदर्भित मैन पेज से राइट:

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

ईएलएफ लिनक्स द्वारा उपयोग की जाने वाली निष्पादन योग्य फ़ाइलों के द्विआधारी प्रारूप को परिभाषित करता है। जब आप एक निष्पादन योग्य को लागू करते हैं, तो ओएस को पता होना चाहिए कि निष्पादन योग्य को मेमोरी में कैसे लोड करना है, गतिशील लाइब्रेरी निर्भरता को कैसे हल करना है और फिर इसे निष्पादित करने के लिए लोड किए गए निष्पादन योग्य में कहां कूदना है। ईएलएफ प्रारूप यह जानकारी प्रदान करता है। 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 बाइट्स किसी फ़ाइल को एक निष्पादन योग्य ईएलएफ के रूप में पहचानते हैं। कई फ़ाइल स्वरूपों में "जादू" बाइट्स होते हैं जो एक ही कार्य को पूरा करते हैं - एक प्रकार की फ़ाइल की पहचान करना।


8
वास्तविक जादू सिर्फ पहले चार बाइट्स हैं। निम्नलिखित क्षेत्र एंडियननेस, सीपीयू आर्किटेक्चर, और विभिन्न अन्य चीजों का वर्णन करते हैं।
साइमन रिक्टर

@SimonRichter जो शब्दार्थ को उबालता है। कई फ़ाइल प्रकारों की सामान्य पहचान के लिए पहले 4 बाइट्स जादू हैं, लेकिन पूछने वाले ने "ईएलएफ जादू" निर्दिष्ट किया, जो यहां तक ​​कि readelfस्वीकार करता है कि 16 बाइट्स हैं।
केसी

2
क्या तुम सच में तकनीकी प्राप्त करना चाहते हैं, पहले 16 बाइट्स "पहचान" कर रहे हैं ( e_ident), जिनमें से पहले 4 बाइट (जादुई संख्या रहे हैं EI_MAG0के माध्यम से EI_MAG3)
माइकल Mrozek

1
@slebetman "जादू" का मेरा उपयोग ELF कल्पना से आता है: "एक फ़ाइल की पहली 4 बाइट एक 'जादुई संख्या,' पकड़ एक ELF वस्तु फ़ाइल के रूप में पहचान करने"
माइकल Mrozek

2
"असंदिग्ध रूप से" एक छोटे से ओवरस्टैट कर रहा है। जब तक आप नहीं जानते कि फाइल कहां से आई है, कुछ भी सिर्फ एक अनुमान है। में एक फ़ाइल /bin, सुनिश्चित करें, यह लगभग निश्चित रूप से एक ELF द्विआधारी है। कुछ रैंडम फ़ाइल जो आपने डाउनलोड की हैं, हालाँकि ... कोई बता नहीं रहा है।
cHao 5

11

"मैजिक नंबर" फाइलों की शुरुआत में बाइट्स (आमतौर पर) के निरंतर दृश्यों को दिया गया नाम है, जिसका उपयोग उन फाइलों को एक विशेष फ़ाइल प्रारूप के रूप में चिह्नित करने के लिए किया जाता है। वे एक्सटेंशन फाइल करने के लिए एक समान उद्देश्य की सेवा करते हैं।

देखें शब्दजाल फ़ाइल प्रविष्टि अधिक जानकारी के लिए।

उदाहरण के लिए, पीएनजी चित्र हमेशा एक ही आठ बाइट्स से शुरू होते हैं: 137 80 78 78 71 13 10 26 10

इसलिए ईएलएफ मैजिक नंबर एल्फ फाइलों की शुरुआत में बाइट्स हैं जो उन्हें इस तरह से पहचानते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.