Как запаковать файл в bin

Обновлено: 05.07.2024

У некоторых из нас запакованая геймдата и нет возможности внести какие либо правки.
Создаю эту тему для тех кто не знает и не умеет ЭТО сделать сам.

Для начала, объясню для чего нужна запаковка.
Запакованая геймдата приносит только один плюс. Быстродействие в игру (лично не проверял)

Взято с форума АМК:

Упаковка геймдаты от SOLVADOR

Кладёте этот cmd файл рядом с converter.exe и запускаете его двойным кликом. ждёте конца его работы. Внутри папки STALKER (в нашем примере) будут лежать уже запакованные файлы.

Для распаковки используйте утилиту для упаковки. Создаёте аналогичный файл (например unpack.cmd) примерно, с таким содержимым:

chcp 1251
converter -unpack -2947ru gamedata.db0
converter -unpack -2947ru gamedata.db1
converter -unpack -2947ru gamedata.db2
converter -unpack -2947ru gamedata.db3
converter -unpack -2947ru gamedata.db4
converter -unpack -2947ru gamedata.db5
converter -unpack -2947ru gamedata.db6
converter -unpack -2947ru gamedata.db7
converter -unpack -2947ru gamedata.db8
converter -unpack -2947ru gamedata.db9
converter -unpack -2947ru gamedata.dba
converter -unpack -2947ru gamedata.dbb
chcp 866
pause

Где:
gamedata.dbb имя архива для распаковки.

ЗЫ Пример привёл для распаковки оригинальных архивов Сталкера. Измените названия архивов на нужные для Вас.
ЗЗЫ Утилита и cmd файл должны лежать в той же папке, где и архивы для распаковки.

Ещё один распаковщик, по проще (имхо).

Распаковываем архив, запускаем STALKER_Data_Unpacker_RU.exe , выбираем файл мода для распаковки, затем выбираем папку куда будет распакован файл.




Распаковывает все версии Сталкера.


Привет , нужен упаковщик ТЧ, но не тот что здесь на странице(он для меня сложный), если есть попроще, такой как распиловщик, то было бы здорово. Мой что то не пашет.

Самодельная утилита для упаковки DB-архивов Сталкера. Добавлено подробное разъяснение в pdf.


Распаковал архивы,игра перестала запускатся.Пожалуста опишите пошагово что делать после распаковки,что куда вставлять,что удалять.Если что извините ,я чайник

А для чего Вам нужна распаковка, что бы создать папку гейдата?


Да мне нужна папка геимдата

majros, Ну тогда попробуй делать так как на скринах..Выше же есть и видео


Я же просил обьяснить полностью с "ноля".Что надо сначала распаковать чистую игруи только потом устанавливать мод,или распаковывать уже сустановленным модом.Надо ли удалять из папки сталкер запакованные файлы?Вобщем как то так.Заранее спасибо.

Добавлено (26.10.2014, 13:06:33)
---------------------------------------------
Извиняюсь,может я задал вопрос не в той ветке,тогда перенаправте меня пожалуста.


Что надо сначала распаковать чистую игру и только потом устанавливать мод

Какую игру ты хочешь распаковать? Устанавливай мод, потом можешь распаковывать файлы в какую нибудь папку. Ни какие файлы и папки из игры не трогай и не удаляй. Создавай папку gamedata с нужными тебе файлами и закидывай её в игру.



majros, может я чего то не понимаю, но всё же спрошу. а зачем вам распаковывать игровые архивы? и на какой игре или моде вы ставите такие опыты?



majros, у тебя если игра которую ты скачал запакована ? то её перед установкой надо распаковать и установить скорее всего с помощью DAEMON, ( для 7z объём большой ) потом в корень игры бросаешь мод . Если мод запакован то распакуй с помощью 7z.


Сюда, соглашаешься на замену.

Если тебе нужно создать отдельную папку gamedata, если её у тебя нету.


создай новую папку там же в корне и переименуй (новая папка на gamedata ) с копируй и перенеси туда вот это


Хотя что то мне подсказывает, что всё, что я написал не надо. Ты мне просто дружище скрин корня игры сбрось я посмотрю, ну а там спишемся.



majros, Я конечно совсем не понимаю зачем тебе это? Так как при установки папки геймдата мода на распакованную геймдату игры произойдет слияние и замена файлов. Одним словом будет коллапс))) Но постараюсь помочь.

Распаковка db архивов Теней Чернобыля с помощью Total Commander . Распаковка db архивов Зова Припяти и Чистого неба

PS. Сори за дикцию))) Я не Левитан)))


Попробую обьяснить,у меня стоит сталкер ТЧ с модом ОП-2 папки геимдата нет,всё в db архивах,а мне хотелось поковырятся в файлах настроить под себя.Скрин корня сделал,а как вставить не знаю.



majros, а ковырять, что хотел ? Актор, так там античит стоит игра не запустится.

