Страница 1 из 1

Изучаем Panasonic CQ-XX0500C-N (Nissan DM305-A)

Добавлено: 08 июл 2022, 17:05
KALDYH
Вот такой вот аппарат
20220523_141525.jpg
Процессор - C1EB0000002 C404H01BT, такой же обнаружен внутри Panasonic Strada CN-HDS950MD: https://www.drive2.ru/b/2695427/ и внутри Panasonic Strada CN-HDS915TD-FA https://www.drive2.ru/b/463472464605741992/
20220523_164530.jpg
Загрузка и карты - с DVD-ROM. Содержимое диска выложил тут: https://rutracker.org/forum/viewtopic.php?t=6232047 Формат - KIWI.
content.png
content.png (45.01 КБ) 8349 просмотров
KIWI Format Explorer находит внутри пять загрузочных образов длиной 17860608 байт (17442 кб ровно), но про дальнейшую структуру загрузчиков Panasonic ничего сказать не может:
KFE.png
Разбираем файл загрузчика LOADING.KWI в JRemaker
JRemaker.png
Какой из пяти загрузочных образов - нужный для этого аппарата, я не знаю, поэтому для исследования наобум выбрал 04NI_050301_1. Они все устроены одинаково, так что для понимания сути разницы нет. Извлекаем загрузочный образ в отдельный файл (в меню пункт Export Unit).

Изучаем Panasonic CQ-XX0500C-N (Nissan DM305-A)

Добавлено: 08 июл 2022, 17:33
KALDYH
Изучение полученного файла 04NI_050301_1 с помощью линуксового binwalk никаких объектов не обнаружило. Просмотр в hex-редакторе не выявил никаких следов файловой системы. Распаковка при помощи универсальных распаковщиков заканчивается неудачей, из чего делаем вывод, что файл - несжатый. Сигнатур в начале файла не обнаружено, кроме строки mnt_loader по адресу 58h. Поиск текстовых строк находит следующую полезную информацию:

Код: Выделить всё

OS-9 Bootstrap for the SuperH (Edition 64)

Код: Выделить всё

OS-9000/SH4  V3.0 Copyright (c) 1999-2000 by Microware Systems Corp.

Код: Выделить всё

OS-9000 for the SH7750R
и множество других текстовых строк и блоков (я привёл наиболее полезные). Итак, мы имеем дело с операционной системой OS-9 от Microware (переписанная с ассемблера 6809 на Си переносимая версия первоначально называлась OS-9000, к старому названию вернулись позднее. В Википедии есть детали: OS-9), и запущена она на процессорном ядре SuperH SH-4 SH7750R (ныне принадлежит Renesas)

Загружаем его в IDA Pro. Указываем Processor type - Renesas SH-4 (big endian) [SH4B], в Processor options - Choose a device - SH7750, остальные настройки по умолчанию. Далее Choose a device name - ещё раз указываем SH7750, и всё, готово - файл открыт. Можно ткнуть в любую точку, нажать C, и файл корректно декомпилируется, определяются вызовы процедур, таблицы прерываний и т.д. Для правильной интерпретации текстовых строк заходим в Options - General.. - Strings - нажимаем кнопку Default 8-bit (по умолчанию UTF-8) - нажимаем клавишу Insert - пишем в открывшемся окне Shift-JIS, сохраняем, выбираем как пункт по умолчанию и подтверждаем настройки.

В середине анализа файла я имел примерно такую картину:
IDA1.png
На обучении пользованию IDA Pro подробно заострять внимание не буду.

Изучаем Panasonic CQ-XX0500C-N (Nissan DM305-A)

Добавлено: 08 июл 2022, 18:42
KALDYH
Теперь самое важное: как поделить загрузочный образ на части? Опущу подробности поисков, перейду к сути. Ответ даёт фрагмент из Википедии:
The module structure requires more explanation: OS-9 keeps a "module directory", a memory-resident list of all modules that are in memory either by having been loaded, or by having been found in ROM during an initial scan at boot time. When one types a command to the OS-9 shell, it will look first in the current module directory for a module of the specified name and will use it (and increase its link count) if found, or it will look on disk for an appropriately named file if not. In OS-9/6809 and OS-9/68000, the module directory is flat, but OS-9000 made the module directory tree-structured.
То есть OS-9 имеет модульную структуру, и во время загрузки ОС сканирует бинарный образ и ищет в нём модули. Ищет, очевидно, по заголовкам. Подробности о модулях находим тут:
OS-9 System Overview: https://colorcomputerarchive.com/repo/D ... oware).pdf (стр. 44)
Там же расписана структура заголовка и его полей, но это старый документ, он подходит не вполне. Более актуальную и подробную информацию можно взять в руководстве от версии 4.7: https://lms.ee.hm.edu/~seck/AlleDateien ... k_tech.pdf (стр. 17)

