Файл прошивки в формате PAC встречается на устройствах с чипсетами Spreadtrum и Unisoc — и попытка открыть его обычным архиватором заканчивается ошибкой, потому что это не ZIP и не TAR, а контейнер собственного формата с заголовком, таблицей разделов и вложенными образами. Распаковать PAC нужно, когда требуется извлечь отдельный раздел (например, boot.img для получения root через Magisk), отредактировать системные файлы или собрать модифицированную прошивку обратно.
В этой статье разберём структуру PAC-файла, рабочие инструменты для его распаковки, порядок извлечения разделов и типичные ошибки. Материал ориентирован на Windows, поскольку большинство утилит для работы со Spreadtrum-прошивками выпускаются именно под эту систему.
Что представляет собой файл PAC
PAC — это упакованный контейнер, который создаётся официальной утилитой ResearchDownload (или её аналогами от производителя чипа). Внутри него находятся образы разделов устройства: загрузчик (fdl1, fdl2), boot, recovery, system, vendor, userdata и другие, а также служебная информация — имя продукта, версия, смещения и размеры каждого образа.
Структура файла условно делится на три части:
- 📦 Заголовок (header) — содержит сигнатуру, версию формата, имя прошивки и число вложенных файлов.
- 🗂 Таблицу файлов — список образов с указанием их имён, размеров и смещений внутри контейнера.
- 💾 Данные разделов — сами бинарные образы, записанные последовательно друг за другом.
Именно наличие таблицы смещений позволяет распаковщикам «вырезать» нужные блоки без полного понимания внутреннего устройства каждого образа. Поэтому для распаковки не нужен гекс-редактор — достаточно специализированной утилиты.
⚠️ Внимание: распаковка PAC-файла сама по себе безопасна — вы работаете с копией прошивки на компьютере. Риск появляется на этапе заливки модифицированных разделов обратно в устройство: ошибка в загрузчике может привести к состоянию «кирпича».
Какие инструменты понадобятся
Для распаковки PAC существует несколько проверенных подходов. Выбор зависит от того, нужно ли вам просто извлечь содержимое или также собрать прошивку обратно после правок.
| Инструмент | Назначение | Особенности |
|---|---|---|
| PacExtractor / SPD PAC Tool | Извлечение разделов из PAC | Простые утилиты, работают в пару кликов |
| ResearchDownload / UpgradeDownload | Прошивка и частично анализ PAC | Официальный инструмент Spreadtrum, показывает список разделов |
| Скрипты на Python (pac_extractor и аналоги) | Распаковка и пересборка | Гибкость, требуют установленного Python |
| Комплексные боксы (CM2, NCK и др.) | Распаковка, чтение, прошивка | Платные решения для сервисных центров |
Для разовой задачи — например, достать boot.img — достаточно бесплатной утилиты типа PacExtractor или Python-скрипта. Если планируется регулярная работа с прошивками Spreadtrum, имеет смысл освоить связку «распаковка скриптом + сборка обратно», так как не все графические утилиты умеют корректно пересобирать контейнер.
Подготовка перед распаковкой
Прежде чем запускать утилиту, проверьте несколько моментов. Во-первых, убедитесь, что файл действительно скачан полностью: обрыв загрузки — частая причина ошибок «invalid header» и «checksum mismatch» при распаковке. Сверьте размер файла с указанным на источнике, а если предоставлена контрольная сумма — сравните её.
Во-вторых, разместите файл в папке с коротким путём без кириллицы и пробелов, например C:\pac\. Некоторые старые утилиты Spreadtrum некорректно обрабатывают пути с русскими буквами и падают без понятного сообщения об ошибке.
В-третьих, временно добавьте папку в исключения антивируса. Утилиты для работы с прошивками нередко детектируются как подозрительные из-за низкоуровневых операций, и антивирус может заблокировать распаковку на середине процесса.
Пошаговая распаковка PAC-файла
Рассмотрим общий порядок действий на примере классической утилиты-распаковщика. Конкретные названия кнопок могут отличаться в зависимости от версии программы, но логика везде одинаковая.
- Запустите утилиту распаковки от имени администратора.
- Нажмите кнопку выбора файла (обычно
LoadилиOpen) и укажите путь к PAC-файлу. - Дождитесь, пока программа прочитает заголовок и покажет список вложенных разделов.
- Укажите папку назначения для извлечённых файлов.
- Нажмите
Extract/Unpackи дождитесь завершения процесса. - Проверьте содержимое целевой папки: там должны появиться файлы
.img,.binи служебный XML-файл с описанием структуры.
☑️ Проверка после распаковки
Если вы используете Python-скрипт, типовой вызов выглядит примерно так (точный синтаксис зависит от конкретного скрипта — читайте его документацию):
python pac_extractor.py firmware.pac output_folder
В результате в папке output_folder появятся те же образы разделов. Вариант со скриптом удобен тем, что его вывод легко проверить и автоматизировать, а многие такие скрипты имеют режим обратной сборки с ключом вроде --repack.
Что делать с извлечёнными разделами
После распаковки вы получаете набор образов, каждый из которых — самостоятельная сущность со своим форматом. Файл boot.img — это не архив, а образ с заголовком Android boot, ядром и ramdisk, и для его редактирования нужны уже другие инструменты: Magisk (для патча под root), Android Image Kitchen или подобные утилиты.
Разделы system.img и vendor.img на устройствах Spreadtrum обычно представляют собой образы файловой системы ext4 или sparse-образы Android. Sparse-образ сначала конвертируется в обычный утилитой simg2img, после чего его можно смонтировать в Linux или открыть специализированными программами в Windows. Точный формат конкретного раздела можно определить по сигнатуре в начале файла, просмотрев его в любом hex-редакторе.
Как определить формат образа по сигнатуре
Откройте файл в hex-редакторе и посмотрите первые байты. Значение 3A FF 26 ED (в обратном порядке) указывает на sparse-образ Android. Сигнатура ANDROID! в начале — это boot/recovery image. Файловая система ext4 имеет суперблок со смещения 0x438 с сигнатурой 53 EF. Эти признаки помогают понять, каким инструментом открывать конкретный раздел.
Обратная сборка модифицированной прошивки
Пересборка — самый ответственный этап. PAC-контейнер содержит контрольные суммы и таблицу смещений, поэтому просто «запаковать файлы обратно» архиватором нельзя: прошивальщик откажется принимать такой файл или, что хуже, прошьёт повреждённые данные.
Для корректной сборки используйте тот же инструмент, который поддерживает режим repack, либо официальную связку утилит от Spreadtrum. Общие правила:
- 🔧 Сохраняйте оригинальные имена файлов разделов — прошивальщик сопоставляет их с таблицей.
- 📏 Не меняйте набор разделов без необходимости: добавление или удаление образа требует правки конфигурации.
- ✅ После сборки проверьте, что новый PAC открывается в ResearchDownload и список разделов читается без ошибок.
⚠️ Внимание: перед прошивкой пересобранного PAC-файла убедитесь, что у вас есть способ восстановить устройство — оригинальная прошивка и работающий режим загрузки. Модифицированный загрузчик или boot-раздел с ошибкой может вывести аппарат из строя до уровня, когда поможет только программатор.
Типичные ошибки и их решение
Разберём проблемы, с которыми чаще всего сталкиваются при распаковке PAC.
«Invalid PAC file» или «bad magic». Возможная причина — файл повреждён при скачивании или это не PAC, а другой формат, переименованный в .pac. Проверьте сигнатуру файла в hex-редакторе и перекачайте прошивку из надёжного источника.
Утилита зависает или падает на середине. Проверьте путь к файлу (только латиница, без пробелов), запустите программу от имени администратора и добавьте папку в исключения антивируса. Также попробуйте другую версию распаковщика — старые утилиты могут не понимать PAC-файлы новых версий формата.
Разделы извлеклись, но system.img не открывается. Скорее всего, это sparse-образ. Конвертируйте его командой:
simg2img system.img system_raw.img
После конвертации образ можно монтировать или анализировать. Если и после этого файл не читается, возможна шифрованная или подписанная прошивка — такие встречаются на новых платформах Unisoc, и тогда потребуется инструмент с поддержкой конкретного чипа.
Часто задаваемые вопросы
Можно ли распаковать PAC обычным архиватором (WinRAR, 7-Zip)?
Нет. PAC — это бинарный контейнер со своей структурой заголовка и таблицы разделов, а не архив. Архиватор либо не откроет файл, либо покажет ошибку. Нужны специализированные утилиты для прошивок Spreadtrum/Unisoc.
Безопасно ли распаковывать прошивку на компьютере?
Да, сама распаковка — это просто чтение и копирование данных, она никак не влияет на устройство. Риск существует только при заливке модифицированной прошивки в аппарат.
Как извлечь только boot.img, а не все разделы?
Большинство распаковщиков позволяют выбрать отдельные разделы перед извлечением — снимите галочки с ненужных. Если утилита такой возможности не даёт, извлеките всё и удалите лишнее: на результат это не повлияет.
Утилита выдаёт ошибку контрольной суммы при распаковке. Что делать?
Чаще всего это признак повреждённого или не докачанного файла. Скачайте прошивку заново, по возможности с другого источника, и сверьте контрольную сумму, если она опубликована. Если ошибка повторяется на заведомо целом файле, попробуйте другую версию распаковщика.
Можно ли собрать PAC обратно после редактирования разделов?
Да, но только инструментом, который умеет корректно пересчитывать смещения и контрольные суммы контейнера. Обычная запаковка файлов архиватором не подходит — такой файл прошивальщик не примет или запишет некорректно.