Я тебе завтра вечером подскажу как обойти, сей час уже поздно у нас, а дело не такое и быстрое. Пиши в ЛС.



majros, Авторы мода тоже в db архивы все запаковали. Чтоб не лазили кому не попадя. Чтоб в них полазить надо распаковать , но тут надо знать какие к теням относятся, а какие к моду. После правок обратно запаковать. Но очень не советую в оп 2 лазить. Чревато. Если ты не понимаешь как распаковывать и запаковывать, то что ты там ковырять то собрался? Запятую или точку не там поставишь или забудешь-все труба и стабильный вылет, тем более там есть защита от читерства. Чтоб лезть в скрипты надо как минимум понимать и знать азы.

majros А самое печальное в этом, не бери на свой счет, что накрутят в файлах, нахимичат , а потом кричат , что раздача плохая или автор кривой мод сделал. А виноваты , то сами. Сколько я такого на смотрелся-просто ужас


Пролог:
Накопилось много образов игр, патчей, дополнений, ломалок к ним.
Возникла необходимость собрать каждый набор в единый образ игры, для того чтобы запустив образ, была возможность установить все за 1 раз. И не тратить при этом до часу тыкая по всем компонентам в отдельности

Нужны программы:
I)
-1 - для распаковки образов игр, дополнений : .iso;.mds;.cue;.nrg и т.д.
-2 - для распаковки патчей(часто с расширением .ехе)
-3 - для распаковки и упаковки игровых архивов .cab;.exe;.big;.bin; и т.д.
-4 - для распаковки руссификаторов(тексты, звуки)

Технология(для того чтобы добрым людям было понятнее что я хотел бы сделать)

Просто в двух словах - это репак существующей игры с вырезанием всего, что не нужно, и, добовлением всего нового на текущий момент.

Есть образ игры 0000_0000.
Вышел патч p0000to0001 и патч p0001to0005.
Вышли дополнения add0001 и add0002, которые можно поставить на пропатченную игру 0000_p0005
Имеются рус.текст и рус.звук для игры, с возможностью поставить их на версию игры 0000_p0005

Вопрос к знающим :
Как распаковав образ игры 0000_0000 и затем все игровые архивы(за искл. случаев, когда файлы не упакованны, а находятся в папках DATA, BIN и т.д.)
II)
1) пропатчить эту игру до 0000_р0005
2) добавить к ней дополнения add0001 и add0002
3) добавить к ней и\или дополнениям файлы локализации
4) добавить ломалку
5) запаковать все обратно в игровые архивы (если есть необходимость, т.е. в образе игры они хранились, как .cab;.exe;.big;.bin; и т.д.)
6) запаковать обратно образ игры

Просьба отвечать по форме:
I)
-1
-2
-3
-4
II)
1) . 2). 3). 4). 5). 6).


По первому пункту т.е.
I
1) для распаковки их нужен Daemon Tools или Алкоголь любой версии
2) тут смотря какой формат ты не указал
3) самому хотелось бы узнать
4) Dragon Unpacker откроет всё ресурсы ну можешь попробывать Resourse Hacker


спс.
по 1) будет ли это корректно? Нашел прогу UltraIso, открывает все известные мне образы.
Возможности:
- загрузить редактируемый образ в вирт. привод в самой проге.
- можно добавить, удалить файл в структуре образа, и после изменений запаковать обратно в образ.
- встроенны конвертер форматов образов.
Может быть есть , что-то более продвинутое по функциям?


В интернете можно найти примеры скриптов, основываясь на которых, можно сделать свой собственный инсталятор. Обширная, встроенная справка по всем правилам написания скрипта и их команд; при желание сможет разобраться любой человек, даже такой далекий от написания сриптов, как я. Посмотрев несколько примеров их написания(в справке или по ссылке выше), вы сможете создать свой первый инсталятор уже в первый час, после небольших эксперементов.

П.С.: данная тема для меня актуальна, буду ее по возможности пополнять и поддеживать. По мере насыщения буду редактировать и добавлять все во второй пост, в порядке указанном в 1 посте. Буду благодарен заинтересованным людям за помощь, думаю у всех хоть раз вставала потребность в перепаковки, но не было знания, как это сделать, или времени, чтобы это вяснить.
Убедительная просьба! Производить обменя опытом строго по Теме


Я делаю так. Ставлю игру, ставлю все патчи + и т.д. Кидаю все в архив 7z(жмет лучше всех). Пишу небольшой установщик (до метра) в котором распаковщик архива + все записи реестра игры, патчей и т.д. работает почти 100%. Тема по идее очень обширная, но ИМХО не используйте инну сетап, и никогда не суйте в инсталлер архивы.

Пс: тож бу следить за темой, опыта много уже)))

пс2: для распаковки патчей и т.п.часто подходит universal extractor, а игровые архивы в большинстве случаев открываются только индивидуальными программами.

