Доброго времени дорогие друзья !
Хочу поделиться наработками по прошивке GBS 82XX. Так случилость, что само устройство сейчас мне не доступно, я нахожусь в Индии, а девас я продал, и заказал еще один, и он сейчас идет из китая в Ростов, как раз приеду и он будет на месте. Тем не менее, мне удалось многое найти и изменить в прошивке устройства. Первое что сразу хотелось бы сказать, разобрался с цветными шрифтами, они представляют собой всего 32 символа, которые состоят из трех дампов по 32 символа красного, зеленого и синего цветов. Оригинально решение по их размещению в теле бинарника шрифтов.
И так...
На каждую из 18 строк используется 2 байта (12 бит/точек в 1 байт не влезут). Поэтому 36 байт на символ. в 1 строке 64 байта, Из них 36 байта записан основной символ, потом 14 байт для чего то резервированно, а последние 16 байт - это как раз поле для 32*3 цветных символов, по 32 на каждый цвет. Каждый символ разбит на 3 строки по 16+16+4 байта, последняя строка дозаполненна нулями, четвертая строка - нули, следующие 4 строки - следующий символ.
Это можно наблюдать на скрине из HEX редактора, там 64 битные строки, хорошо видны основные символы, и цветные, между ними 14 бит пустоты.
В целом, цветные символы начинают кодироваться примерно с 2000h адреса шрифтов, или с 12000h адреса прошивки. Вызов цветных шрифтов осуществляется по их номерам, с 1E0H по 1FFH,... и вот тут затык... Пока, в коде прошивки я не нашел места, в котором выводится двухбайтовые номера шрифтов, на данный момент на экран (теоретически) выводятся только шрифты с однобайтным номером. Экспериметны на реальном устройстве могут прояснить ситуацию, имено для этого все иероглифы (всего их было 230), которые я не заменил на работоспособные или важные символы - заменены на номера, порядковые десятичные и имена шестнадцатиричные. НА опыте возможно проявится, как они выводятся, хотя по памяти - вроде выводилось на экран то, что было с 1 байтными номерами позиции.
Соответственно, написал прямой парсер на PHP который позволяет из дампа прошивки (вырезаю сразу 10000-17FFF в файл *.bin) делать задание для програмы Myson OSD редактор шрифтов, парсит весь шрифт, включая цветные шрифты. Тут тоже имеет место сдвиг обратно, на 4 байта, для чего то программа написана таким образом, чтобы работать именно со сдвинутым на 4 байта относительно реального файлом задания. Обнаружил в дампах стандартных прошивок несколько цветных символов, причем, из трех имеющихся у меня дампов, скачаных из стандартных устройств - в одном не оказалось вообще цветных символов, во втором они были только в копии шрифтов, которая была по адресам 18000- 1FFFF, а в третьем дампе в обоих копиях. И так как код прошивки во всех трех дампах идентичен - скорее всего цветные символы не выводились на экран. Стандартные цветные символы из прошивок на маленьком скрине в конце. Не помню, чтобы где то такие символы мелькали в меню или на экране...
Так же написал обратный парсер, который обрабатывает *.bin файл, выводимый из Myson OSD редактора шрифтов. Парсер сдвигает дамп на 4 байта, и еще дублирует, и этот файл можно сразу копировать в HEX редакторе и вставлять в прошивку, с адреса 10000 по адрес 1ffff. То есть процесс редактирования в целом закрыт.
Далее, нашел в прошивке кусок, который содержит 36 байтные строки меню, и отредактировал их, так чтобы не затрагивать исполняемый код, в итоге получил полностью англо - русскую прошивку, использовал кодировку Macintosh ASCII-437, потому что это расположение кирилицы возможно вставить до кубиков с картинкой заставки в прошивке, влазеет все кроме 4х последних букв, их засунул сразу после картинки заставки (это видно на скрине с набписью Версия 0F) - что соответствует прописным этим же буквам в кодировке, в итоге, отредактировал шрифты, так, чтобы были только большие буквы, шрифт стилизовал под digital, прошивка русифицированна, иероглифов нет.
В некоторых пунктах меню сделал пиктограмки, пока не цветным шрифтом а обычным однотонным, может разберусь с выводом двухбайтных имен, поменяю на цветные, а может и нет, не сильно много толку от этого.
Дизассемблировл код прошивки, частично он мне не понятен, потому как я никогда не работал с ассемблером специализированного МПУ, и мне некоторые вещи тут не понятны, отличаются от ассемблера обычных CPU широкого применения. Но в целом, кое что стало понятно и в следствии разбора прошивки.
На сколько я понимаю, тема реверс - инжиниринга GBS8220 мало кому интересна, в основном всех интересует исключительно качество видео от GBS, по этому текст парсеров не прилагаю, если что, пишите в личку. Несколько скринов приложу.
И вопрос, конечно же... НЕ могу пока разобраться, как выводить на экран шрифты с двухбайтовым номером, если кто знает, подскажите пожалуйста.. Все символы, их 512 - выводятся по номерам, и теоретически, без экспериментов я не могу пока ответить на этот вопрос, а устройства под рукой нет, чтобы проверить предположения, по этому, кто знает, как это реально осуществить - пишите.
Ну и может кому нужно подредактировать прошивку, сменить картинку, шрифты, русифицировать и т.д. - тоже пишите в личку. (В целом, не думаю что кому то это нужно,.... X) )
Повторяю, что на данный момент проработка теоретичская, и проверить на реальном устройстве не могу, но, в работоспособности уверен, потому как код не тронут, переходы ассемблерного кода не нарушены, и измененные участки не могут сказаться на работоспособность кода, менялись только элементы информационных массивов (db) и код шрифтов. Тем не менее, когда проверю на реальном устройстве - опубликую практический отчет !
Всем прекрасного настроения !
![]()








Ответить с цитированием