Boot & Recovery Repack for Windows | Разборка/сборка boot.img и recovery.img под Windows



Реп: (801)
Boot & Recovery Repack for Windows
версия:4.0

Последнее обновление программы в шапке: 27.01.2015

Прикрепленное изображение
еще скриншоты
Прикрепленное изображение
Прикрепленное изображение

winXP - НЕ ПОДДЕРЖИВАЕТСЯ!!! - у меня даже дистрибутивов таких уже нет, все железо которое у вас есть - без труда будет работать и на win7, не будьте впертыми ретроградами...
Краткое описание:
Разбирает, собирает boot и recovery БЕЗ установки сторонних програм типа CygWin или VM с линуксом.

Описание:
Утилита для распаковки/упаковки boot.img или recovery.img под WINDOWS!

Отныне не требуется установка дополнительных сторонних программ типа Cygwin или VM с убунтой для осуществления этого по-сути несложного процесса. Подключение телефона и проведение каких-либо манипуляций с ним также не требуется (в отличии от предыдущего способа).

Все исполняемые файлы (половина *.exe от Cyqwin) лежат в папочке bin + 2 батника.
Немного теории и вообще о процессе создания.
Нмного теории и о процессе создания
Как известно boot (recovery то же самое) состоит из нескольких частей:
- header
- kernel header
- kernel
- ramdisk_header
- ramdisk
Собственно разбирается только ramdisk - в нем структура папок и исполняемые файлы. Остальное не разбирается. Вообще т.е. никак.
Ramdisk - это gzip архив внутри которого cpio архив внутри которого папки и файлы.

Т.е. процесс разборки выглядит так:
- ищем offset для всех блоков
- режем файл на куски
- ramdisk распаковываем 2мя разными архиваторами.
Обратный процесс аналогичен, но еще нужно в ramdisk_header вставить новый размер нового ramdisk.
Проблем было очень много.
1. Отсутствие в windows инструментария (команд у command.com) - никаких команд по поиску offset, работы с HEX, разделением/склеиванием файлов, поиска внутри файлов и т.п. и т.д. там нет. В общем это давно всем известно. В линуксе они есть - а в винде - нету.
Поэтому были привлечены сторонние утилиты, а также частично утилиты из cygwin - например find, dd, cpio, gzip и также одна универсальная утилита для windows - Swiss File Knife - A Command Line Tools Collection. http://stahlforce.com/dev/swiss-file-knife.html
Само собой все это работает как ему хочется и увязать с батником дело не простое, но...
2. Основная засада из-за которой не получалось раньше пересобрать boot под windows - при работе с cpio и gz архивами терялись симлинки (symliink) а также (!) права. Если симлинки удалось починить почти сразу (cpio от cygwin в отличии от сторонних архиваторов с поддержкой cpio) прекрасно их сохраняет и восстанавливает, то вот с правами была полная засада... причем очень интересный момент - выяснил почти случайно.
Права на сами файлы и папки из директории rmdisk оставались такими как и было нужно, а вот на папку rmdisk права НЕ сохранялись при упаковке. В моем случае для создания архива использовалась функция "find ." - которая выводит список файлов внутри директории - и надо же так получится, что корневая папка тоже участвует в процессе - хотя ведь ее нет в архиве!!!
Изображение
и отображается в cpio архиве как точка бл... с правами... вот когда я это увидел - попробовал прямо в cygwin сделать chmod на папку - и чудо чудное - бут загрузился и тело включилось! Затем недолго думая я выдернул chmod из пингвина и вставил в скрипт.
Каким образом это работает в windows - я хз если честно. Думаю что уровне NTFS.
Ну в общем вот как-то так....

Требования:
- к структуре boot.img http://android-dls.com/wiki/index.php?titl...ack_Boot_Images
- к Windows - не ниже XP и тип файловой системы - NTFS
- установленная Java JRE или JDK (а может и не нужно оно...)