И еще. Обратно почти 100% засунуть не сможешь. Зато можно создать собственный образ со своим барахлом, той же ультрой исо.


Я ставлю игру и все к ней,затем делаю установщик инно сетапом. Она может даже автоматом записывать параметры в реестр и запускать сторонние установщики - это для всяких дров и вспомогательных программных пакетов. Затем еще можно сделать красивый авторан прогой autoplay media studio. В конце пишем всю эту благодать на болванку и кладем на полочку до лучших времен.


Спасибо за информацию, переварю и подправлю свой пост. 1 исправление уже наметилось - начинается все с тотальной установки полного пакета игры на момент создания.
Пока что сформулирую два пути развития перепаковки игры связанных с ее целью:
1 - облегчение дистрибутива Мульти версий, ее пережатие - более быстрое, но менее насыщенное
2 - полное редактирование с добовлением всех обновлений и т.д. - более долгое и сложное, но упрощает последующее хранение и использование
На повестку новая задача:
- выявить и описать более подробно методы поиска ключей в реестре, которые записываются в него при инсталяции игр, патчей и т.д.
- последующее их добавление при сборке в новый инсталятор.
Думаю внесем UltraIso, как наеболее понятную и доступную программу для распаковки, преоброзования и создания образов игр в наш инструментарий, до появления претендента лучшего по опциональности и тойже простоте =)

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

PS.: рад что тема развивается, всем спасибо!


Есть бесплатная прога, которая распаковывает архивы EXE, проверял всё распаковывает даже патчи игровые, но я название проги забыл :(


БлэкВэй, а ну реестр и запуск левых программ все подерживают. Я пользуясь create install 2003.

Зараженый вирусами файл инно сетапа ниче не спасет, лучше делать отдельный архив с файлами игры.

Кузя, я про нее выше писал:)


По реестру. Обычно нужные записи завязаны на автора игры

пример:нвн2 от фирмы обсидан, запустим regedit(run>regedit) hklm>software>obsidan>neverwinter и там все ключи:) у большинства игр что то подобное:)

пс:значения реестра редко бывают статичными, часто нужно указать путь к игре, путь к папке в пуске. При этом НЕ нужно например писать параметры графических настроек и клавиатуры(как у нфс это бывает).

Обработка (распаковка и сборка) прошивок и образов (*.img, *.bin) строго под WINDOWS

Эта тема создана для продолжения обсуждения и помощи в обработке различных образов под Windows.

Начало было положено в другой теме, но автор негативно воспринял обсуждения, не касающиеся его средства, предложил обсуждать в личке или завести другую тему. Я категорически против общения по личке, поскольку много народу не увидит обсуждаемой информации, которая может оказаться очень полезной, и не сможет внести свою лепту в обсуждение. Поэтому пришел к решению создать эту тему. В ней хочу предложить свои утилиты для распаковки образов формата EXT2\EXT3\EXT4\SPARSE\YAFFS2, свой вариант кухни для распаковки\запаковки полных прошивок под Rockchip, MTK (в виде файлов *.img или архивов *.tar(rar)) и содержащихся внутри прошивок отдельных образов типа system, kernel, recovery, boot. Это то что уже сделано и работает, в ближайших планах подружить распаковщик с образами *.SIN (формат для Sony Xperia)

Полезное
(Примеры, варианты, утилиты, кухни, скрипты, обработки разных образов)

make_ext4fs - утилита для сборки образов в формате EXT4 и SPARSE EXT4 (добавлен способ сборки system через 'таскание мышкой')

AndImgTool (Android Image Tool)

Утилита для распаковки и обратной сборки загрузочных образов типа BOOT и RECOVERY для ARM-платформы, неважно какой проц устройства (рокчип, медиатек и т.д. и т.п.), важно какого стандарта придерживался производитель! На данный момент поддерживаются следующие форматы: Android Boot Image (так же и с оберткой MTK внутренних блоков кернела и рамдиска и с новым блоком DTB), KRNL Image, UBOOT Image (форматы паковки: none, LZMA, GZIP), распаковка\запаковка полных прошивок для RockChip (RKFW\RKAF)
Подробнее про утилиту, список протестированных устройств , инструкция, скрины и логи тут.

AndImgTool версия 1.3.0 Обновлено: 30.12.2014 релиз и подробности тут
- Добавлена поддержка распаковки\запаковки x86 загрузочных образов (функционал перенесен из утилиты xImgTool)

