Показаны сообщения с ярлыком mtk. Показать все сообщения
Показаны сообщения с ярлыком mtk. Показать все сообщения

четверг, 12 января 2017 г.

GPT Parser Tool. Определение разметки мобильных устройств.

В этом посте мы рассмотрим одну небольшую утилиту, которую я написал недавно, под названием GPT Parser Tool. Как и следует из названия - утилита делает не что иное, как парсит разметку GPT и экспортирует считанную таблицу разделов в удобном для восприятия виде. Прежде всего, хочу заметить что утилита писалась для себя и вообщем-то не планировалось выкладывать ее в public, но так или иначе, я решил это сделать, т.к. подходящих альтернатив все равно что называется "раз, два и обчелся", а, тем неменее, утилита может оказаться очень полезной, например, при определении разметки мобильных устройств (в том числе и на базе MediaTek), например, в ситуации, когда у вас есть полный backup прошивки устройства (ROM_0), а вы хотите сделать scatter-файл для SP Flash Tool или просто посмотреть какие блоки / разделы имеются у вас на устройстве.

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


Здесь, как видно, мы открыли full backup прошивки одно из смартфонов на MTK-чипсете, нажали кнопку Parse и получили отображение таблицы разделов на экране. На данный момент утилита позволяет экспортировать содержимое таблицы разделов (GPT) в двух форматах - это обычный текст, в виде название раздела, стартовый адрес (offset) раздела в hex и size (размер раздела) в шестнадцатиричной и десятичной системах счисления. Второй формат - это формат BoardConfig.mk, который может понадобиться разработчикам прошивок. Что получается при экспорте GPT в оба эти формата можно увидеть на скриншотах ниже (скриншоты сделаны из Far Manager с установленным плагином Colorer):


Те, кто устал вручную искать таблицу GPT в Backup'е ROM'а, пересчитывать Start LBA и End LBA в смещение и размер раздела, конвертировать Hex в Dec и обратно для каждого раздела из таблицы поймут насколько это удобно.

Поддерживаются любые бинарные форматы файлов. Т.е. вы можете "подсунуть" программе полный backup вашего ROM, можете отдельно считанный раздел pgpt (primary global partition table). Единственное требование, чтобы в вашем файле, который вы открываете в GPT Parser Tool по смещению 0x200 находилась сигнатура "EFI PART", именно по ней программа определяет что ей действительно дали валидную GPT (в принципе, на будущее можно прикрутить и возможность автопоиска GPT в бинарном файле, но пока достаточно и этого, тем более что если сделать полный readback ROM'а в SP Flash Tool, то как раз в начале считанного дампа по нужному смещению и будет эта сигнатура, т.е. если вы берете ROM_0 считанный в SP Flash Tool в качестве входного файла, то дополнительно ничего изменять в нем не нужно).

Скачать утилиту можно здесь: gpt_parser_tool.rar (пароль на архив: decker.su)

p.s. Изначально я хотел сделать в утилите какой-нибудь NAG screen при выходе, напоминающий о поддержке проекта и т.п., но потом решил отказаться от этой идеи, чтобы лишний раз не раздражать пользователей ожиданием и т.п. Если утилита оказалась вам полезной - ссылку на поддержку проекта вы всегда можете найти на страницах этого блога, а также в самом приложении.

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

Обновлено 12.01.2017 21:00 (MSK)

v1.0.0.4
  • Попытка исправить проблему с отображением формы в ОС на которых выставлен нестандартный размер DPI (отличный от 96) в свойствах экрана. 
  • Попытка исправить проблему при открытии файлов с PGPT размером меньше чем 512*34 байт (т.е. меньше чем 34 сектора).

v1.0.0.5
  • В колонках таблицы теперь можно изменять размер.

v1.0.0.6
  • В таблице на основной форме отображаются Offset и Size раздела, помимо LBA.

Скриншот интерфейса последней версии:


Обновлено 16.01.2017 21:23 (MSK)

v1.0.0.7
  • Незначительные изменения интерфейса, элементы контролов теперь смотрятся более современно.
  • Исправлена проблема при открытии больших файлов, намного больше 4 Gb ... Проблема выявлена благодаря пользователю Андрей Таранов (при открытии 16 Gb'ного backup'а ROM_0 от устройства на базе MT6737T программа выдавала I/O Error 998, начиная с этого релиза эта проблема исправлена).

воскресенье, 5 июля 2015 г.

Debug Menu Access. Приложение для быстрого доступа к различным меню.

Приложение Debug Menu (su.decker.debugmenu) предназначено для получения быстрого доступа к различным скрытым меню телефона, в частности меню "Для разработчиков" в котором можно включить отладку по USB, инженерному меню MediaTek (обычно его можно вызывать набрав *#*#3646633#*#*, но если вам, к примеру, лень набирать эту комбинацию каждый раз, то вы можете воспользоваться приложением Debug Menu Access, также приложение может помочь в случае, когда комбинация набора, необходимая для вызова Engineer Mode изменена), меню Factory Mode (заводские тесты MediaTek) и некоторым другим скрытым опциям.

Сподвиг меня на написание этого приложения аппарат Билайн Про 2 о котором я писал не так давно в этом блоге - Билайн Про 2. Взгляд под прицелом ... Дело в том, что в этом аппарате по-умолчанию возможность входа в меню "Для разработчиков" отключена. Т.е. при входе в меню "Настройки" и многократном тапе по "Номер версии" заветный пункт меню не появляется, да и вообще ничего не происходит, что, согласитесь, нехорошо. Т.к., если например, вам необходимо пользоваться ADB, или использовать телефон для тестирования собственных приложений - то включить "Отладка по USB" в опциях разработчика вы не сможете, т.к. по-умолчанию они недоступны. Debug Menu позволяет решить эту проблему. Достаточно зайти в Developers Menu, активировать отладку по USB и при следующем включении телефона эта опция уже будет активна.


Минимальная версия Android необходимая для работы приложения - 4.0. Не то чтобы я недолюбливал 2.3.6 и т.п., но смысла поддерживать древний API, когда на дворе правит балом Lollipop с его Material Design и т.п. я не вижу.

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


Debug Menu Access в Google Play

p.s. Предложения, замечания, пожелания как всегда приветствуются ;)