Телефоны, на которых получилось препаковать boot.img:
Standart:
Samsung Galaxy S i9001, S III, Note II
HTC Evo, Desire V
MTK:
- пока не попадалось таких чтобы не разобралось
Как пользовать:
1. разборка - мышой тянуть img файл на unpack.bat (у кого МТК - на MTK_unpack, у кого не MTK - на STD_unpack)
2. сборка - мышой тянуть папку с файлами после разборки на батник pack.bat (у кого МТК - на MTK_pack, у кого не MTK - на STD_pack)
Если не работает и возникла проблема
- сразу выкладывайте скриншот + boot.img (recovery).
Если не нужен такой метод - не выкладывайте... но тогда и нечего тут отписываться...

КРЯКОЗЯБРЫ - правой мышкой клик на заголовке окна, выбрать шрифт - TT (любой)
В путях к рабочим папкам НЕ ДОЛЖНО БЫТЬ РУССКИХ И КИТАЙСКИХ БУКВ!!! ПРОБЕЛОВ И прочего!!!


Разработчик: michфуд


Скачать:
версия: 4.0 Прикрепленный файлBoot_Recovery_Repack_Util_v4_win7-8_x64.rar ( 2.53 МБ )


Предыдущие версии:

K
Утилита больше не поддерживается разработчиком.
Претензии, пожелания и пр. не рассматриваются.
Использовать как есть.


Сообщение отредактировал Slav_nsk - 06.06.16, 19:12
Причина редактирования: + от AutoVaZ



Реп: (1857)
Архивы сжаты разными архиваторами. Соответственно не все разберёт.. Живой пример:
Скриншот
Прикрепленное изображение



Реп: (801)
выложи плиз свой бут - я посмотрю



Реп: (801)
NitroOxid @ 08.12.2012, 20:21 *
Архивы сжаты разными архиваторами. Соответственно не все разберёт.. Живой пример:

я понял в чем косяк :rofl:
- я вчера в торопях не вложил в архив батники для STD - стандартных телефонов, не для китайцев.
так что просьба ко всем - перекачать архив

для разборки МТК (китайев) - пользуем MTK - а для остальных моделей- STD

так что все в порядке, не надо паники раньше времени ;)

Сообщение отредактировал michфуд - 09.12.12, 10:14



Реп: (801)
SGS III - все прошло удачно:

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


Сообщение отредактировал michфуд - 09.12.12, 10:24



Реп: (1857)
Почти лучше, но нет. Уже есть 1 файл, раньше был пустой)
Скриншот
Прикрепленное изображение

И бутерброд.
Прикрепленный файлboot.zip ( 5.78 МБ )



Реп: (801)
NitroOxid,
а мы с каким телефоном сейчас имеем дело?

Сообщение отредактировал michфуд - 09.12.12, 18:36



Реп: (1857)
michфуд,
Galaxy S i9000. Я же говорю, многие ядра запакованы разными архиваторами..



Реп: (801)
NitroOxid,
ну пожалуй ты прав. значит мой скриптик будет работать со стандартными ядрами - как написано здесь:
http://android-dls.com/wiki/index.php?titl...ack_Boot_Images



Реп: (1216)
Проверил ради интереса пересборку бута от планшета на MTK6575.
Разобрал. Насторожило превращение ожидаемых симлинков в некие файлы с атрибутом "системный" и содержащих текстовые представления симлинков (rmdisk/res --> /system/res и rmdisk/sbin/ueventd --> ../init).
Ну да ладно - думаю, при сборке он сделает их обратно нормальными симлинками.
Для проверки решил пересобранный boot.img (ничего не менял - просто разобрал собрал) разобрать "традиционными" утилитами под Линуксом.
Результат - не разбирается. Папка rmdisk пустая.
Вот кое-какой лог
# ./unpack.sh
Unpacking...
1+0 records in
1+0 records out
3205120 bytes (3,2 MB) copied, 0,0203701 s, 157 MB/s
1564+0 records in
1564+0 records out
3203072 bytes (3,2 MB) copied, 0,0289232 s, 111 MB/s
0+1 records in
0+1 records out
505856 bytes (506 kB) copied, 0,00323252 s, 156 MB/s
dd: invalid number `'
dd: invalid number `'
gzip: ./ramdisk_no_header.gz: No such file or directory
./unpack.sh: line 21: ../ramdisk_no_header: No such file or directory
Done!

А вот разбирающий скрипт (для справки)
echo "Unpacking..."

