Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
vmlinux-to-elf — Инструмент для восстановления полностью анализируемого .ELF-файла из сырого ядра путем извлечения таблицы символов ядра (kallsyms) | Kitploit
Инструменты/GitHubGitHub/marin-m/vmlinux-to-elf
Безопасность встроенных системОбратная инженерияАнализ Бинарных ФайловАнализ Прошивок
GitHubmarin-m/vmlinux-to-elf

vmlinux-to-elf

Инструмент для восстановления полностью анализируемого .ELF-файла из сырого ядра путем извлечения таблицы символов ядра (kallsyms)

Репозиторий
1.8k182473 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

vmlinux-to-elf

Этот инструмент позволяет получить полностью анализируемый файл .ELF из образа ядра vmlinux/vmlinuz/bzImage/zImage (либо из «сырого» бинарного файла, либо из уже существующего, но лишённого символов файла .ELF) с восстановленными символами функций и переменных.

Иллюстрация

Для этого он сканирует ваше ядро на наличие таблицы символов ядра (kallsyms) — сжатой таблицы символов, которая присутствует почти в каждом ядре в почти неизменном виде.

Поскольку соответствующая таблица символов изначально сжата, инструмент позволяет восстановить строки, которые не видны в исходном бинарном файле.

На выходе получается файл .ELF, который можно анализировать с помощью IDA Pro и Ghidra. Поэтому этот инструмент полезен для реверс-инжиниринга встраиваемых систем.

Get it from the Snap Store   Get it on Flathub

Использование:

# 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

Главный экран приложения Просмотр смещений ядра в приложении

Установка:

# 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

Настройка локального окружения для разработки:

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]

Возможности

  • Принимать на вход «сырой» бинарный файл или файл ядра в формате ELF [OK]
  • Автоматически определять и распаковывать основные форматы сжатия, используемые для ядра Linux [OK]
  • Находить и извлекать встроенную таблицу символов ядра (kallsyms) из входного файла [OK]
  • Определять архитектуру системы команд, порядок байтов и разрядность, опираясь в том числе на сигнатуры типичных прологов функций [OK]
  • Определять точку входа ядра по символам, содержащимся в таблице kallsyms [OK]
  • Обеспечивать базовое определение базового адреса ядра [OK] (пока считается, что это адрес первого символа «TEXT» в бинарном файле с очищенными младшими битами 0xfff — работает достаточно хорошо)
  • Распаковывать некоторые типы файлов Android boot.img, начинающиеся с магического ANDROID! или UNCOMPRESSED_IMG [OK]
  • Создавать на выходе файл .ELF, полностью анализируемый с помощью IDA Pro или Ghidra [OK]

Как это работает на самом деле?

Краткая история таблицы символов «kallsyms» приведена в начале файла «kallsyms.py». Вкратце, она появилась в ядре Linux примерно в 2004 году в своём нынешнем виде и используется, среди прочего, для вывода сообщений «Kernel oops».

Она содержит кортежи «имя символа», «адрес символа», «тип символа» (типы символов обозначаются одной буквой, аналогично утилите nm), и эта информация плотно упакована простым алгоритмом сжатия.

На схеме ниже показано, как эта информация сериализуется в ядре; смещение каждой соответствующей структуры определяется vmlinux-to-elf с помощью эвристик:

Скачать инструмент