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

Программное обеспечение ГУ, Загрузочные носители, и всё что с ними связано.
KALDYH
Сообщения: 32
Зарегистрирован: 04 июл 2022, 18:20

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

Сообщение KALDYH » 08 июл 2022, 17:05

Вот такой вот аппарат
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 КБ) 344 просмотра
KIWI Format Explorer находит внутри пять загрузочных образов длиной 17860608 байт (17442 кб ровно), но про дальнейшую структуру загрузчиков Panasonic ничего сказать не может:
KFE.png
Разбираем файл загрузчика LOADING.KWI в JRemaker
JRemaker.png
Какой из пяти загрузочных образов - нужный для этого аппарата, я не знаю, поэтому для исследования наобум выбрал 04NI_050301_1. Они все устроены одинаково, так что для понимания сути разницы нет. Извлекаем загрузочный образ в отдельный файл (в меню пункт Export Unit).
Последний раз редактировалось KALDYH 08 июл 2022, 17:40, всего редактировалось 2 раза.

KALDYH
Сообщения: 32
Зарегистрирован: 04 июл 2022, 18:20

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

Сообщение KALDYH » 08 июл 2022, 17:33

Изучение полученного файла 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 подробно заострять внимание не буду.

KALDYH
Сообщения: 32
Зарегистрирован: 04 июл 2022, 18:20

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

Сообщение KALDYH » 08 июл 2022, 18:42

Теперь самое важное: как поделить загрузочный образ на части? Опущу подробности поисков, перейду к сути. Ответ даёт фрагмент из Википедии:
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 от очень ранних версий

KALDYH
Сообщения: 32
Зарегистрирован: 04 июл 2022, 18:20

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

Сообщение KALDYH » 08 июл 2022, 18:50

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

Аватара пользователя
minja71
Сообщения: 146
Зарегистрирован: 12 мар 2017, 12:41
Откуда: Санкт-Петербург

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

Сообщение minja71 » 09 июл 2022, 09:23

Молодец, хорошие изыскания по OS-9

KALDYH
Сообщения: 32
Зарегистрирован: 04 июл 2022, 18:20

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

Сообщение KALDYH » 31 июл 2022, 18:16

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

Ответить

Вернуться в «Программное обеспечение.»

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing и 17 гостей