ELF ఫైల్ ఆకృతిని అర్థం చేసుకోవడం

Understanding Elf File Format



సోర్స్ కోడ్ నుండి బైనరీ కోడ్ వరకు

ప్రోగ్రామింగ్ అనేది ఒక తెలివైన ఆలోచనతో మొదలవుతుంది మరియు మీకు నచ్చిన ప్రోగ్రామింగ్ లాంగ్వేజ్‌లో సోర్స్ కోడ్ రాయడం, ఉదాహరణకు C, మరియు ఫైల్‌లో సోర్స్ కోడ్‌ను సేవ్ చేయడం. తగినంత కంపైలర్ సహాయంతో, ఉదాహరణకు GCC, మీ సోర్స్ కోడ్ మొదట ఆబ్జెక్ట్ కోడ్‌లోకి అనువదించబడుతుంది. చివరికి, లింకర్ ఆబ్జెక్ట్ కోడ్‌ని బైనరీ ఫైల్‌గా అనువదిస్తాడు, అది రిఫరెన్స్ చేసిన లైబ్రరీలతో ఆబ్జెక్ట్ కోడ్‌ని లింక్ చేస్తుంది. ఈ ఫైల్‌లో CPU ద్వారా అర్థం చేసుకున్న మెషిన్ కోడ్‌గా ఒకే సూచనలను కలిగి ఉంటుంది మరియు కంపైల్ చేసిన ప్రోగ్రామ్ రన్ అయిన వెంటనే అమలు చేయబడుతుంది.

పైన పేర్కొన్న బైనరీ ఫైల్ ఒక నిర్దిష్ట నిర్మాణాన్ని అనుసరిస్తుంది, మరియు అత్యంత సాధారణమైన వాటిలో ఒకటి ELF అని పేరు పెట్టబడింది, ఇది ఎక్జిక్యూటబుల్ మరియు లింక్ చేయదగిన ఆకృతిని సంక్షిప్తీకరిస్తుంది. ఇది ఎగ్జిక్యూటబుల్ ఫైల్స్, రీలోకాటబుల్ ఆబ్జెక్ట్ ఫైల్స్, షేర్డ్ లైబ్రరీలు మరియు కోర్ డంప్‌ల కోసం విస్తృతంగా ఉపయోగించబడుతుంది.







ఇరవై సంవత్సరాల క్రితం-1999 లో-86 ఓపెన్ ప్రాజెక్ట్ X86 ప్రాసెసర్‌లపై యునిక్స్ మరియు యునిక్స్ లాంటి సిస్టమ్‌ల కోసం ప్రామాణిక బైనరీ ఫైల్ ఫార్మాట్‌గా ELF ని ఎంచుకుంది. అదృష్టవశాత్తూ, ELF ఫార్మాట్ గతంలో సిస్టమ్ V అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ మరియు టూల్ ఇంటర్‌ఫేస్ స్టాండర్డ్ [4] రెండింటిలోనూ డాక్యుమెంట్ చేయబడింది. ఈ వాస్తవం వేర్వేరు విక్రేతలు మరియు యునిక్స్-ఆధారిత ఆపరేటింగ్ సిస్టమ్‌ల డెవలపర్‌ల మధ్య ప్రామాణీకరణపై ఒప్పందాన్ని చాలా సులభతరం చేసింది.



ఆ నిర్ణయం వెనుక కారణం ELF-వశ్యత, పొడిగింపు మరియు విభిన్న ఎండియన్ ఫార్మాట్‌లు మరియు చిరునామా పరిమాణాల కోసం క్రాస్-ప్లాట్‌ఫారమ్ మద్దతు. ELF డిజైన్ నిర్దిష్ట ప్రాసెసర్, ఇన్‌స్ట్రక్షన్ సెట్ లేదా హార్డ్‌వేర్ ఆర్కిటెక్చర్‌కి మాత్రమే పరిమితం కాదు. ఎగ్జిక్యూటబుల్ ఫైల్ ఫార్మాట్‌ల వివరణాత్మక పోలిక కోసం, ఇక్కడ చూడండి [3].