AndImgTool версия 1.2.2 AndImgTool_1_2_2.rar ( 196.73 КБ )
Обновлено: 22.10.2014 - обновление функционала, подробности тут
AndImgTool версия 1.2.1 Обновлено: 13.08.2014 - исправлены найденные ошибки
AndImgTool версия 1.2.0 AndImgTool_1_2_0.rar ( 196.16 КБ )
Обновлено: 10.07.2014
- добавлен функционал по поддержке кернела с XZ-компрессией
- добавлен функционал по распаковке рамдиска сжатого LZMA для формата Android Boot Image
- изменен алгоритм запаковки в LZMA (для большей схожести при перепаковке оригинальных данных)
подробнее про изменения в этой версии, логи работы утилиты
AndImgTool версия 1.1.2 Обновлено: 12.06.2014 Промежуточная версия 1.1.2 с реализованной обработкой блоков с UBOOT-оберткой для формата Android Boot Image и описание этой обертки для блоков рамдиска и кернела, примеры и логи распаковки подобных образов тут
AndImgTool версия 1.1.1 AndImgTool_1_1_1.rar ( 115.14 КБ )
Обновлено: 20.05.2014 подробнее про изменения в этой версии, логи работы утилиты
AndImgTool версия 1.1.0 AndImgTool_1_1_0.rar ( 115.38 КБ )
Обновлено: 16.05.2014 подробнее про изменения в этой версии, логи работы утилиты
AndImgTool версия 1.0.0 AndImgTool_1_0_0.rar ( 109.14 КБ )
Первая версия
24.04.2014 ОБНОВЛЕНО В связи с тестированием новые версии выкладываются в постах темы, пока текущая версия утилиты 1.0.8, тестируется пересборка zImage (актуально для загрузочных образов UBOOT-OMAP)

ImgExtractor

- основная утилита для распаковки образов файловых систем типа system, userdata, cache, secro (расширение может быть любое, например img или ext4).
Поддерживаются следующие форматы файловых систем: EXT2\EXT3\EXT4\YAFFS2\CRAMFS, форматы структуры образов (обертки) SPARSE\SIN( 1, 2 и 3 версии)\MOTO, поддерживается конвертация образа файловой системы формата EXT4 из обертки SIN или SPARSE непосредственно в EXT4, реализован вывод информации о суперблоке для образов файловых систем, дальше будет развиваться именно эта утилита.

ImgExtractor версия 1.3.7 Обновлено: 13.02.2015 релиз и подробности тут
- добавлена поддержка распаковки образов SPARSE-Marvell для MOTO
- исправлено падение утилиты при распаковке образов содержащих файлы с символами "?"
- добавлена идентификация формата UBIFS и обертки MOTO внутри SPARSE формата
- добавлена конвертация образов из EXT3\EXT4 в SPARSE с разбиением на файлы меньшего размера

Это полностью консольное приложение, использование для распаковки аналогично примеру работы с утилитой Ext4Extractor приведенному ниже. Если просто и кратко - то распаковываете архив прошивки (для тестирования формата SIN 3 версии использовал прошивку C6603_10.3.A.0.423_1270-1410_Rus.FTF), в распакованную папку копируете распакованный ImgExtractor и перетаскиваете мышкой нужные образы на распаковщик, как на скринах, в результате в этой папке появятся распакованные образы или в виде файла (*.ELF) или в виде папки с именем образа и символом подчерка в конце.

Прикрепленное изображение

Прикрепленное изображение


Ext4Extractor версия 1.5.2 Ext4Extractor_V1_5_2.rar ( 174.8 КБ )
- первый вариант распаковщика, пригодится для распаковки образов типа system, userdata, cache, secro (расширение может быть любое, например img или ext4), распаковывает форматы EXT2\Инструкция по распаковке system.img без помощи компьютера, прямо на Android устройствеEXT3\EXT4\SPARSE
Небольшое описание использования (написал по просьбе обладателей Самсунгов)

- утилита для распаковки\запаковки загрузочных образов (IMG, BIN) и контейнеров (INB, SZB, QSB ) для устройств на базе x86 Android Platform (Lenovo K900, Ramos i9, Asus ZenFone 4,5,6, ZTE Geek)

xImgTool версия 1.3.32xImgTool_1_3_32.rar ( 40.86 КБ )
ОБНОВЛЕНО: 06.11.2014
- поддержка нового размера блока bootstub
- сохранение новых атрибутов в блоке размеров
- при распаковке контейнера QSB части, участвующие при объединении в один файл, сохраняются в отдельной папке в оригинальном виде (особенно касается образов system и userdata)

