Binbloom — Автоматический анализ бинарных прошивок без головной боли

26 июл 2025

Репозиторий давно не обновлялся

Последнее обновление было 2 года назад.

585
60
23
2 года

Когда бинарный файл — это черный ящик

Представьте ситуацию: вам в руки попадает сырой бинарный файл прошивки для встраиваемого устройства. Ни документации, ни исходников — только непонятный набор байтов. Знакомая проблема для тех, кто работает с reverse engineering или анализирует firmware? Именно для таких случаев команда Quarkslab создала binbloom — инструмент, который буквально «расшифровывает» бинарные прошивки.

Что умеет этот анализатор

Binbloom — это консольная утилита на C, которая выполняет три ключевые задачи:

  1. Определяет адрес загрузки — критически важный параметр для последующего анализа
  2. Выявляет порядок байт (endianness) — little-endian или big-endian
  3. Находит UDS базу данных — полезно при работе с автомобильными ECU

Причем делает это автоматически, используя статистические методы и эвристики.

Как это работает на практике

Установка проста — стандартный набор для проектов на C:

git clone https://github.com/quarkslab/binbloom.git
cd binbloom
autoreconf -i
./configure
make
sudo make install

А вот пример анализа 32-битной прошивки:

Реклама
binbloom firmware.bin
[i] 32-bit architecture selected.
[i] File read (20480 bytes)
[i] Endianness is LE                                
[i] 6 strings indexed                                    
[i] Found 3 base addresses to test                    
[i] Base address seems to be 0x60000000 (not sure)

Всего одна команда — и вы уже знаете архитектуру, порядок байт и возможные базовые адреса.

Особые случаи

Для небольших прошивок (<10 КБ) автоматическое определение endianness может давать сбои. В таких случаях можно явно указать порядок байт:

binbloom -e be firmware.bin

А для 64-битных систем просто добавляем флаг -a 64.

Автомобильный кейс: поиск UDS базы

Одна из самых полезных функций — поиск Unified Diagnostic Services database в прошивках автомобильных блоков управления. Выглядит это так:

binbloom -a 32 -e be -b 0x0 firmware.bin
[i] 32-bit architecture selected.
[i] Selected big-endian architecture.
[i] Base address 0x0000000000000000 provided.
[i] 764 strings indexed                                  
Most probable UDS DB is located at @000ee8c8, found 7 different UDS RID

Конечно, результат требует проверки — это эвристика, но инструмент значительно сужает область поиска.

Под капотом

Технически binbloom:

  • Написана на C
  • Использует многопоточность (-t для ускорения)
  • Имеет экспериментальный «глубокий» режим поиска (-d)
  • Поддерживает подробный вывод (-v)

Кому пригодится

  • Инженерам, работающим с встраиваемыми системами
  • Специалистам по обратной разработке
  • Аналитикам безопасности IoT устройств
  • Автомобильным диагностикам

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

Проект с открытым исходным кодом (Apache 2.0), разрабатывается экспертами Quarkslab. Звезды на GitHub (545+) говорят сами за себя — инструмент действительно полезен сообществу.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.