
Chargeur ELF multi-architecture et boîte à outils d'analyse avec sondage, désassemblage, hexdump, calcul d'entropie, et exécution mmap/memfd pour les binaires x86 et x86-64.
Elfina est un chargeur ELF multi-architecture prenant en charge les binaires x86 et x86-64.
Ce projet a été implémenté en Rust depuis la v2.0.0.
Récemment, j'ai étudié le reverse engineering sous Windows et le format de fichier PE.
Ensuite, j'ai commencé à explorer les binaires ELF pour en apprendre davantage sur le reverse engineering Linux et le développement de rootkits.
Pour mieux comprendre comment les exécutables ELF sont chargés et exécutés, j'ai développé Elfina comme projet d'apprentissage axé sur le noyau Linux et le format de fichier ELF.
Si vous trouvez ce projet utile ou instructif, un ⭐ serait apprécié !
Ce projet est destiné uniquement à des fins éducatives et de recherche.
Il est conçu pour aider à comprendre :
--mmap--memfd--info affiche les métadonnées et la structure ELF--hexdump : Affiche la représentation hexadécimale du fichier ELF.--hexdump-out : Enregistre le résultat de --hexdump dans un fichier spécifique.--entropy : Calcule l'entropie pour aider à identifier les sections emballées ou compressées.--entropy-out : Enregistre le résultat de --entropy dans un fichier spécifique.--disasm : Désassemble le binaire ELF.--disasm-out : Enregistre le résultat de --disasm dans un fichier spécifique.sudo apt install gcc-multilib
Téléchargez et extrayez le paquet de la version :
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
La structure est présentée ci-dessous :
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>
Clonez le dépôt et compilez le projet :
git clone https://github.com/iss4cf0ng/Elfina
cd Elfina/C
make
ou
chmod +x build.sh
./build.sh
git clone https://github.com/iss4cf0ng/Elfina
cd Elfina/Rust
chmod +x build.sh
./build.sh
Sous le Sous-système Windows pour Linux (WSL2), Elfina ne peut pas exécuter les fichiers binaires ELF 32 bits. Le sondage (--info) et l'exécution 64 bits fonctionnent correctement. Pour une prise en charge complète du 32 bits, utilisez un environnement Linux natif ou une machine virtuelle comme VirtualBox ou VMWare.
--hexdump
--entropy
--disasm
| Architecture | Bits | Appareils courants |
|---|
| x86 (i386) | 32 bits | Vieux PC, Linux 32 bits |
| x86-64 | 64 bits | PC modernes, serveurs |
| ARM32 | 32 bits | Raspberry Pi 2, Android ancien |
| AArch64 (ARM64) | 64 bits | Raspberry Pi 3/4/5, Android moderne |
| RISC-V 64 | 64 bits | Cartes SiFive, VisionFive, appareils Linux émergents |