Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
vmlinux-to-elf — Ein Tool, um aus einem rohen Kernel eine vollständig analysierbare .ELF-Datei wiederherzustellen, indem die Kernel-Symboltabelle (kallsyms) extrahiert wird. | Kitploit
Tools/GitHubGitHub/marin-m/vmlinux-to-elf
Embedded-System-SicherheitReverse EngineeringBinäranalyseFirmware-Analyse
GitHubmarin-m/vmlinux-to-elf

vmlinux-to-elf

Ein Tool, um aus einem rohen Kernel eine vollständig analysierbare .ELF-Datei wiederherzustellen, indem die Kernel-Symboltabelle (kallsyms) extrahiert wird.

Repository anzeigen
1.8k18247vor 3 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

vmlinux-to-elf

Dieses Tool ermöglicht es, aus einem vmlinux/vmlinuz/bzImage/zImage-Kernelabbild (entweder einem rohen Binär-Blob oder einer bereits vorhandenen, aber von Symbolen befreiten .ELF-Datei) eine vollständig analysierbare .ELF-Datei mit wiederhergestellten Funktions- und Variablensymbolen zu erzeugen.

Einführungsgrafik

Zu diesem Zweck durchsucht es Ihren Kernel nach einer Kernel-Symboltabelle (kallsyms), einer komprimierten Symboltabelle, die in fast jedem Kernel nahezu unverändert vorhanden ist.

Da die betreffende Symboltabelle ursprünglich komprimiert ist, sollten damit Zeichenketten wiederhergestellt werden können, die im ursprünglichen Binärbild nicht sichtbar sind.

Es erzeugt eine .ELF-Datei, die Sie mit IDA Pro und Ghidra analysieren können. Dieses Tool ist daher für das Reverse Engineering eingebetteter Systeme nützlich.

Aus dem Snap Store herunterladen   Bei Flathub herunterladen

Verwendung:

# Command line:
vmlinux-to-elf <input_kernel.bin> <output_kernel.elf>

# Command line, list symbol addresses only:
kallsyms-finder <input_kernel.bin> # If installed with uv
vmlinux-to-elf.kallsyms-finder # If installed with snap

# Command line, just decompress the kernel:
vmlinuz-decompressor <input_kernel.bin> <output_kernel.bin> # If installed with uv
vmlinux-to-elf.vmlinuz-decompressor # If installed with snap

# Graphical:
vmlinux-to-elf-gui # If installed with uv
vmlinux-to-elf.gui # If installed with snap
flatpak run re.fossplant.vmlinux-to-elf # If installed with flatpak

Hauptbildschirm der Anwendung Ansicht der Kernel-Offsets

Installation:

# Install CLI+GUI with Snap (recommended on Ubuntu)
sudo snap install vmlinux-to-elf

# Install CLI+GUI with yay (recommended on Arch, Manjaro)
yay -S vmlinux-to-elf libadwaita python-gobject

# Install CLI+GUI with uv (example with 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 # Install .desktop file

# Install CLI with uv and GUI with Flatpak (recommended on
# distributions with 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

Einrichtung der lokalen Entwicklungsumgebung:

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

# Dependencies for the GTK-4 GUI
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/
# Download Python modules and initialize virtualenv (creates ".venv",
# call "source .venv/bin/activate" to set up)
uv sync --extra gui
# Add vmlinux-to-elf to $PATH, so that the commands are callable
# system-wide (creates a symlink to the source in "~/.local/bin")
uv tool install -e .[gui]

Funktionen

  • Ein rohes Binär-Blob oder eine ELF-Kerneldatei als Eingabe akzeptieren [OK]
  • Die wichtigsten für den Linux-Kernel verwendeten Komprimierungsformate automatisch erkennen und entpacken [OK]
  • Die eingebettete Kernel-Symboltabelle (kallsyms) in der Eingabedatei finden und extrahieren [OK]
  • Die Befehlssatzarchitektur, Endianness und Bitgröße ableiten, unter anderem anhand gängiger Funktions-Prolog-Signaturen [OK]
  • Den Einstiegspunkt des Kernels aus den in der kallsyms-Tabelle enthaltenen Symbolen ableiten [OK]
  • Eine grundlegende Ableitung der Kernel-Basisadresse bereitstellen [OK] (vorerst gilt sie als die erste „TEXT“-Symboladresse des Binärbilds mit den unteren 0xfff-Bits gelöscht – scheint gut genug zu funktionieren)
  • Bestimmte Arten von Android-boot.img-Dateien entpacken, die mit einer ANDROID!- oder UNCOMPRESSED_IMG-Magic beginnen [OK]
  • Eine mit IDA Pro oder Ghidra vollständig analysierbare .ELF-Datei als Ausgabe erzeugen [OK]

Wie funktioniert es eigentlich?

Eine kurze Geschichte der „kallsyms“-Symboltabelle finden Sie am Anfang der Datei „kallsyms.py“. Kurz gesagt wurde sie circa 2004 in ihrer aktuellen Form in den Linux-Kernel eingeführt und dient unter anderem dazu, die „Kernel Oops“-Meldungen auszugeben.

Sie enthält Tupel aus „Symbolname“, „Symboladresse“ und „Symboltyp“ (Symboltypen werden mit einem einzelnen Buchstaben bezeichnet, ähnlich wie beim nm-Dienstprogramm); diese Informationen sind mit einem einfachen Komprimierungsalgorithmus dicht gepackt.

Das folgende Schema zeigt, wie diese Informationen im Kernel serialisiert werden, wobei der Offset der jeweiligen Struktur von vmlinux-to-elf durch Heuristiken erkannt wird:

Tool herunterladen