అప్పటి నుండి, ELF ఫార్మాట్ వివిధ ఆపరేటింగ్ సిస్టమ్స్ ద్వారా ఉపయోగంలో ఉంది. ఇతరులలో, ఇందులో Linux, Solaris/Illumos, Free-, Net- మరియు OpenBSD, QNX, BeOS/Haiku మరియు Fuchsia OS ఉన్నాయి [2]. ఇంకా, మీరు దీన్ని Android, Maemo లేదా Meego OS/Sailfish OS నడుస్తున్న మొబైల్ పరికరాల్లో అలాగే ప్లేస్టేషన్ పోర్టబుల్, డ్రీమ్‌కాస్ట్ మరియు Wii వంటి గేమ్ కన్సోల్‌లలో కనుగొనవచ్చు.





ELF ఫైల్స్ కోసం ఫైల్ పేరు పొడిగింపును స్పెసిఫికేషన్ స్పష్టం చేయదు. .Axf, .bin, .elf, .o, .prx, .puff, .ko, .so, మరియు .mod, లేదా none వంటి అక్షరాల కలయికలు ఉపయోగంలో ఉన్నాయి.

ELF ఫైల్ నిర్మాణం

లైనక్స్ టెర్మినల్‌లో, ELF ఫైల్ నిర్మాణం గురించి మ్యాన్ ఎల్ఫ్ అనే కమాండ్ మీకు సులభమైన సారాంశాన్ని అందిస్తుంది:



జాబితా 1: ELF నిర్మాణం యొక్క మ్యాన్‌పేజ్

$ మనిషి పదకొండు

ELF (5) Linux ప్రోగ్రామర్ మాన్యువల్ ELF (5)

పేరు
elf - ఎక్జిక్యూటబుల్ మరియు లింకింగ్ ఫార్మాట్ (ELF) ఫైల్‌ల ఫార్మాట్

సైనోప్సిస్
#చేర్చండి

వివరణ
హెడర్ ఫైల్ ELF ఎక్జిక్యూటబుల్ బైనరీ ఆకృతిని నిర్వచిస్తుంది
ఫైళ్లు. ఈ ఫైల్‌లలో సాధారణ ఎక్జిక్యూటబుల్ ఫైల్‌లు, తరలించదగినవి
ఆబ్జెక్ట్ ఫైల్స్, కోర్ ఫైల్స్ మరియు షేర్డ్ లైబ్రరీలు.

ELF ఫైల్ ఫార్మాట్ ఉపయోగించి అమలు చేయగల ఫైల్ ELF హెడర్‌ని కలిగి ఉంటుంది,
ప్రోగ్రామ్ హెడర్ టేబుల్ లేదా సెక్షన్ హెడర్ టేబుల్, లేదా రెండూ.
ELF హెడర్ ఎల్లప్పుడూ ఫైల్ యొక్క ఆఫ్‌సెట్ సున్నా వద్ద ఉంటుంది. ఒక కార్యక్రమం
హెడర్ టేబుల్ మరియు సెక్షన్ హెడర్ టేబుల్ ఆఫ్‌సెట్ ఫైల్‌లో ఉన్నాయి
ELF శీర్షికలో నిర్వచించబడింది. రెండు పట్టికలు మిగిలిన వాటిని వివరిస్తాయి
ఫైల్ యొక్క ప్రత్యేకతలు.

...