Код: Выделить всё

typedef struct mh_com {
u_int16 m_sync, /* sync bytes */
m_sysrev; /* system revision check value */
u_int32 m_size; /* module size */
owner_id m_owner; /* group/user ID */
u_int32 m_name; /* offset to module name */
u_int16 m_access, /* access permissions */
m_tylan, /* module type and language */
m_attrev, /* module attributes and revision /*
m_edit; /* module edition number */
u_int32 m_needs, /* module hardware requirements flags */
/* (reserved) */
m_share, /* offset of shared data in statics */
m_symbol, /* offset to symbol table */
m_exec, /* offset to execution entry point */
m_excpt, /* offset to exception entry point*/
m_data, /* data storage requirement */
m_stack, /* stack size */
m_idata, /* offset to initialized data */
m_idref, /* offset to data reference lists */
m_init, /* offset to initialization routine*/
m_term, /* offset to termination routine */
m_dbias, /* data area pointer bias*/
m_cbias; /* code area pointer bias */
u_int16 m_ident; /* linkage locale identifier */
char m_spare[8]; /* reserved */
u_int16 m_parity; /* header parity */
} mh_com, *Mh_com;

и так далее по тексту
Заголовок исследуемой системы имеет длину 0x58 байт (сразу за ним начинается имя модуля), магическое число (sync bytes) - 0x0591. Собственно, в самом начале файла мы их и обнаруживаем. Создав в IDA Pro соответствующие structs и enums и попробовав применить их к образу, выясняем, что он состоит из модулей OS-9, просто-напросто состыкованных один за другим.

Программой для разбора бинарника на модули займусь позже.

Другие полезные ссылки:
https://lms.ee.hm.edu/~seck/AlleDateien/ - установочный диск OS-9 x86 v4.7, вся документация к ней и прочие полезности. Более полного и свежего сборника в Интернете не обнаружено.
http://www.bitsavers.org/pdf/gimix/Gimi ... _Jan83.pdf
https://www.roug.org/soren/6809/os9sysprog.html - OS-9 Operating System System Programmer's Manual от очень ранних версий

Изучаем Panasonic CQ-XX0500C-N (Nissan DM305-A)

Добавлено: 08 июл 2022, 18:50
KALDYH
Текстовые строки на английском и японском хорошо видны в блоках данных дизассемблированного файла. В принципе, разобрав образ и дизассемблировав нужные модули, можно далее без труда переводить на английский, в том числе с изменением длины строк - надо будет только найти и поправить таблицу ссылок, пересчитать длину модуля в заголовке, его CRC (алгоритм есть в документации, см. выше) и собрать образ обратно.
IDA2.png

Изучаем Panasonic CQ-XX0500C-N (Nissan DM305-A)

Добавлено: 09 июл 2022, 09:23
minja71
Молодец, хорошие изыскания по OS-9

Изучаем Panasonic CQ-XX0500C-N (Nissan DM305-A)

Добавлено: 31 июл 2022, 18:16
KALDYH
KALDYH писал(а):
08 июл 2022, 18:42
https://lms.ee.hm.edu/~seck/AlleDateien/ - установочный диск OS-9 x86 v4.7, вся документация к ней и прочие полезности. Более полного и свежего сборника в Интернете не обнаружено.
Пароли инсталлятора OS-9 для желающих поэкспериментировать - прилагаю.

Изучаем Panasonic CQ-XX0500C-N (Nissan DM305-A)

Добавлено: 29 сен 2022, 19:24
KALDYH
Нашёл вход в сервисное меню. Вход: нажать кнопку настроек яркости (слева над кнопкой TILT), потом нажимать нижний левый - верхний левый - нижний левый - верхний левый - нижний левый - верхний левый углы экрана (как на тойотовских http://carnavi.narod.ru/diganostic.html, но начинать с нижнего угла). Выход - долгое нажатие кнопки настройки яркости.
20220930_020107.jpg
Next page:
20220930_020113.jpg
Menu
Сверху вниз:
монтажный тест (то же, что и выше, но на японском)
тест дисплея (там же калибровка тачскрина)
тест системы
В верхнем правом углу - кнопка "Назад".
20220930_020434.jpg
Тест системы.

Левый столбец:
информация GPS
тест сигналов и датчиков автомобиля
тест "цветные полосы"
тест VICS
тест уровней RGB

Правый столбец:
чтение/запись памяти
информация о продукте
тест микрофона
20220930_020440.jpg
Информация о ПО:
20220930_020518.jpg