Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
vmlinux-to-elf — Uma ferramenta para recuperar um .ELF totalmente analisável de um kernel bruto, através da extração da tabela de símbolos do kernel (kallsyms) | Kitploit
Ferramentas/GitHubGitHub/marin-m/vmlinux-to-elf
Segurança de Sistemas EmbarcadosEngenharia ReversaAnálise de BináriosAnálise de Firmware
GitHubmarin-m/vmlinux-to-elf

vmlinux-to-elf

Uma ferramenta para recuperar um .ELF totalmente analisável de um kernel bruto, através da extração da tabela de símbolos do kernel (kallsyms)

Ver Repositório
1.8k18247há 3 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

vmlinux-to-elf

Esta ferramenta permite obter um arquivo .ELF totalmente analisável a partir de uma imagem de kernel vmlinux/vmlinuz/bzImage/zImage (seja um blob binário bruto ou um arquivo .ELF pré-existente, porém sem símbolos), com símbolos de funções e variáveis recuperados.

Ilustração de abertura

Para isso, ela verifica o seu kernel em busca de uma tabela de símbolos do kernel (kallsyms), uma tabela de símbolos compactada que está presente em quase todos os kernels, quase sem alterações.

Como a tabela de símbolos em questão é originalmente compactada, ela deve recuperar strings que não são visíveis no binário original.

Ela produz um arquivo .ELF que você pode analisar usando IDA Pro e Ghidra. Portanto, esta ferramenta é útil para engenharia reversa de sistemas embarcados.

Get it from the Snap Store   Get it on 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

Tela principal do aplicativo Visualização de offsets do kernel no aplicativo

Instalação:

# 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

Configuração do ambiente de desenvolvimento 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]

Recursos

  • Aceitar um blob binário bruto ou arquivo de kernel ELF como entrada [OK]
  • Detectar e descompactar automaticamente os principais formatos de compressão usados pelo kernel Linux [OK]
  • Encontrar e extrair a tabela de símbolos do kernel embutida (kallsyms) do arquivo de entrada [OK]
  • Inferir a arquitetura do conjunto de instruções, o endianness e o tamanho de bits, contando, entre outras coisas, com assinaturas comuns de prólogo de funções [OK]
  • Inferir o ponto de entrada do kernel a partir dos símbolos contidos na tabela kallsyms [OK]
  • Fornecer inferência básica para o endereço base do kernel [OK] (por enquanto, considere que é o endereço do primeiro símbolo "TEXT" do binário com os bits 0xfff inferiores zerados - parece funcionar bem o suficiente)
  • Desempacotar certos tipos de arquivos boot.img do Android, começando com uma magia ANDROID! ou UNCOMPRESSED_IMG [OK]
  • Produzir um arquivo .ELF totalmente analisável com IDA Pro ou Ghidra como saída [OK]

Como isso realmente funciona?

Uma breve história da tabela de símbolos "kallsyms" pode ser encontrada no topo do arquivo "kallsyms.py". Resumidamente, ela foi introduzida por volta de 2004 no kernel Linux em sua forma atual e é usada para imprimir as mensagens de "Kernel oops", entre outras coisas.

Ela contém tuplas de "nome do símbolo", "endereço do símbolo", "tipo do símbolo" (os tipos de símbolo são designados com uma única letra, de maneira semelhante ao utilitário nm), sendo essas informações compactadas de forma densa com um algoritmo de compressão simples.

O esquema abaixo mostra como essas informações são serializadas no kernel, sendo o offset de cada estrutura respectiva detectado pelo vmlinux-to-elf por meio de heurísticas:

Baixar ferramenta