Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
vmlinux-to-elf — Una herramienta para recuperar un .ELF totalmente analizable desde un kernel en bruto, mediante la extracción de la tabla de símbolos del kernel (kallsyms) | Kitploit
Herramientas/GitHubGitHub/marin-m/vmlinux-to-elf
Seguridad de Sistemas EmbebidosIngeniería InversaAnálisis de BinariosAnálisis de Firmware
GitHubmarin-m/vmlinux-to-elf

vmlinux-to-elf

Una herramienta para recuperar un .ELF totalmente analizable desde un kernel en bruto, mediante la extracción de la tabla de símbolos del kernel (kallsyms)

Ver Repositorio
1.8k18247hace 3 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

vmlinux-to-elf

Esta herramienta permite obtener un archivo .ELF completamente analizable a partir de una imagen de kernel vmlinux/vmlinuz/bzImage/zImage (ya sea un blob binario sin procesar o un archivo .ELF existente pero sin símbolos), con los símbolos de funciones y variables recuperados.

Ilustración de portada

Para ello, escanea el kernel en busca de una tabla de símbolos del kernel (kallsyms), una tabla de símbolos comprimida que está presente en casi todos los kernels, prácticamente sin alterar.

Debido a que la tabla de símbolos en cuestión está originalmente comprimida, debería recuperar cadenas que no son visibles en el binario original.

Produce un archivo .ELF que puedes analizar con IDA Pro y Ghidra. Por lo tanto, esta herramienta es útil para la ingeniería inversa de sistemas embebidos.

Obtenerlo en Snap Store   Obtenerlo en Flathub

Uso:

# 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

Pantalla principal de la aplicación Vista de offsets del kernel de la aplicación

Instalación:

# 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

Configuración del entorno de desarrollo local:

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]

Características

  • Aceptar como entrada un blob binario sin procesar o un archivo de kernel ELF [OK]
  • Detectar y desempaquetar automáticamente los principales formatos de compresión utilizados por el kernel de Linux [OK]
  • Encontrar y extraer la tabla de símbolos del kernel incrustada (kallsyms) del archivo de entrada [OK]
  • Inferir la arquitectura del conjunto de instrucciones, el endianness y el tamaño de bits, basándose entre otras cosas en firmas comunes de prólogos de funciones [OK]
  • Inferir el punto de entrada del kernel a partir de los símbolos contenidos en la tabla kallsyms [OK]
  • Proporcionar una inferencia básica para la dirección base del kernel [OK] (por ahora, se considera que es la primera dirección del símbolo "TEXT" del binario con los bits inferiores 0xfff en cero; parece funcionar bastante bien)
  • Desempaquetar ciertos tipos de archivos boot.img de Android, que comienzan con la firma mágica ANDROID! o UNCOMPRESSED_IMG [OK]
  • Producir como salida un archivo .ELF completamente analizable con IDA Pro o Ghidra [OK]

¿Cómo funciona realmente?

Puede encontrarse una breve historia de la tabla de símbolos "kallsyms" al principio del archivo "kallsyms.py". Brevemente, esta se introdujo en el kernel de Linux hacia 2004 en su forma actual y se utiliza, entre otras cosas, para imprimir los mensajes de "Kernel oops".

Contiene tuplas de "nombre del símbolo", "dirección del símbolo", "tipo del símbolo" (los tipos de símbolo se designan con una sola letra, de forma similar a la utilidad nm), y esta información está empaquetada de forma compacta con un sencillo algoritmo de compresión.

El esquema siguiente muestra cómo se serializa esta información en el kernel; el desplazamiento de cada estructura respectiva es detectado por vmlinux-to-elf mediante heurísticas:

Descargar herramienta