xImgTool версия 1.3.31 17.10.2014 - добавлена обработка нового блока подписи, подробности тут
xImgTool версия 1.3.25 30.01.2014 тестовая версия 1.3.25, добавлена поддержка контейнера QSB
xImgTool версия 1.2.18 xImgTool_1_2_18.rar ( 28.58 КБ )
20.12.2013 - доработана поддержка образов-контейнеров (INB, SZB ), распаковка контейнера в папку и обратная сборка контейнера из содержимого папки, сборка основывается на файле container.cfg (подробнее тут)
xImgTool версия 1.2.6 xImgTool_1_2_6.rar ( 28.06 КБ )
10.12.2013 - добавлена поддержка образов-контейнеров (INB, SZB), распаковка контейнера в папку и сборка контейнера из содержимого папки, cборка основывается на файле container.cfg (подробнее тут)
- добавлена дополнительная обработка второго составного блока IFWI, который содержит внутри два блока с FIP Header (информация о версиях модулей прошивки)
xImgTool версия 1.1.1 xImgTool.rar ( 17.81 КБ )
22.11.2013 - добавлена поддержка распаковки LOGO и образов IFWI на блоки использующиеся в процессе прошивки через MFT(xFSTK)
xImgTool версия 1.0.27 Первый вариант утилиты (версия 1.0.27)
Реализована распаковка\запаковка образов типа boot.bin, pos.bin, droidboot.img, recovery.img, fastboot.img, kboot.bin - образы под x86 Android могут иметь или не иметь внутри себя OSIP-заголовок и блок подписи, так же бывают варианты с несколькими образами (областями данных) внутри одного файла. Реализован учет новых размеров составных блоков(bzimage и initrd), пересчет контрольной суммы OSIP-заголовка и расчет хеша SHA-256 для подписанной области данных.

В связи с тем, что основной функционал кухни перешел в единую утилиту AndImgTool, не требующую для своей работы никаких дополнительных CYGWIN DLL, настоятельно рекомендую использовать для работы с загрузочными образами именно AndImgTool (для образов файловых систем есть единая утилита ImgExtractor), поскольку пересборок кухни больше не планируется.

Мой вариант кухни для распаковки целиковых прошивок под Rockchip, MTK и их содержимого. Изначально делал эту модификацию под себя - для удобства вытаскивания файлов system из разных прошивок, оригинальная версия тут.


Те кто касался прошивок двигателя, а точнее PCM-модуля знаком с файлами прошивок в формате VBF. Вообще VBF файлы используют многие производители автомобилей: Volvo, Ford, Mazda, Land Rover и др. Однако, для загрузки прошивки сторонними загрузчиками/флешерами используется другой формат файла, а именно BIN. Многие загрузчики (kess, pcmflash, mmcflash и др.) работают именно с ним.

Как же преобразовать VBF-файл в BIN-файл? Какова структура VBF-файла?

Думаю, что некоторые из Вас задавалися этим вопросом. Скрывать тут особо нечего. Вся информация доступна в интернете, нужно лишь правильно задавать вопросы поисковой системе.


Как мы видим vbf файл состоит из двух частей:
1. Header — заголовок
2. Blocks — блоки данных

Где последние имеют следующую структуру (например, когда в vbf всего 3 блока):
[4 byte — address block1]
[4 byte — length block1]
[x byte — data block1]
[2 byte — CRC16 CCITT of block1]

[4 byte — address block3]
[4 byte — length block3]
[x byte — data block3]
[2 byte — CRC16 CCITT of block3]

Блоки следует один за другим.

Также поисковые системы выдают ещё интересную программу — VBF Tool.



А как это было сделано смотрите в следующем видео.

Update 26.07.2017:
Про просьбе seregawoof выкладываю видео работы программы VBF Tool. Программа позволяет просматривать VBF-файлы, а также создавать свои.
Кстати, VBF расшифровывается как Versatile Binary Format = Универсальный Бинарный Формат

PS:
Сразу оговорюсь, что я не программист. Скорей любитель. Посему буду благодарен любой критике.

PPS:
Исходники проекта в открытый доступ выкладывать не буду.
Кому интересно — пишите в личку.

PPPS:
Цель поста — немного приоткрыть завесу тайны по теме VBF-файлов.
Как и везде VBF-файлы имеют некоторые нюансы. Например, блоки данных могут быть сжаты или зашифрованы. Об этом нам скажет параметр data_format_identifier в заголовочной части.


Начнем с того, что тебе нужен Linux. В Windows ты сможешь только разобрать прошивку, но собрать обратно уже не получится по чисто техническим причинам. Теперь о прошивке. Обычно они распространяются в виде ZIP-архивов, прошиваемых через кастомные рекавери. Именно один из них нам и понадобится для опытов. Начинать путь ромодела я рекомендую с какой-нибудь максимально приближенной к AOSP кастомной прошивки, потому что в ней зачастую проще разобраться, чем в стоке.

Нужный ZIP можно найти на XDA Developers или 4PDA. Но имей в виду, что нужна прошивка конкретно для твоей модели аппарата, — у того же Galaxy S7 есть несколько модификаций для разных рынков, не всегда совместимых между собой.

Структура ZIP-файла с прошивкой

После загрузки распакуем архив с помощью любого архиватора. Внутри будет следующий набор файлов и папок:

  • META-INF — папка с метаинформацией о прошивке (сертификат автора, манифест со списком файлов, их контрольными суммами), скриптом обновления (updater-script) и инсталлятором (update-binary), который выполняет команды скрипта по монтированию разделов, копированию файлов и другим действиям с NAND-памятью;
  • boot.img — образ с ядром и RAM-диском (он прошивается в раздел boot);
  • system.new.dat — это, грубо говоря, и есть сама прошивка, а точнее образ раздела system, содержащий операционную систему Android за вычетом ядра;
  • system.transfer.list — содержит список команд, которые необходимо выполнить, чтобы поблочно скопировать содержимое system.new.dat в раздел system при установке прошивки;
  • system.patch.dat — используется для OTA-обновлений, то есть выборочного внесения изменений в прошивку; если прошивка «полная», он имеет нулевой размер.

