
أداة تحميل وتحليل ELF متعددة المعماريات مع إمكانيات الاستكشاف، وفك التجميع، وعرض السداسي، وحساب الأنتروبيا، وتنفيذ mmap/memfd لملفات x86 و x86-64 الثنائية.
إلفينا هو محمّل ELF متعدد المعماريات يدعم ثنائيات x86 و x86-64.
تم تطوير هذا المشروع بلغة Rust منذ الإصدار v2.0.0.
مؤخرًا، كنت أدرس الهندسة العكسية على ويندوز وتنسيق ملفات PE.
بعد ذلك، بدأت في استكشاف ثنائيات ELF لتعلم المزيد عن الهندسة العكسية لنظام لينكس وتطوير الروتكيت.
لفهم أفضل لكيفية تحميل وتنفيذ برامج ELF القابلة للتنفيذ، قمت بتطوير إلفينا كمشروع تعليمي يركز على نواة لينكس وتنسيق ملفات 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 تنفيذ ملفات ثنائية ELF 32 بت. يعمل الاستكشاف (--info) والتنفيذ 64 بت بشكل جيد. للحصول على دعم كامل لـ 32 بت، استخدم بيئة لينكس أصلية أو جهازًا افتراضيًا مثل VirtualBox أو VMWare.
--hexdump
--entropy
--disasm
| المعمارية | البتات | الأجهزة الشائعة |
|---|
| x86 (i386) | 32-bit | أجهزة كمبيوتر قديمة، لينكس 32 بت |
| x86-64 | 64-bit | أجهزة كمبيوتر حديثة، خوادم |
| ARM32 | 32-bit | رازبيري باي 2، أندرويد قديم |
| AArch64 (ARM64) | 64-bit | رازبيري باي 3/4/5، أندرويد حديث |
| RISC-V 64 | 64-bit | لوحات SiFive، VisionFive، أجهزة لينكس الناشئة |