Pull to refresh

Расковыривание прошивки Vogue

Reading time5 min
Views4.6K
После успешного выдирания прошивки tronix286 и Odinokij_Kot наконец появился материал для расковыривания. Минимум что было интересно — определить что же это за девайс, можно ли разблокировать какие-то полезные фичи, ну и как минимум поменять назойливую заставку.

(Для нетерпеливых и практиков: новый софт для смены заставки, перепрошивки и ковыряния прошивки внизу)

Самое первое и простое что можно сделать — просмотреть файлы визуально в текстовом и HEX редакторах. Сразу бросается в глаза:
img_boot.bin и res.bin содержат что-то сильно похожее на битмапы
minios.bin — имеет в начале что-то вроде заголовка с именами файлов
собственно про них я и расскажу дальше.



img_boot.bin

Начнем с img_boot.bin. Визуально очень похоже на битмап графику. Исходя из регулярности структуры данных делаем предположение, что типовая запись занимает 4 байта. Один байт всегда $00. Пусть остальные три будут значениями RGB для 24 бит битмапа. Пишем простенькую программу, которая читает данные подряд и кладет в битмап. Размер битмапа выставляем соспоставимый с размером экрана. Запускаем. Видно что-то плюс-минус складывающееся в картинку. Подбираем ширину что бы картинка сложилась прямо. Получаем ширину 480.



Очевидно, что это кадры некой анимации. Первые 4 байта явно выбиваются из общей картины, скорее всего какой-то заголовок. Смотрим на эти самые 4 первых байта. Что логичнее всего хранить в заголовке картинки? Первым делом ее разрешение. Первые 2 байта складываются в $01E0 — 480, вторые в $0CC0 — 3264. В анимации видны 12 кадров. Высота одного кадра 3264/12 = 272. Собственно на этом с форматом img_boot.bin все понятно.

Полученая анимация нигде при обычной работе софта не отображается. И самое интересено эта анимация имеет мало отношения к Америчипу. Возможно вот они «уши» оригинального устройства/прошивки из которых как минимум часть взята за основу открытки.

С помощью коллег удалось найти, что это логотип компании Subor, которая в том числе производит медиа плееры на чипах Ingenic. Увы, но мои попытки использовать найденные прошивки для Subor не увенчались успехом. Но это вполне может быть т.к. использованы разные чипы памяти и не известны настройки nand с которыми надо прошивать эти прошивки, разные дисплеи и т.д.

res.bin

В img_boot.bin не оказалось загрузочной заставки. Следующий претендент на наличие заставки — res.bin. С res.bin явно не так просто как с img_boot.bin. Объем говорит, что тут не одна картинка/блок данных. Заголовок/каталог ресурсов в файле в явном виде не просматривается. Смотрим в файл уже написаной для img_boot.bin смотрелкой битмапов. Сразу бросаются в глаза разъехавшиеся картинки в начале файла. Листаем файл дальше и ура — видим заставку, подгоняем смещение. В этом месте на скорую лапу была сляпана первая версия проги для смены заставки. Соответственно информация об этих находках и первая версия утилиты были представлены в моем ЖЖ. Ниже будет ссылка на последнюю гораздо более удобную версию этой программы.

Если посмотреть HEX редактором на 4 байта перед заставкой видим знакомый заголовок с шириной и выстой битмапа. Далее читаем статью Odinokij_Kot об организации памяти/прошивки. NAND память адресуется блоками по 2КБайт. Логично предположить, что для оптимизации работы обращение к ресурсам может также быть организовано по блокам. Проверяем. Видим, что с учетом заголовка начало заставки выравняно по границе 2К блока, а в конце за битмапом явно виден стаффинг до границы следующего блока. С учетом этого можем поискать все остальные битмапы в ресурсном файле.



Интересно, что в битмапах из res.bin 4й байт использован как маска прозрачности битмапа. Также помимо стандартных битмапов в начале файла видны интересные служебные блоки похожие на графику. Предполагаю что они используются для создания эффектов анимации интерфейса.

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

minios.bin

В начале файла виден каталог модулей. По регулярности блоков в каталоге виден размер записи — 48 байт. Предположим, что первые 32 это имя модуля т.к. все имена вписываются в эту длину. Остается 16 байт.
Первые 4 для всех записей равны 0, считаем их зарезервирроваными.

Следующие 4 байта представляют собой нарастающие от модуля к модулю небольшие значения. Логично предположить, что это смещение начала блока относительно начала файла, но они слишком малы что бы напрямую адресовать данные. Предположим, что это номера блоков внутри файла. В файле явно видно где находится начало первого модуля после каталога — смещение 0x1000. Для него указан адрес 0x02. Получаем размер блока 2048 байт, что логично стыкуется с адресацией флэшки.

Дальше идут 4 байта со значениями очень похожими на адреса памяти. Точно не известно что это, но предполагаю, что это адреса загрузки модуля в память.

Оставшиеся 4 байта идеально стыкуются с размером модуля. Это легко сравнить так как модули выровнены по границам блоков 2048 байт. Зная адрес начала модуля, и отслеживая где начинается стаффинг можем определить размер модуля и сравнить с цифрой в соответствующем заголовке.

В качестве итого была сделана простенькая утилитка, которая позволяет распаковать minios.bin на отдельные модули, а так же сохранять minios.bin с замененными модулями/параметрами. Это позволяет подменить модули в этой прошивке модулями из прошивок от других аналогичных плееров.
Сравнение состава minios.bin в разных прошивках показало, что, к сожалению, в текущей прошивке отсутствует часть модулей, а некоторые модули вроде desktop.bin подозрительно меньше размером.

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

Софт


1. Более удобная и быстрая утилитка для смены логотипа и прошивания прошивок.

Качать тут: ifolder.ru/20663679

Программа является графической оболочкой к утилите, написаной tronix286.
Пользоваться предельно просто:
— Распаковываем архив и запускаем MartiniLogoChanger.exe
— Выключаем открытку (закрываем открытку или отключаем батарею).
— Зажимаем кнопку (приклеена правее и чуть ниже экрана).
— Подключаем открытку по USB к компу.
— При необходимости устанавливаем драйвер из папки usbboot_driver.

Если все нормально — в правом верхнем углу программы должна подсветиться зеленым надпись 'connected'. После этого можно работать с прошивками и заставкой.

Смена логотипа



Смена логотипа делается в два клика:
1 Выбираем BMP картинку (в папке есть пара примеров)
2 Если все ок — давим кнопку «Flash it!»

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

Все для смены и восстановление прошивки



Все для смены и восстановление прошивки расположено на вкладке 'firmware updater'.
Поля ввода указывают имена файлов для соответствующих модулей и адреса для их загрузки во флэш.
'Open dir' — ищет файлы прошивки в выбранной директории, прописывает их в соответствующие поля. Если какие-то файлы отсутствуют — подменяет их из оригинальной прошивки
'Flash it!' — запускает прошивку указаных выше файлов
'Download FW' — запускает скачивание текущей прошивки в выбранную папку
'Restore Original FW' — восстанавливает прошивку из папки original_fw

Шаблоны скриптов для заливки/сливки прошивок лежат в папке templates, если кому нужно можете подправить по вкусу.

ВНИМАНИЕ! Длина пути к файлам прошивки вместе с именем файла не дожна превышать 50 символов, иначе USB_Boot глючит!

2. Ковырялка minios.bin



Качать тут: ifolder.ru/20663735
Выкладываю как есть. Надеюсь после прочтения описания выше должно быть понятно что к чему.
Tags:
Hubs:
+71
Comments46

Articles

Change theme settings