Реверс малвари

Распаковываем system.new.dat

Файлы system.new.dat и system.transfer.list представляют для нас наибольший интерес. Точнее, не они, а содержащаяся в них система. Но добраться до нее не так просто.

Скрипт

Самые ленивые могут разобрать прошивку с помощью скрипта System_Extractor-Linux.

  1. Распаковываем архив с прошивкой в любую папку.
  2. Качаем скрипт по ссылке и разархивируем в любую папку.
  3. Запускаем файл ext (если будет ругаться на отсутствие Java, просто пропусти, нажав y ; Java нужна только для запаковки).
  4. Теперь выбираем распаковку, нажав кнопку 1, а затем Enter.
  5. Новая папка с именем extract_* появится рядом с файлом ext и папкой tools . Копируем в нее файлы system.new.dat и system.transfer.list .
  6. После копирования файлов нажимаем Enter и ждем. Через некоторое время нужно будет опять нажать Enter, ввести пароль администратора и еще раз тапнуть Enter.
  7. Готово. Содержимое system в папке extract_*/output .

Ручной способ

Распаковываем архив с прошивкой в любую папку (например, в rom ):

Скачиваем нужные нам инструменты в эту папку:

Он преобразует файл system.new.dat в raw-образ с именем system.img . Монтируем образ к подпапке mnt :

Содержимое образа system

Содержимое образа system

Структура каталогов Android

После распаковки system появится следующая каталоговая структура:

  • app — предустановленные приложения со стандартными привилегиями;
  • priv-app — предустановленные приложения с повышенными привилегиями, в том числе некоторые компоненты системы;
  • bin — бинарные файлы формата ELF, аналог каталогов /bin и /usr/bin в Linux. Содержит различные системные компоненты, используемые более высокоуровневыми компонентами системы;
  • etc — файлы настроек. Полный аналог /etc в Linux, используемый, однако, только теми самыми системными компонентами. Приложения Android хранят индивидуальные настройки в каталогах /data/data/ ;
  • fonts — шрифты. По умолчанию содержит только фирменные шрифты Roboto;
  • framework — библиотеки Java-классов, используемых системой и приложениями. Тут же лежит файл framework-res.apk , содержащий полное описание интерфейса операционной системы, включая все графические файлы;
  • lib и lib64 — Linux-библиотеки, используемые низкоуровневыми компонентами системы. Аналог каталогов /lib и /usr/lib в Linux, включая такие стандартные библиотеки, как libc, libz, libssl. На устройствах с архитектурой ARMv7 и ниже каталог lib64 будет отсутствовать;
  • media — медиафайлы: рингтоны, звуки уведомлений, звуки интерфейса и анимация загрузки ОС;
  • tts — файлы, необходимые синтезатору речи;
  • usr — каталог, который обычно содержит файлы, необходимые для работы приложений из каталога bin. По сути, аналог /usr/share ;
  • vendor — файлы, поставляемые производителем устройства. Обычно содержит бинарный firmware для различных железных компонентов, например модуля Wi-Fi;
  • xbin — необязательный каталог; кастомные прошивки используют его для хранения таких вещей, как интерпретатор bash, SSH, PowerTOP, BusyBox, и других полезных инструментов;
  • build.prop — файл, содержащий информацию о сборке, а также различные низкоуровневые настройки;
  • addon.d — содержит скрипты, запускаемые после установки прошивки. Сюда же GApps прописывают свой скрипт, благодаря которому возрождаются после переустановки прошивки.

Ознакомившись с базовой структурой Android, начнем вносить изменения.

Удаляем и добавляем приложения

Все предустановленные программы можно найти в двух папках:

Друг от друга они отличаются привилегиями доступа. Если программы из app имеют такие же полномочия, как сторонние программы (например, установленные из Play Store), то приложения из priv-app могут использовать привилегированные API (права privileged). Подробнее об этом можно узнать из нашей статьи.

Для предустановки приложения в прошивку просто кинь ее APK-файл в /system/app/ . Можно, конечно, создать отдельную папку, но в нашем случае в этом нет смысла, потому что папка служит для хранения библиотек и odex-файлов, которых у нас попросту нет. Для удаления просто удали папку с ним.

Можно пойти дальше и поменять стоковые приложения на аналоги. К примеру, для замены календаря удаляем папку Calendar и копируем в /system/app наш любимый com.rpagyc.simplecalendar.apk . А можно и не копировать. Тогда прошивка будет без календаря.

