
बहु-आर्किटेक्चर ELF लोडर और विश्लेषण टूलकिट जिसमें प्रोबिंग, डिसअसेंबली, हेक्सडंप, एंट्रॉपी गणना, और x86 और x86-64 बाइनरी के लिए mmap/memfd निष्पादन शामिल हैं।
Elfina एक बहु-आर्किटेक्चर ELF लोडर है जो x86 और x86-64 बाइनरीज़ को सपोर्ट करता है।
यह प्रोजेक्ट v2.0.0 से Rust में लागू किया गया है।
हाल ही में, मैं Windows पर रिवर्स इंजीनियरिंग और PE फ़ाइल फ़ॉर्मेट का अध्ययन कर रहा था।
उसके बाद, मैंने Linux रिवर्स इंजीनियरिंग और रूटकिट डेवलपमेंट के बारे में और अधिक जानने के लिए ELF बाइनरीज़ का अन्वेषण शुरू किया।
ELF निष्पादन योग्य फ़ाइलें कैसे लोड और निष्पादित की जाती हैं, इसे बेहतर ढंग से समझने के लिए, मैंने Elfina को Linux कर्नेल और ELF फ़ाइल फ़ॉर्मेट पर केंद्रित एक सीखने के प्रोजेक्ट के रूप में विकसित किया।
यदि आपको यह प्रोजेक्ट उपयोगी या जानकारीपूर्ण लगे, तो एक ⭐ की सराहना होगी!
यह प्रोजेक्ट केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए है।
यह निम्नलिखित को समझने में मदद करने के लिए डिज़ाइन किया गया है:
--mmap लोडिंग--memfd निष्पादन--info ELF मेटाडेटा और संरचना प्रदर्शित करता है--hexdump : ELF फ़ाइल का हेक्साडेसिमल प्रतिनिधित्व प्रदर्शित करता है।--hexdump-out: --hexdump के परिणाम को एक विशिष्ट फ़ाइल में सहेजता है।--entropy: संकुलित या संपीड़ित अनुभागों की पहचान करने में मदद के लिए एंट्रॉपी की गणना करता है।--entropy-out: --entropy के परिणाम को एक विशिष्ट फ़ाइल में सहेजता है।--disasm: ELF बाइनरी को डिस्सेम्बल करता है।--disasm-out: --disasm के परिणाम को एक विशिष्ट फ़ाइल में सहेजता है।sudo apt install gcc-multilib
रिलीज़ पैकेज डाउनलोड और निकालें:
wget https://github.com/iss4cf0ng/Elfina/releases/latest/download/elfina-linux.tar.gz
tar -xzf elfina-linux.tar.gz
cd elfina
chmod +x ./elfina
chmod +x ./elfina32
लेआउट निम्नानुसार दिखाया गया है:
elfina/
├ elfina
└ elfina32
// ---------- elfina (x64) ----------
./elfina --coffee
./elfina --info <x64_elf_path>
./elfina --mmap <x64_elf_path> [arguments]
./elfina --memfd <x64_elf_path> [arguments]
./elfina --hexdump <x64_elf_path>
./elfina --hexdump-out <x64_elf_path>
./elfina --entropy <x64_elf_path>
./elfina --entropy-out <output_file> <x64_elf_path>
./elfina --disasm <x64_elf_path>
./elfina --disasm-out <output_file> <x64_elf_path>
// ---------- elfina32 (x86) ----------
./elfina32 --coffee
./elfina32 --info <x86_elf_path>
./elfina32 --mmap <x86_elf_path> [arguments]
./elfina32 --memfd <x86_elf_path> [arguments]
./elfina32 --hexdump <x86_elf_path>
./elfina32 --hexdump-out <x86_elf_path>
./elfina32 --entropy <x86_elf_path>
./elfina32 --entropy-out <output_file> <x86_elf_path>
./elfina32 --disasm <x86_elf_path>
./elfina32 --disasm-out <output_file> <x86_elf_path>
रिपॉजिटरी को क्लोन करें और प्रोजेक्ट को कम्पाइल करें:
git clone https://github.com/iss4cf0ng/Elfina
cd Elfina/C
make
या
chmod +x build.sh
./build.sh
git clone https://github.com/iss4cf0ng/Elfina
cd Elfina/Rust
chmod +x build.sh
./build.sh
Windows Subsystem for Linux (WSL2) पर, Elfina 32-बिट ELF बाइनरी फ़ाइलों को निष्पादित नहीं कर सकता। प्रोबिंग (--info) और 64-बिट निष्पादन ठीक काम करता है। पूर्ण 32-बिट समर्थन के लिए, मूल Linux वातावरण या VirtualBox या VMWare जैसे VM का उपयोग करें।
--hexdump
--entropy
--disasm
| आर्किटेक्चर | बिट्स | सामान्य उपकरण |
|---|
| x86 (i386) | 32-bit | पुराने पीसी, 32-बिट Linux |
| x86-64 | 64-bit | आधुनिक पीसी, सर्वर |
| ARM32 | 32-bit | Raspberry Pi 2, पुराना Android |
| AArch64 (ARM64) | 64-bit | Raspberry Pi 3/4/5, आधुनिक Android |
| RISC-V 64 | 64-bit | SiFive बोर्ड, VisionFive, उभरते Linux उपकरण |