
Multi-Architektur-ELF-Lader und Analyse-Toolkit mit Probing, Disassemblierung, Hexdump, Entropieberechnung und mmap/memfd-Ausführung für x86- und x86-64-Binärdateien.
Elfina ist ein Multi-Architektur-ELF-Lader, der x86- und x86-64-Binärdateien unterstützt.
Dieses Projekt wird seit v2.0.0 in Rust implementiert.
In letzter Zeit habe ich mich mit Reverse Engineering unter Windows und dem PE-Dateiformat beschäftigt.
Danach habe ich begonnen, ELF-Binärdateien zu untersuchen, um mehr über Linux-Reverse-Engineering und Rootkit-Entwicklung zu lernen.
Um besser zu verstehen, wie ELF-Executables geladen und ausgeführt werden, habe ich Elfina als Lernprojekt mit Fokus auf den Linux-Kernel und das ELF-Dateiformat entwickelt.
Wenn Sie dieses Projekt nützlich oder informativ finden, würde ich mich über einen ⭐ freuen!
Dieses Projekt ist ausschließlich für Bildungs- und Forschungszwecke bestimmt.
Es wurde entwickelt, um Folgendes zu verstehen:
--mmap-Laden--memfd-Ausführung--info zeigt ELF-Metadaten und Struktur an--hexdump : Hexadezimale Darstellung der ELF-Datei anzeigen.--hexdump-out: Ergebnis von --hexdump in eine bestimmte Datei speichern.--entropy: Entropie berechnen, um gepackte oder komprimierte Abschnitte zu identifizieren.--entropy-out: Ergebnis von --entropy in eine bestimmte Datei speichern.--disasm: ELF-Binärdatei disassemblieren.--disasm-out: Ergebnis von --disasm in eine bestimmte Datei speichern.sudo apt install gcc-multilib
Laden Sie das Release-Paket herunter und extrahieren Sie es:
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
Das Layout ist wie folgt dargestellt:
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
oder
chmod +x build.sh
./build.sh
git clone https://github.com/iss4cf0ng/Elfina
cd Elfina/Rust
chmod +x build.sh
./build.sh
Unter dem Windows-Subsystem für Linux (WSL2) kann Elfina keine 32-Bit-ELF-Binärdateien ausführen. Die Erkennung (--info) und die 64-Bit-Ausführung funktionieren einwandfrei. Für vollständige 32-Bit-Unterstützung verwenden Sie eine native Linux-Umgebung oder eine VM wie VirtualBox oder VMware.
--hexdump
--entropy
--disasm
| Architektur | Bits | Übliche Geräte |
|---|
| x86 (i386) | 32-Bit | Alte PCs, 32-Bit-Linux |
| x86-64 | 64-Bit | Moderne PCs, Server |
| ARM32 | 32-Bit | Raspberry Pi 2, ältere Android-Geräte |
| AArch64 (ARM64) | 64-Bit | Raspberry Pi 3/4/5, moderne Android-Geräte |
| RISC-V 64 | 64-Bit | SiFive-Boards, VisionFive, aufkommende Linux-Geräte |