KER=$(hexdump -C boot.img | grep "KERNEL" | cut --fields=3-10 -d' ');
NUMKER=$(od -A d -t x1 boot.img | grep "$KER" | cut -f1 -d' ');

REC=$(hexdump -C boot.img | grep "ROOTFS" | cut --fields=3-10 -d' ');
NUMREC=$(od -A d -t x1 boot.img | grep "$REC" | cut -f1 -d' ');

dd if=boot.img of=kernel bs=$NUMREC count=1
dd if=kernel of=kernel_no_header bs=$NUMKER skip=1

dd if=boot.img of=ramdisk bs=$NUMREC skip=1
NUMRAM=$(od -A d -t x1 ramdisk | grep "1f 8b 08 00" | cut -f1 -d' ');

dd if=ramdisk of=ram_header bs=$NUMRAM count=1
dd if=ramdisk of=ramdisk_no_header.gz bs=$NUMRAM skip=1

gunzip ./ramdisk_no_header.gz
mkdir rmdisk
cd rmdisk
cpio -i < ../ramdisk_no_header

echo "Done!"

Так что пока не буду рисковать зашивать бут после такой пересборки.

Сообщение отредактировал booroondook - 10.12.12, 17:18



Реп: (801)
Бут в студию как говорится...

хотя не надо - я знаю причину.
в стандартных скриптах стоит проверка на наличие заголовка gz архива "1F8B0800" - хотя это не совсем верно, но в 90% это так и есть.
однако заголовк - это "1F8B08" - без нулей.
мой скрипт при сборке ставит такой заголовк: "1F8B0808" - и соответственно стандартный скрипт не видя 00 не распаковывает его считаю ошибочным.
возможно дело в версии gzip которая используется. надо покумекать, хотя на работоспособность в телефоне это не влияет.

ps - если кто подскажет почему упаковщики делают разные заголовки - буду признателен - и попытаюсь привести в соответствие к стандарным скриптам под линь (хотя gzip используется из комплекта cygwin, который в своей среде делает заголовок с нулями)

Сообщение отредактировал michфуд - 10.12.12, 20:52



Реп: (1400)
Пользуюсь CygWin + кухня не первый год, но с разбором бута для МТК всегда были проблемы...
Попробую ваше решение :-)



Реп: (279)
Для Galaxy Note не разбирается. Что впрочем, закономерно. Там ядро и рекавери слеплены в единый img и затёрты все стандартные известные мне зацепки. Путём долгого копания хексэдитором и изучения всех манов определил примерно где начинается и кончается каждая часть ядра, но вот от рекавери отрезать так и не смог.



Реп: (801)
у меня просьба к тем у кого не получается - просто интереса ради - выложить макс известной инфы про структутру бута и способы его перепаковки например под линем, и сам boot, потому как искать отдельно бут от разных телефонов тяжело, а попробовать помочь - хочется



Реп: (801)
S.V.D.,
Galaxy Note II - разобрал без проблем.
стоковое ядро от прошивки 3.0.1

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



Реп: (5)
Вопрос спецам у меня китаец чтоб зайти в рекавери надо выключить тел поключить УСБ или зарядку увидев батарейку зажать "+" и включение


Внимание вопрос при помощи этой проги можно ли сделать так чтоб без УСБ заходил в рекавери - просто выключил , зажал + и включение а то так заходит а фактори мод !!



Реп: (801)
нельзя. при помощи нее можно только разобрать и собрать обратно img файл


ps - 124 скачавших, два спасибо в репутацию - а у остальных не пошло что-то?

Сообщение отредактировал michфуд - 11.12.12, 16:52



Реп: (5)
michфуд а может есть какая то другая прога для этого ?:



Реп: (801)
дело не в прогах, а в том, что некоторые рековери перед запуском проверяют наличие питания или текущий заряд батареи - если эти условия не выполнены - в рековери не входит.
обычно вообще никуда не входит, но как всегда возможны вариации
сделано для того, чnобы при прошивке update.zip неожиданно не села батарейка и тело не окирпичилось



Реп: (5)
ок а можно сделать чтоб комбинацией + и включение не входило в фактори мод а в рекавери ???

спасибо



Реп: (801)
тоже нельзя :) - это все как бэ "вшито" и не меняется


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 29.03.24, 02:39