Главное, помни: стоковые программы могут быть связаны между собой. Поэтому удаление одной проги вполне может привести к полной неработоспособности другой (к примеру, CalendarProvider и Calendar: удалив первый, ты сделаешь неработоспособным не только стоковый, но и любой другой календарь). К счастью, в чистых AOSP-прошивках взаимосвязей не так много.

Меняем анимацию загрузки

Анимация хранится в виде PNG-картинок, упакованных в архив /system/media/bootanimation.zip без сжатия. Внутри архива находятся:

  • desc.txt — файл, описывающий анимацию;
  • part0 — папка с файлами анимаций, которые воспроизводятся первыми;
  • part1 — папка с файлами анимаций, которые воспроизводятся вторыми;
  • .
  • part? — крайняя папка, изображения с которой воспроизводятся в конце.

Файл desc.txt может содержать нечто вроде

Назначение этих строк интуитивно понятно: 1920 × 1080 — разрешение картинки, 60 — число кадров в секунду. Part0 и part1 указывают на папки, из которых будет воспроизводиться анимация, и последовательность воспроизведения. Вообще, может быть как одна часть, так и несколько (три и больше).

Изображения, находящиеся в папках part, пронумерованы пятью цифрами в порядке воспроизведения: 00000.jpg , 00001.jpg , 00002.jpg . Эти изображения можно поменять на свои, тем самым создав оригинальную анимацию. А можно просто удалить файл bootanimation.zip . Тогда девайс будет показывать анимацию из стандартного Android. Или воспользоваться уже готовой коллекцией анимаций на 4PDA.

Четыре части в bootanimation.zip для LineageOS

Четыре части в bootanimation.zip для LineageOS

Изменяем звуковое оформление

Фактически все звуки, которые воспроизводит система, хранятся в папке /system/media/audio . Внутри нее ты найдешь следующие папки:

  • alarms — мелодии будильника;
  • notifications — звуки уведомлений;
  • ringtones — мелодии звонка;
  • ui — системные звуки, например низкий заряд батареи, фокусировка камеры, выбор элементов интерфейса.

В alarms, notifications, ringtones можно накидать сколько угодно любых мелодий. Взять их можно, например, здесь:

И маленький лайфхак: удаление файлов из папки ui приведет не к сбоям и ошибкам, а к исчезновению системных звуков. Поэтому ты можешь легко отключить звук создания снимка с камеры, снятия скриншота, просто потерев содержащие эти звуки файлы (их имена интуитивно понятны).

Добавляем шрифты

Шрифты хранятся в fonts . Найти архивы с файлами шрифтов можно на 4PDA и XDA. Для установки достаточно скопировать с заменой ttf-файлы из архива в папку fonts .

Меняем системные настройки (build.prop)

В образе system есть интересный файлик build.prop , содержащий множество полезной информации о железе устройства и настройках, устанавливаемых по умолчанию, для различных стоковых приложений. Справедливости ради замечу, что это не всегда так. Например, в Gigaset ME и ME Pro build.prop разделен на две части. В одной части содержатся настройки для Gigaset ME, а для ME Pro некоторые строки продублированы, но ключи (название смартфона и так далее) в них другие. Это было сделано, чтобы обеспечить более-менее корректную работоспособность одной и той же прошивки на разных аппаратах.

Дополнительный файл для Gigaset ME и ME Pro

Дополнительный файл для Gigaset ME и ME Pro

Build.prop содержит (или может содержать) огромное количество настроек. Некоторые из них ничего не меняют, некоторые улучшают одно за счет ухудшения другого, но есть те, которые действительно полезны:

  • ro.product.model и ro.product.manufacturer — модель смартфона и имя производителя. С помощью замены этих строк можно заставить Play Store думать, будто у тебя другой смартфон, что откроет доступ к большему количеству софта. Для всяких малоизвестных китайских смартфонов эти строчки могут стать спасительными;
  • hw.qemu.mainkeys — принимает только два значения: 0 — показать наэкранные клавиши навигации, 1 — не показывать кнопки. Отсутствие строки соответствует 0;
  • debug.sf.nobootanimation — значение 1 отключает анимацию загрузки, что немного поднимает ее скорость. Установка 0 или удаление строки возвращает анимацию на место;
  • ro.telephony.default_network — говорит системе, в какой режим должна быть переключена мобильная сеть при загрузке;
  • ro.sf.lcd_density — DPI дисплея, наиболее точное значение для дисплея можно посчитать через удобный сайт. Но никто не запрещает поставить и большее или меньшее значение по своему вкусу: более высокие значения делают элементы интерфейса крупнее, низкие — меньше;
  • ro.config.vc_call_vol_steps — количество шагов громкости во время разговора (по умолчанию 8);
  • ro.config.media_vol_steps — количество шагов громкости мультимедиа (по умолчанию 15).

Внедряем в прошивку Google Apps

