Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
vmlinux-to-elf — Un outil pour récupérer un .ELF entièrement analysable à partir d'un noyau brut, en extrayant la table des symboles du noyau (kallsyms) | Kitploit
Outils/GitHubGitHub/marin-m/vmlinux-to-elf
Sécurité des Systèmes EmbarquésRétro-ingénierieAnalyse de BinairesAnalyse de Micrologiciel
GitHubmarin-m/vmlinux-to-elf

vmlinux-to-elf

Un outil pour récupérer un .ELF entièrement analysable à partir d'un noyau brut, en extrayant la table des symboles du noyau (kallsyms)

Voir le dépôt
1.8k18247il y a 3 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

vmlinux-to-elf

Cet outil permet d'obtenir un fichier .ELF entièrement analysable à partir d'une image kernel vmlinux/vmlinuz/bzImage/zImage (qu'il s'agisse d'un blob binaire brut ou d'un fichier .ELF préexistant mais dépouillé de ses symboles), avec les symboles de fonctions et de variables récupérés.

Illustration d'accueil

Pour ce faire, il analyse votre kernel à la recherche d'une table de symboles kernel (kallsyms), une table de symboles compressée présente dans presque tous les kernels, la plupart du temps non modifiée.

Comme la table de symboles concernée est compressée à l'origine, il devrait récupérer des chaînes qui ne sont pas visibles dans le binaire d'origine.

Il produit un fichier .ELF que vous pouvez analyser avec IDA Pro et Ghidra. Cet outil est donc utile pour la rétro-ingénierie de systèmes embarqués.

Get it from the Snap Store   Get it on Flathub

Utilisation :

# Ligne de commande :
vmlinux-to-elf <input_kernel.bin> <output_kernel.elf>

# Ligne de commande, lister uniquement les adresses des symboles :
kallsyms-finder <input_kernel.bin> # Si installé avec uv
vmlinux-to-elf.kallsyms-finder # Si installé avec snap

# Ligne de commande, décompresser simplement le kernel :
vmlinuz-decompressor <input_kernel.bin> <output_kernel.bin> # Si installé avec uv
vmlinux-to-elf.vmlinuz-decompressor # Si installé avec snap

# Interface graphique :
vmlinux-to-elf-gui # Si installé avec uv
vmlinux-to-elf.gui # Si installé avec snap
flatpak run re.fossplant.vmlinux-to-elf # Si installé avec flatpak

Écran principal de l'application Vue des décalages du kernel de l'application

Installation :

# Installer CLI+GUI avec Snap (recommandé sur Ubuntu)
sudo snap install vmlinux-to-elf

# Installer CLI+GUI avec yay (recommandé sur Arch, Manjaro)
yay -S vmlinux-to-elf libadwaita python-gobject

# Installer CLI+GUI avec uv (exemple avec Fedora)
sudo dnf install -y uv glib2-devel libadwaita-devel gtk4-devel \
    gobject-introspection-devel python3-gobject-devel \
    python3-devel cairo-devel @development-tools
uv tool install vmlinux-to-elf[gui]
vmlinux-to-elf-gui --install-metadata # Installer le fichier .desktop

# Installer CLI avec uv et GUI avec Flatpak (recommandé sur
# les distributions avec libadwaita < 1.6)
sudo dnf install -y uv flatpak @development-tools
uv tool install vmlinux-to-elf

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install re.fossplant.vmlinux-to-elf

Configuration de l'environnement de développement local :

sudo snap install --classic astral-uv
sudo apt install git
git clone [email protected]:marin-m/vmlinux-to-elf.git

# Dépendances pour l'interface graphique GTK-4
sudo apt install libgirepository-2.0-dev libadwaita-1-dev \
    gir1.2-adw-1 gir1.2-gtk-4.0 python3-dev blueprint-compiler

cd vmlinux-to-elf
cp -a .github/hooks/* .git/hooks/
# Télécharger les modules Python et initialiser virtualenv (crée « .venv »,
# appeler « source .venv/bin/activate » pour l'activer)
uv sync --extra gui
# Ajouter vmlinux-to-elf au $PATH, afin que les commandes soient appelables
# à l'échelle du système (crée un lien symbolique vers la source dans « ~/.local/bin »)
uv tool install -e .[gui]

Fonctionnalités

  • Prendre un blob binaire brut ou un fichier kernel ELF comme entrée [OK]
  • Détecter et décompresser automatiquement les principaux formats de compression utilisés pour le kernel Linux [OK]
  • Trouver et extraire la table de symboles kernel intégrée (kallsyms) du fichier d'entrée [OK]
  • Déduire l'architecture du jeu d'instructions, l'endianness et la taille en bits, en s'appuyant entre autres sur les signatures courantes de prologue de fonctions [OK]
  • Déduire le point d'entrée du kernel à partir des symboles contenus dans la table kallsyms [OK]
  • Fournir une déduction de base pour l'adresse de base du kernel [OK] (pour l'instant, considérez qu'il s'agit de la première adresse de symbole « TEXT » du binaire avec les bits de poids faible 0xfff mis à zéro - semble fonctionner suffisamment bien)
  • Décompresser certains types de fichiers Android boot.img, commençant par une signature magique ANDROID! ou UNCOMPRESSED_IMG [OK]
  • Produire en sortie un fichier .ELF entièrement analysable avec IDA Pro ou Ghidra [OK]

Comment cela fonctionne-t-il, vraiment ?

Un bref historique de la table de symboles « kallsyms » se trouve en haut du fichier « kallsyms.py ». En bref, elle a été introduite vers 2004 dans le kernel Linux sous sa forme actuelle et sert, entre autres, à afficher les messages « Kernel oops ».

Elle contient des tuples « nom du symbole », « adresse du symbole », « type du symbole » (les types de symboles étant désignés par une seule lettre, d'une manière similaire à l'utilitaire nm), ces informations étant densément empaquetées avec un algorithme de compression simple.

Le schéma ci-dessous montre comment ces informations sont sérialisées dans le kernel, le décalage de chaque structure respective étant détecté par vmlinux-to-elf via des heuristiques :

Télécharger l’outil