పై వివరణ నుండి మీరు చూడగలిగినట్లుగా, ELF ఫైల్ రెండు విభాగాలను కలిగి ఉంటుంది - ELF హెడర్ మరియు ఫైల్ డేటా. ఫైల్ డేటా విభాగంలో సున్నా లేదా అంతకంటే ఎక్కువ విభాగాలను వివరించే ప్రోగ్రామ్ హెడర్ టేబుల్, సున్నా లేదా అంతకంటే ఎక్కువ విభాగాలను వివరించే సెక్షన్ హెడర్ టేబుల్, ప్రోగ్రామ్ హెడర్ టేబుల్ నుండి ఎంట్రీలు సూచించిన డేటా మరియు సెక్షన్ హెడర్ టేబుల్ ఉంటాయి. ప్రతి సెగ్మెంట్ ఫైల్ యొక్క రన్-టైమ్ ఎగ్జిక్యూషన్ కోసం అవసరమైన సమాచారాన్ని కలిగి ఉంటుంది, అయితే విభాగాలు లింక్ చేయడం మరియు పునloస్థాపించడం కోసం ముఖ్యమైన డేటాను కలిగి ఉంటాయి. మూర్తి 1 దీనిని క్రమపద్ధతిలో వివరిస్తుంది.

ELF హెడర్

ELF హెడర్ 32 బైట్ల పొడవు, మరియు ఫైల్ ఫార్మాట్‌ను గుర్తిస్తుంది. ఇది 0x7F, 0x45, 0x4c, మరియు 0x46 అనే నాలుగు ఏకైక బైట్‌ల క్రమంతో మొదలవుతుంది, ఇది E, L మరియు F అనే మూడు అక్షరాలకు అనువదిస్తుంది. ఇతర విలువలలో, ఇది 32 కోసం ELF ఫైల్ అని హెడర్ కూడా సూచిస్తుంది 64-బిట్ ఫార్మాట్, చిన్న లేదా పెద్ద ఎండియన్‌నెస్‌ని ఉపయోగిస్తుంది, సరైన అప్లికేషన్ బైనరీ ఇంటర్‌ఫేస్ (ABI) మరియు cpu ఇన్‌స్ట్రక్షన్ సెట్‌తో పరస్పర చర్య చేయడానికి ELF వెర్షన్‌తో పాటు ఏ ఆపరేటింగ్ సిస్టమ్ కోసం ఫైల్ కంపైల్ చేయబడిందో చూపిస్తుంది.

బైనరీ ఫైల్ టచ్ యొక్క హెక్‌డంప్ ఈ విధంగా కనిపిస్తుంది:

.లిస్టింగ్ 2: బైనరీ ఫైల్ యొక్క హెక్స్‌డంప్