Почти всегда кастомные прошивки поставляются без сервисов Google и магазина приложений. Разработчики предлагают нам установить их отдельно с помощью пакета GApps. Однако его можно интегрировать прямо в прошивку.

Для начала необходимо скачать пакет GApps. Я рекомендую брать архивы Open GApps. Выбираешь версию Android, архитектуру процессора и вариант комплектации (Pico, Nano, Stock. ), который определяет, сколько различных приложений Google содержит архив. Я рекомендую скачать версию Pico. Она содержит только Play Store и набор необходимых для его работы библиотек.

Интеграция GApps в прошивку выполняется так:

  1. Распаковываем ZIP-архив GApps с помощью любого архиватора.
  2. Переходим в папку Core.
  3. Видим множество архивов с расширением .tar.lz . Извлекаем с помощью lzip.
  4. После распаковки копируем файлы из папок в соответствующие папки в system. Что куда кидать, нетрудно догадаться по структуре каталогов в архиве. Например, configupdater (со скриншота) нужно кидать в папку priv-app .
  5. Переходим в папку GApps (находится рядом с Core) и проделываем пункты 3 и 4 для файлов в ней.
  6. Все, мы интегрировали GApps в нашу прошивку!

Свободное место

Необходимо понимать, что место для установки прошивок ограниченно. Нельзя установить прошивку, размер которой перевешивает размер раздела system устройства. Посмотреть его значение можно, используя ADB:

Инфа о разделе system

Инфа о разделе system

Второй вариант: поставить на устройство терминал и набрать команду

Размер раздела в байтах можно узнать, установив на смартфон BusyBox и выполнив в терминале команду

Или то же самое с помощью ADB:

Место, занимаемое прошивкой, будет приблизительно равно размеру system в распакованном виде. Вообще, при создании прошивки необходимо учитывать, что юзер также может прошить поверх нее различные модификации (SuperSU, Xposed) или перенести приложения в раздел system. Например, минимальный пакет приложений Google (Pico) требует минимум 150 Мбайт дополнительного пространства для установки.

При необходимости размер файла прошивки можно уменьшить, удалив не только ненужные программы из /system/app ( /system/priv-app ) и звуки вызова из system/media/audio и bootanimation.zip , но и:

  • /system/tts/lang_pico — языки примитивного голосового движка Pico TTS, голосовой движок Google это не затронет;
  • /system/usr/srec/config/ — офлайн-языки. Можно будет скачать потом онлайн, если понадобится.

Сборка

После внесения изменений нужно собрать все обратно. Сначала запакуем раздел system в system.new.dat . Скачиваем нужные нам инструменты:

Преобразовываем нашу папку обратно в RAW-образ. Назовем его system_new.img :

1073741824 меняем на размер раздела system в байтах. Желательно даже сделать его чуть меньше. Делаем из RAW-образа sparse-образ:

Преобразуем наш образ в system.transfer.list и system.new.dat , которые и нужно кидать в архив с прошивкой, но сначала удалим старые файлы:

Отделим файлы прошивки от лишней шелухи (файлов, которые мы загружали для работы. Для этого удобно пользоваться архивом с прошивкой). Удалили? Теперь нужно запаковать прошивку в ZIP-архив (любым архиватором).

Осталось подписать архив. Сделать это можно как на самом Android с помощью ZipSigner, так и на ПК (потребуется установленная Java):

Подводные камни

Во время сборки system.new.dat ты можешь столкнуться с несколькими проблемами, вызванными постоянными изменениями в механизмах формирования прошивок Android. Описанный выше способ должен хорошо сработать в случае основанной на Android 5.1 прошивки, в более новых могут возникнуть сложности, так что потребуется использовать другие версии инструментов сборки. К сожалению, мы не можем описать все нюансы сборки, поэтому, возможно, придется погуглить.

Установка

Для установки кастомной прошивки необходим кастомный рекавери TWRP, позволяющий устанавливать неподписанные или подписанные тестовым ключом прошивки (именно такую мы создали). В журнале мы неоднократно описывали процесс его установки, да и в ветках форума, посвященных твоему устройству, обычно есть достаточно информации для того, чтобы это сделать.

Выводы

Эта статья описывает лишь верхушку огромного айсберга под названием «модификация прошивок». «Серьезные» прошивки не только дополняют ядро и саму прошивку со стоковыми приложениями множеством функций (которые зачастую вырваны из других ядер и прошивок), организовывая или даже меняя принципы их взаимодействия, но и вполне могут кардинально менять принципы работы ОС. Правда, такая поделка — это уже не Android, а отдельная ОС, даже если Play-сервисы получится туда поставить (кстати, такие действия, мягко говоря, не поощряются Google). Ну и не забываем: все оболочки от производителей — TouchWiz, ZenUI, HTC Sense и так далее — всего лишь обычные кастомы, максимально привязанные к железу устройства и друг к другу.

Читайте также: