Как распаковать payload.bin из прошивки Android

Файл payload.bin внутри ZIP-архива OTA-прошивки — это контейнер с образами разделов (boot, system, vendor и другими), и стандартные архиваторы вроде 7-Zip его не открывают: формат разработан Google специально для механизма обновлений A/B-разделов. Чтобы достать из него, например, boot.img для патча через Magisk или system.img для изучения прошивки, понадобятся специальные инструменты — payload-dumper-go, Python-скрипты или утилита Fastboot Enhance.

В этой статье разберём, что находится внутри payload.bin, какие программы умеют его распаковывать на Windows и Linux, как проверить целостность извлечённых образов и что делать, если распаковка обрывается с ошибкой. Инструкции носят универсальный характер: структура формата едина для всех устройств с A/B-разметкой, но набор разделов внутри зависит от конкретной модели смартфона.

Что такое payload.bin и зачем его распаковывать

Формат payload.bin появился вместе с механизмом бесшовных обновлений (Seamless Updates) в Android. Вместо набора отдельных img-файлов Google упаковывает все разделы в один бинарный контейнер с дельта- или полными данными, снабжённый манифестом и контрольными суммами. Система обновления на устройстве читает этот файл напрямую, а вот пользователю без специальных утилит содержимое недоступно.

Типичные сценарии, когда требуется распаковка:

  • 🔧 Извлечение boot.img или init_boot.img для получения root-прав через Magisk
  • 📦 Получение vendor_boot.img, dtbo.img для прошивки через fastboot
  • 🔍 Анализ прошивки: извлечение system.img и product.img для изучения содержимого
  • 🛠️ Восстановление устройства, когда нужен конкретный раздел из заводского образа

Обратите внимание: в payload.bin из инкрементального (дельта) обновления находятся не полные образы, а патчи к существующим разделам. Распаковать из него готовый boot.img не получится — нужен полный (full) OTA-пакет. Перед началом работы убедитесь, что скачан именно полный архив прошивки, а не инкрементальное обновление.

Подготовка: что понадобится перед распаковкой

Для работы потребуется компьютер с достаточным объёмом свободного места. Распакованные образы суммарно занимают заметно больше, чем сам payload.bin, поскольку данные внутри контейнера сжаты. Ориентируйтесь на запас в несколько десятков гигабайт для современных прошивок — точный объём зависит от устройства.

Дальше нужно выбрать инструмент. Основные варианты:

  • ⚙️ payload-dumper-go — быстрая консольная утилита, написанная на Go, работает на Windows, Linux и macOS
  • 🐍 payload_dumper на Python — классический скрипт, требует установленного Python и зависимостей
  • 🖥️ Fastboot Enhance — программа с графическим интерфейсом для Windows, умеет извлекать разделы из payload.bin без командной строки
📊 Какой инструмент для распаковки payload.bin вы используете?
payload-dumper-go
Python-скрипт payload_dumper
Fastboot Enhance (GUI)
Ещё не выбрал, ищу подходящий

Способ 1: распаковка через payload-dumper-go

Утилита payload-dumper-go считается самым быстрым вариантом благодаря многопоточной обработке. Скачайте готовый бинарный файл под свою операционную систему со страницы релизов проекта на GitHub — установка не требуется, достаточно распаковать архив.

Поместите payload.bin в одну папку с исполняемым файлом утилиты, откройте терминал или командную строку в этой папке и выполните команду. Базовый синтаксис выглядит так:

payload-dumper-go payload.bin

Если нужен только один конкретный раздел, например boot, используйте параметр фильтрации по имени раздела:

payload-dumper-go -partitions boot payload.bin

По завершении в папке вывода (по умолчанию создаётся рядом) появятся извлечённые .img-файлы. Проверьте, что размеры файлов не нулевые и соответствуют ожидаемым разделам — пустой или подозрительно маленький образ указывает на прерванный процесс.

☑️ Чек-лист распаковки payload.bin

Выполнено: 0 / 6

Способ 2: Python-скрипт payload_dumper

Альтернатива — классический скрипт payload_dumper, который работает там, где установлен Python 3. Этот вариант медленнее, но прозрачен: при необходимости можно открыть код и посмотреть, что именно происходит с данными.

Порядок действий следующий. Установите зависимости, затем запустите скрипт, указав путь к файлу и папку назначения:

pip install -r requirements.txt

python payload_dumper.py payload.bin --out output_folder

⚠️ Внимание: не прерывайте процесс распаковки закрытием терминала или отключением питания компьютера. Недозаписанные образы разделов выглядят как обычные файлы, но прошивка такого повреждённого boot.img может привести к незагружающемуся устройству. Дождитесь сообщения о завершении.

Способ 3: Fastboot Enhance с графическим интерфейсом

Для тех, кто предпочитает обходиться без командной строки, подойдёт программа Fastboot Enhance для Windows. В ней есть функция просмотра содержимого payload.bin: вы открываете файл, видите список разделов внутри и извлекаете только нужные кнопкой в интерфейсе.

Этот способ удобен, когда из всей прошивки требуется один-два образа и нет желания разбираться с параметрами консольных утилит. Минус — программа работает только под Windows, и её функциональность ограничена возможностями конкретной версии.

Сравнение инструментов для распаковки

Инструмент Платформа Интерфейс Скорость
payload-dumper-go Windows, Linux, macOS Командная строка Высокая (многопоточность)
payload_dumper (Python) Windows, Linux, macOS Командная строка Средняя
Fastboot Enhance Windows Графический Средняя
Онлайн-сервисы Браузер Веб-интерфейс Зависит от загрузки файла

Отдельно стоит сказать об онлайн-сервисах распаковки. Загружать многогигабайтный файл на чужой сервер долго, а доверять стороннему ресурсу содержимое прошивки — не лучшая идея с точки зрения безопасности. Локальные инструменты предпочтительнее.

Типичные ошибки и их решения

Чаще всего процесс обрывается из-за банальных причин. Разберём основные сценарии и способы проверки.

Ошибка чтения файла или «invalid magic». Возможная причина — повреждённый или недокачанный payload!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!