$ hd/usr/bin/touch | తల -5
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 | .ఈఎల్ఎఫ్ ........... |
00000010 02 00 3e 00 01 00 00 00 e3 25 40 00 00 00 00 00 | ..> ......% @ ..... |
00000020 40 00 00 00 00 00 00 00 00 28 e4 00 00 00 00 00 00 | @ ....... (....... |
00000030 00 00 00 00 40 40 00 38 00 09 00 40 00 1 బి 00 1 ఎ 00 | [ఇమెయిల్ రక్షించబడింది] @..... |
00000040 06 00 00 00 05 05 00 00 00 40 00 00 00 00 00 00 00 00 [ఇమెయిల్ రక్షించబడింది] |

డెబియన్ GNU/Linux GNU 'binutils' ప్యాకేజీలో అందించబడిన రీడెల్ఫ్ ఆదేశాన్ని అందిస్తుంది. స్విచ్ -h (చిన్న -వెర్షన్ -ఫైల్ -హెడర్) తో పాటు ఇది ELF ఫైల్ యొక్క హెడర్‌ను చక్కగా ప్రదర్శిస్తుంది. కమాండ్ టచ్ కోసం లిస్టింగ్ 3 దీనిని వివరిస్తుంది.

.లిస్టింగ్ 3: ELF ఫైల్ హెడర్‌ని ప్రదర్శిస్తోంది

$ readelf -h/usr/bin/touch
ELF శీర్షిక:
మేజిక్: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 00
తరగతి: ELF64
డేటా: 2 యొక్క కాంప్లిమెంట్, చిన్న ఎండియన్
వెర్షన్: 1 (కరెంట్)
OS / ABI: UNIX - సిస్టమ్ V
ABI వెర్షన్: 0
రకం: EXEC (ఎక్జిక్యూటబుల్ ఫైల్)
యంత్రం: అధునాతన మైక్రో పరికరాలు X86-64
వెర్షన్: 0x1
ఎంట్రీ పాయింట్ చిరునామా: 0x4025e3
ప్రోగ్రామ్ హెడర్‌ల ప్రారంభం: 64 (ఫైల్‌లోకి బైట్‌లు)
విభాగం శీర్షికల ప్రారంభం: 58408 (ఫైట్‌లోకి బైట్‌లు)
జెండాలు: 0x0
ఈ శీర్షిక పరిమాణం: 64 (బైట్లు)
ప్రోగ్రామ్ హెడర్‌ల పరిమాణం: 56 (బైట్లు)
ప్రోగ్రామ్ హెడర్‌ల సంఖ్య: 9
విభాగం శీర్షికల పరిమాణం: 64 (బైట్లు)
విభాగం శీర్షికల సంఖ్య: 27
విభాగం శీర్షిక స్ట్రింగ్ టేబుల్ ఇండెక్స్: 26

ప్రోగ్రామ్ హెడర్

ప్రోగ్రామ్ హెడర్ రన్-టైమ్‌లో ఉపయోగించిన సెగ్మెంట్‌లను చూపుతుంది మరియు ప్రాసెస్ ఇమేజ్‌ను ఎలా సృష్టించాలో సిస్టమ్‌కు తెలియజేస్తుంది. లిస్టింగ్ 2 నుండి హెడర్ ELF ఫైల్‌లో 56 బైట్‌ల సైజు కలిగిన 9 ప్రోగ్రామ్ హెడర్‌లు ఉన్నాయని మరియు మొదటి హెడర్ బైట్ 64 వద్ద మొదలవుతుందని చూపిస్తుంది.

మళ్ళీ, రీడెల్ఫ్ కమాండ్ ELF ఫైల్ నుండి సమాచారాన్ని సేకరించేందుకు సహాయపడుతుంది. లివింగ్ 4 లో చూపిన విధంగా స్విచ్ -ఎల్ (–ప్రోగ్రామ్ -హెడర్‌లు లేదా –సెగ్మెంట్‌ల కోసం చిన్నది) మరిన్ని వివరాలను వెల్లడిస్తుంది.

.లిస్టింగ్ 4: ప్రోగ్రామ్ హెడర్‌ల గురించి సమాచారాన్ని ప్రదర్శించండి

$ readelf -l/usr/bin/touch

Elf ఫైల్ రకం EXEC (ఎక్జిక్యూటబుల్ ఫైల్)
ఎంట్రీ పాయింట్ 0x4025e3
ఆఫ్‌సెట్ 64 నుండి ప్రారంభమయ్యే 9 ప్రోగ్రామ్ హెడర్‌లు ఉన్నాయి

ప్రోగ్రామ్ హెడర్‌లు:
ఆఫ్‌సెట్ VirtAddr PhysAddr అని టైప్ చేయండి
FileSiz MemSiz ఫ్లాగ్స్ సమలేఖనం
PHDR 0x0000000000000040 0x0000000000400040 0x0000000000400040
0x00000000000001f8 0x00000000000001f8 R E 8
INTERP 0x0000000000000238 0x0000000000400238 0x0000000000400238
0x000000000000001c 0x000000000000001c R 1
[ప్రోగ్రామ్ ఇంటర్‌ప్రెటర్‌ని అభ్యర్థిస్తోంది: /lib64/ld-linux-x86-64.so.2]
లోడ్ 0x0000000000000000 0x0000000000400000 0x0000000000400000
0x000000000000d494 0x000000000000d494 R E 200000
లోడ్ 0x000000000000de10 0x000000000060de10 0x000000000060de10
0x0000000000000524 0x0000000000000748 RW 200000
డైనమిక్ 0x000000000000D28 0x000000000060de28 0x000000000060de28
0x00000000000001d0 0x00000000000001d0 RW 8
గమనిక 0x0000000000000254 0x0000000000400254 0x0000000000400254
0x0000000000000044 0x0000000000000044 ఆర్ 4
GNU_EH_FRAME 0x000000000000bc40 0x00000000000040bc40 0x00000000000040bc40
0x00000000000003a4 0x00000000000003a4 R 4
గ్నూ_స్టాక్ 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 RW 10
GNU_RELRO 0x000000000000de10 0x000000000000de10 0x000000000000de10
0x00000000000001f0 0x00000000000001f0 R 1

సెగ్మెంట్ నుండి సెగ్మెంట్ మ్యాపింగ్:
విభాగ విభాగాలు ...
00
01. ఇంటర్ప్
02 .ఇంటర్ప్ .నోట్.ఏబిఐ-ట్యాగ్ .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .int .plt. టెక్స్ట్ .fini. రోడట .eh_frame_hdr .eh_frame
03 .ఇనిట్_అరే .ఫిని_అరే .jcr. డైనమిక్.
04 .డైనమిక్
05. గమనిక. ABI- ట్యాగ్ .note.gnu.build-id
06 .eh_frame_hdr
07
08 .ఇనిట్_అరే .ఫిని_అరే .jcr. డైనమిక్ .గోట్

విభాగం శీర్షిక

ELF నిర్మాణం యొక్క మూడవ భాగం విభాగం శీర్షిక. ఇది బైనరీ యొక్క ఒకే విభాగాలను జాబితా చేయడానికి ఉద్దేశించబడింది. స్విచ్ -S (సెక్షన్ -హెడర్‌లు లేదా –సెక్షన్‌ల కోసం చిన్నది) విభిన్న శీర్షికలను జాబితా చేస్తుంది. టచ్ కమాండ్ కొరకు, 27 సెక్షన్ హెడర్‌లు ఉన్నాయి, మరియు లిస్టింగ్ 5 వాటిలో మొదటి నాలుగు మరియు చివరిది మాత్రమే చూపిస్తుంది. ప్రతి పంక్తి విభాగం పరిమాణం, విభాగం రకం అలాగే దాని చిరునామా మరియు మెమరీ ఆఫ్‌సెట్‌ను కవర్ చేస్తుంది.

.లిస్టింగ్ 5: రీడెల్ఫ్ ద్వారా వెల్లడించిన విభాగం వివరాలు

$ readelf -S/usr/bin/touch
ఆఫ్‌సెట్ 0xe428 నుండి 27 సెక్షన్ హెడర్‌లు ఉన్నాయి:

విభాగం శీర్షికలు:
[Nr] పేరు రకం చిరునామా ఆఫ్‌సెట్
పరిమాణం EntSize ఫ్లాగ్స్ లింక్ సమాచారం సమలేఖనం
[0] శూన్య 000000000000000000000000
0000000000000000 0000000000000000 0 0 0
[1]. ఇంటర్‌ప్రొజిట్‌లు 0000000000400238 00000238
000000000000001 సి 0000000000000000 ఎ 0 0 1
[2]. గమనిక. ABI- ట్యాగ్ గమనిక 0000000000400254 00000254
0000000000000020 0000000000000000 ఎ 0 0 4
[3] .note.gnu.build-i గమనిక 0000000000400274 00000274
...
...
[26] .shstrtab STRTAB 0000000000000000 0000e334
00000000000000ef 0000000000000000 0 0 1
జెండాలకు కీ:
W (వ్రాయండి), A (కేటాయించండి), X (అమలు), M (విలీనం), S (తీగలు), l (పెద్దది)
I (సమాచారం), L (లింక్ ఆర్డర్), G (సమూహం), T (TLS), E (మినహాయించండి), x (తెలియదు)
O (అదనపు OS ప్రాసెసింగ్ అవసరం) o (OS నిర్దిష్ట), p (ప్రాసెసర్ నిర్దిష్ట)

ELF ఫైల్‌ని విశ్లేషించడానికి ఉపకరణాలు

పై ఉదాహరణల నుండి మీరు గమనించినట్లుగా, GNU/Linux అనేక ELF ఫైల్‌ని విశ్లేషించడానికి సహాయపడే అనేక ఉపయోగకరమైన సాధనాలతో రూపొందించబడింది. మేము పరిశీలించే మొదటి అభ్యర్థి ఫైల్ యుటిలిటీ.

ELF ఫైల్‌ల గురించి ప్రాథమిక సమాచారాన్ని ఫైల్ ప్రదర్శిస్తుంది, ఇన్‌స్ట్రక్షన్ సెట్ ఆర్కిటెక్చర్‌తో సహా, దీని కోసం కోడ్ మార్చగల, ఎక్జిక్యూటబుల్ లేదా షేర్డ్ ఆబ్జెక్ట్ ఫైల్‌లో ఉద్దేశించబడింది. లిస్టింగ్ 6 లో/బిన్/టచ్ అనేది 64-బిట్ ఎక్జిక్యూటబుల్ ఫైల్, లైనక్స్ స్టాండర్డ్ బేస్ (LSB) తరువాత, డైనమిక్ లింక్ చేయబడింది మరియు GNU/Linux కెర్నల్ వెర్షన్ 2.6.32 కోసం నిర్మించబడింది.

.లిస్టింగ్ 6: ఫైల్ ఉపయోగించి ప్రాథమిక సమాచారం

$ ఫైల్ /బిన్ /టచ్
/బిన్/టచ్: ELF 64-bit LSB ఎక్జిక్యూటబుల్, x86-64, వెర్షన్ 1 (SYSV), డైనమిక్ లింక్డ్, ఇంటర్‌ప్రెటర్/lib64/l,
GNU/Linux 2.6.32 కోసం, BuildID [sha1] = ec08d609e9e8e73d4be6134541a472ad0ea34502, తీసివేయబడింది
$

రెండవ అభ్యర్థి రీడెల్ఫ్. ఇది ELF ఫైల్ గురించి వివరణాత్మక సమాచారాన్ని ప్రదర్శిస్తుంది. స్విచ్‌ల జాబితా చాలా పొడవుగా ఉంది మరియు ELF ఫార్మాట్‌లోని అన్ని అంశాలను కవర్ చేస్తుంది. స్విచ్ -n (–నోట్స్ కోసం చిన్నది) లిస్టింగ్ 7 ఉపయోగించి, నోట్ విభాగాలు మాత్రమే కనిపిస్తాయి, ఫైల్ టచ్‌లో ఉన్నవి -ABI వెర్షన్ ట్యాగ్ మరియు బిల్డ్ ID బిట్‌స్ట్రింగ్.

.లిస్టింగ్ 7: ELF ఫైల్ యొక్క ఎంచుకున్న విభాగాలను ప్రదర్శించండి

$ readelf -n/usr/bin/touch

0x00000020 పొడవుతో 0x00000254 ఫైల్ ఆఫ్‌సెట్‌లో గమనికలను ప్రదర్శిస్తోంది:
యజమాని డేటా పరిమాణం వివరణ
GNU 0x00000010 NT_GNU_ABI_TAG (ABI వెర్షన్ ట్యాగ్)
OS: Linux, ABI: 2.6.32

ఫైల్ ఆఫ్‌సెట్ 0x00000274 పొడవు 0x00000024 పొడవుతో గమనికలను ప్రదర్శిస్తోంది:
యజమాని డేటా పరిమాణం వివరణ
GNU 0x00000014 NT_GNU_BUILD_ID (ప్రత్యేకమైన బిల్డ్ ID బిట్‌స్ట్రింగ్)
బిల్డ్ ID: ec08d609e9e8e73d4be6134541a472ad0ea34502

సోలారిస్ మరియు ఫ్రీబిఎస్‌డి కింద, యుటిలిటీ ఎల్ఫ్‌డంప్ [7] రీడెల్ఫ్‌కి అనుగుణంగా ఉంటుందని గమనించండి. 2019 నాటికి, 2003 నుండి కొత్త విడుదల లేదా నవీకరణ లేదు.

నంబర్ మూడు అనేది ఎల్ఫుటిల్స్ [6] అనే ప్యాకేజీ, ఇది పూర్తిగా లైనక్స్ కోసం అందుబాటులో ఉంది. ఇది GNU Binutils కు ప్రత్యామ్నాయ సాధనాలను అందిస్తుంది మరియు ELF ఫైల్‌లను ధృవీకరించడానికి కూడా అనుమతిస్తుంది. ప్యాకేజీలో అందించిన యుటిలిటీల పేర్లు 'elf utils' కోసం eu తో ప్రారంభమవుతాయని గమనించండి.

చివరగా కానీ మేము ఆబ్జెక్డంప్ గురించి ప్రస్తావిస్తాము. ఈ సాధనం రీడెల్ఫ్‌ని పోలి ఉంటుంది కానీ ఆబ్జెక్ట్ ఫైల్స్‌పై దృష్టి పెడుతుంది. ఇది ELF ఫైల్స్ మరియు ఇతర ఆబ్జెక్ట్ ఫార్మాట్‌ల గురించి సమానమైన సమాచారాన్ని అందిస్తుంది.

.లిస్టింగ్ 8: ఆబ్జెక్డంప్ ద్వారా సేకరించిన ఫైల్ సమాచారం

$ Obdump -f /bin /touch

/బిన్/టచ్: ఫైల్ ఫార్మాట్ elf64-x86-64
నిర్మాణం: i386: x86-64, జెండాలు 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
ప్రారంభ చిరునామా 0x00000000004025e3

$

ELF ఫైల్‌లోని కంటెంట్‌లను చదవడానికి మరియు దానిని తారుమారు చేసే సాధనాలను కలిగి ఉన్న 'elfkickers' [9] అనే సాఫ్ట్‌వేర్ ప్యాకేజీ కూడా ఉంది. దురదృష్టవశాత్తు, విడుదలల సంఖ్య చాలా తక్కువగా ఉంది, అందుకే మేము దానిని ప్రస్తావించాము మరియు మరిన్ని ఉదాహరణలు చూపవద్దు.

డెవలపర్‌గా మీరు బదులుగా బదులుగా 'పాక్స్-యుటిల్స్' [10,11] ని చూడవచ్చు. ఈ యుటిలిటీల సెట్ ELF ఫైల్‌లను ధృవీకరించడానికి సహాయపడే అనేక సాధనాలను అందిస్తుంది. ఉదాహరణగా, డంపెల్ఫ్ ELF ఫైల్‌ని విశ్లేషిస్తుంది మరియు వివరాలను కలిగి ఉన్న C హెడర్ ఫైల్‌ను అందిస్తుంది - మూర్తి 2 చూడండి.

ముగింపు

తెలివైన డిజైన్ మరియు అద్భుతమైన డాక్యుమెంటేషన్ కలయికకు ధన్యవాదాలు ELF ఫార్మాట్ చాలా బాగా పనిచేస్తుంది మరియు 20 సంవత్సరాల తర్వాత ఇప్పటికీ ఉపయోగంలో ఉంది. పైన చూపిన యుటిలిటీలు మీకు ELF ఫైల్‌పై అంతర్దృష్టి వీక్షణను అనుమతిస్తాయి మరియు ప్రోగ్రామ్ ఏమి చేస్తుందో తెలుసుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది. సాఫ్ట్‌వేర్‌ను విశ్లేషించడానికి ఇవి మొదటి దశలు - హ్యాపీ హ్యాకింగ్!

లింకులు మరియు సూచనలు
రసీదులు

ఈ వ్యాసం తయారీకి సంబంధించి ఆక్సెల్ బెకెర్ట్ అందించిన మద్దతుకు రచయిత కృతజ్ఞతలు తెలుపుతున్నారు.