Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
vmlinux-to-elf — Uno strumento per recuperare un .ELF completamente analizzabile da un kernel grezzo, estraendo la tabella dei simboli del kernel (kallsyms) | Kitploit
Strumenti/GitHubGitHub/marin-m/vmlinux-to-elf
Sicurezza Sistemi EmbeddedReverse EngineeringAnalisi di BinariAnalisi del Firmware
GitHubmarin-m/vmlinux-to-elf

vmlinux-to-elf

Uno strumento per recuperare un .ELF completamente analizzabile da un kernel grezzo, estraendo la tabella dei simboli del kernel (kallsyms)

Vedi Repository
1.8k182473 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

vmlinux-to-elf

Questo strumento consente di ottenere un file .ELF completamente analizzabile da un'immagine kernel vmlinux/vmlinuz/bzImage/zImage (sia un blob binario grezzo che un file .ELF preesistente ma privo di simboli), con simboli di funzioni e variabili recuperati.

Landing illustration

A tale scopo, esegue una scansione del kernel per individuare una tabella dei simboli del kernel (kallsyms), una tabella dei simboli compressa presente in quasi tutti i kernel, per lo più invariata.

Poiché la tabella dei simboli in questione è originariamente compressa, dovrebbe recuperare stringhe che non sono visibili nel binario originale.

Produce un file .ELF che è possibile analizzare con IDA Pro e Ghidra. Questo strumento è quindi utile per il reverse engineering di sistemi embedded.

Get it from the Snap Store   Get it on Flathub

Utilizzo:

# 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

Application main screen Application kernel offsets view

Installazione:

# 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

Configurazione dell'ambiente di sviluppo locale:

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]

Funzionalità

  • Accetta come input un blob binario grezzo o un file kernel ELF [OK]
  • Rileva e decomprime automaticamente i principali formati di compressione utilizzati per il kernel Linux [OK]
  • Trova ed estrae la tabella dei simboli del kernel incorporata (kallsyms) dal file di input [OK]
  • Deduce l'architettura del set di istruzioni, l'endianness e la dimensione in bit, basandosi tra le altre cose sulle firme comuni dei prologhi delle funzioni [OK]
  • Deduce il punto di ingresso del kernel dai simboli contenuti nella tabella kallsyms [OK]
  • Fornisce una deduzione di base per l'indirizzo base del kernel [OK] (per ora, considera che sia il primo indirizzo di simbolo "TEXT" del binario con i bit inferiori 0xfff azzerati - sembra funzionare abbastanza bene)
  • Decomprime alcuni tipi di file boot.img Android, che iniziano con una magic ANDROID! o UNCOMPRESSED_IMG [OK]
  • Produce come output un file .ELF completamente analizzabile con IDA Pro o Ghidra [OK]

Come funziona, davvero?

Una breve storia della tabella dei simboli "kallsyms" si trova all'inizio del file "kallsyms.py". In breve, è stata introdotta nel kernel Linux nella sua forma attuale intorno al 2004 e viene utilizzata, tra le altre cose, per stampare i messaggi "Kernel oops".

Contiene tuple di "nome simbolo", "indirizzo simbolo", "tipo simbolo" (i tipi di simbolo sono designati con una singola lettera in modo simile all'utility nm); queste informazioni sono compattate con un semplice algoritmo di compressione.

Lo schema seguente mostra come queste informazioni vengono serializzate nel kernel; l'offset di ciascuna struttura viene rilevato da vmlinux-to-elf tramite euristiche:

Scarica lo strumento