Если вы скачали OTA-прошивку для смартфона Xiaomi, Google Pixel, OnePlus или другого Android-устройства и обнаружили внутри ZIP-архива файл payload.bin вместо привычных образов boot.img или system.img — это нормально: производитель упаковал все разделы прошивки в единый бинарный контейнер. Файл payload.bin встречается в обновлениях устройств с системой A/B-разделов (seamless updates), и без специальной утилиты извлечь из него отдельные образы не получится.
В этой статье разберём, что представляет собой формат payload.bin, зачем он нужен, какие данные в нём хранятся и как безопасно распаковать его на компьютере, чтобы получить нужный раздел — например, boot.img для получения root-доступа через Magisk или vendor.img для анализа прошивки.
Что такое payload.bin простыми словами
Payload.bin — это бинарный контейнер, в котором Android упаковывает образы разделов при OTA-обновлении (over-the-air, «по воздуху»). Внутри файла находятся сжатые данные разделов boot, system, vendor, product и других, а также служебная информация о том, как именно эти данные должны быть записаны на устройство.
Формат разработан Google для механизма бесшовных обновлений (A/B updates), появившегося в Android 7.0 Nougat. Устройства с такой схемой имеют два набора разделов — слот A и слот B. Пока вы пользуетесь смартфоном на активном слоте, обновление в фоне записывается в неактивный, а после перезагрузки устройство просто переключается на обновлённый слот.
Рядом с payload.bin в архиве прошивки обычно лежат два сопутствующих файла: payload_properties.txt (контрольные данные и хеши) и care_map.pb (список областей, которые нужно сохранить при обновлении). Сам payload.bin имеет собственный заголовок с подписью, поэтому просто переименовать его в .zip или открыть архиватором нельзя.
Payload.bin — это не архив в привычном смысле, а бинарный контейнер формата OTA с описанием операций записи разделов. Для извлечения нужен специальный инструмент — payload dumper.
Зачем производители используют этот формат
Главная причина — экономия трафика и надёжность обновления. Payload.bin поддерживает инкрементальные (дельта) обновления: вместо полного образа раздела файл может содержать только отличия новой версии от старой. Это заметно уменьшает размер скачиваемого обновления.
Дополнительные преимущества формата:
- 📦 Сжатие данных — образы внутри контейнера сжаты, что уменьшает объём загрузки.
- 🔐 Криптографическая подпись — заголовок файла подписан, устройство проверяет целостность перед записью.
- 🧩 Потоковая запись — обновление применяется блоками, без необходимости хранить распакованный образ целиком.
- ♻️ Откат при сбое — благодаря A/B-схеме неудачное обновление не «окирпичивает» устройство: оно загрузится со старого слота.
Для обычного пользователя всё это работает незаметно. А вот для тех, кто хочет получить root, установить кастомную прошивку или вытащить конкретный файл из системы, payload.bin становится препятствием — отсюда и популярность запросов о его распаковке.
Что находится внутри payload.bin
Состав контейнера зависит от устройства и типа прошивки (полная или инкрементальная), но типичный набор разделов выглядит так:
| Раздел | Назначение | Зачем извлекают |
|---|---|---|
boot.img | Ядро и ramdisk, отвечает за загрузку системы | Патч через Magisk для root-доступа |
system.img | Операционная система Android | Анализ прошивки, извлечение приложений |
vendor.img | Драйверы и компоненты производителя | Портирование прошивок, исследование |
dtbo.img | Device Tree Blob — описание оборудования | Сборка кастомных ядер |
vbmeta.img | Данные верифицированной загрузки (AVB) | Отключение проверки подписи при модификациях |
На устройствах с динамическими разделами (super-раздел) вместо отдельных system и vendor внутри может находиться образ super.img, который дополнительно содержит логические разделы. Его распаковка — отдельная задача, решаемая другими инструментами.
Как извлечь файлы из payload.bin
Самый распространённый способ — открытый инструмент payload-dumper-go (консольная утилита, есть сборки под Windows, Linux и macOS) или его Python-аналог. Рассмотрим общий порядок действий без привязки к конкретной версии утилиты.
Сначала подготовьте всё необходимое:
☑️ Подготовка к распаковке payload.bin
Далее запустите утилиту, указав путь к файлу. Типичный вызов выглядит так (точный синтаксис зависит от версии инструмента — сверяйтесь с его документацией):
payload-dumper-go payload.bin
По умолчанию утилита распакует все разделы в отдельную папку. Если нужен только один образ, например boot, многие версии поддерживают фильтрацию по имени раздела — это сэкономит время и место на диске. После завершения в выходной директории появятся готовые .img-файлы, с которыми можно работать дальше.
Если вам нужен только boot.img для Magisk, не распаковывайте весь контейнер — используйте опцию выборочного извлечения раздела. Это сократит время обработки с десятков минут до пары минут.
⚠️ Внимание: boot.img должен точно соответствовать версии прошивки, установленной на вашем смартфоне. Прошивка пропатченного образа от другой версии может привести к bootloop — устройство перестанет загружаться, и потребуется восстановление через fastboot.
Альтернативные способы распаковки
Консольная утилита — не единственный вариант. Существуют и другие подходы, у каждого свои ограничения:
- 🐍 Python-скрипты (например, классический payload_dumper) — требуют установленного Python и зависимостей, работают медленнее, но подходят там, где нет готового бинарника.
- 📱 Распаковка на самом Android-устройстве — существуют порты инструментов под Termux, но скорость и объём свободной памяти часто становятся ограничением.
- 🖥️ Инструменты с графическим интерфейсом — встречаются оболочки, упрощающие процесс для новичков, однако их происхождение стоит проверять: скачивайте только из доверенных источников.
Отдельный случай — устройства с динамическими разделами. Если после распаковки вы получили super.img вместо отдельных system и vendor, его нужно дополнительно обработать: сначала преобразовать из sparse-формата, затем извлечь логические разделы (например, утилитой lpunpack). Это уже продвинутый сценарий для разработчиков и портировщиков прошивок.
Почему payload.bin нельзя открыть архиватором
Файл имеет собственный бинарный формат: заголовок с магической сигнатурой, таблицу операций обновления (install operations) и сами данные разделов, записанные блоками. Это не ZIP и не tar — структура описана в спецификации update_metadata.proto проекта AOSP. Поэтому 7-Zip и подобные программы либо не откроют файл, либо покажут бессмысленный набор байт.
Типичные ошибки и проблемы при работе с payload.bin
Чаще всего пользователи сталкиваются с несколькими повторяющимися ситуациями. Разберём, что проверить в каждой из них.
Утилита выдаёт ошибку при чтении файла. Возможная причина — повреждённая или недокачанная прошивка. Проверьте размер payload.bin и, если источник предоставляет контрольные суммы, сверьте хеш файла. Также убедитесь, что вы распаковали ZIP полностью, а не запускаете утилиту на файле внутри архива.
Не хватает места на диске. Распакованные образы могут занимать заметно больше, чем сам payload.bin, поскольку данные внутри сжаты. Перед началом убедитесь, что свободного пространства в несколько раз больше размера исходного файла.
Пропатченный boot.img не загружается. Здесь диагностика сложнее: возможны несовпадение версии прошивки, включённая верифицированная загрузка (AVB) или ошибка при прошивке образа. Безопасный путь — вернуть стоковый boot.img из того же payload.bin через fastboot, после чего разбираться с причиной.
⚠️ Внимание: любые действия с прошивкой разделов (fastboot flash, отключение проверки vbmeta) выполняются на ваш риск и могут привести к потере данных или невозможности загрузки устройства. Перед экспериментами сделайте резервную копию важных данных и заранее убедитесь, что у вас есть полная стоковая прошивка для восстановления именно вашей модели.
Распаковка payload.bin сама по себе безопасна — это просто чтение файла на компьютере. Риск появляется на этапе прошивки извлечённых образов на устройство: здесь критичны точное соответствие версии и наличие пути отката.
Как проверить, что прошивка содержит payload.bin
Определить формат обновления можно до скачивания инструментов. Скачайте ZIP с OTA-прошивкой и откройте его любым архиватором: если в корне лежат файлы payload.bin и payload_properties.txt — перед вами A/B-формат, и для извлечения образов понадобится dumper-утилита.
Если же внутри архива сразу видны отдельные .img-файлы и скрипт прошивки (например, flash-all.bat или flash_all.sh), то это fastboot-прошивка в «классическом» виде — распаковывать ничего не нужно, образы доступны напрямую. У некоторых производителей оба вида пакетов существуют параллельно для одной модели, поэтому всегда смотрите описание конкретного файла на источнике загрузки.
Для устройств без A/B-разделов (старые модели и часть бюджетных устройств) payload.bin в обновлениях не используется вовсе — там применяются другие механизмы упаковки, зависящие от производителя.
Часто задаваемые вопросы
Можно ли прошить payload.bin напрямую через fastboot или recovery?
Нет, напрямую — нельзя. Fastboot работает с отдельными образами разделов (.img), а payload.bin — это контейнер, который нужно предварительно распаковать. На самом устройстве этот файл обрабатывает системный демон обновлений (update_engine), а не загрузчик.
Чем открыть payload.bin на Windows без командной строки?
Существуют инструменты с графическим интерфейсом, использующие те же алгоритмы распаковки. Однако консольный payload-dumper-go остаётся самым предсказуемым вариантом: он открыт, поддерживается сообществом и не требует установки. При выборе сторонних программ скачивайте их только из проверенных источников.
Безопасно ли извлекать payload.bin?
Да, сама распаковка — это обычное чтение и преобразование файла на компьютере, она никак не влияет на смартфон. Риск возникает только при последующей прошивке извлечённых образов на устройство: здесь важны точное соответствие версии и наличие способа восстановления.
Почему после распаковки нет boot.img, а есть super.img?
Возможная причина — ваше устройство использует динамические разделы. В этом случае system, vendor и ряд других разделов объединены в super.img, и для их извлечения нужен дополнительный шаг с утилитой lpunpack. При этом boot.img обычно всё равно присутствует отдельно — проверьте полный список разделов, который утилита выводит при запуске.
Можно ли из payload.bin получить прошивку для другого региона или модели?
Payload.bin строго привязан к конкретной модели и сборке. Извлечённые из него образы подходят только тому устройству, для которого выпущено обновление. Прошивка образов от другой модели или региона — частая причина bootloop и потери работоспособности, поэтому всегда сверяйте кодовое имя устройства и версию прошивки.