Главная Регистрация FAQ Пользователи Покупка MITSUBISHI Сообщения за день

Вернуться   OUT-CLUB.RU > Технический раздел > Outlander XL > Outlander XL 2007 - 2012 г.в. - Электроника, мультимедиа, навигация

Важная информация


Outlander XL 2007 - 2012 г.в. - Электроника, мультимедиа, навигация Элекрооборудование, мультимедиа, навигация и проч.

Ответ
 
Опции темы Опции просмотра
Старый 13.05.2009, 21:11   #1
holod
Старожил Клуба
 
Аватар для holod
 
Авто: Touareg NF FSI 3,6
Сообщений: 667
Лампочка Исследование механизма работы ПО MMCS

Стантдарт KIWI

Скрытый текст


Стантдарт KIWI
Существует три основных стандарта автомобильных систем GPS навигации: Navteq, GDF, KWI.
многие японские компании (прежде всего Мицубиси, Тойота, Ниссан), а также General Motors используют системы навигации, построенные на базе стандарта консорциума KIWI-W. Subaru - используют навигации производства Kenwood (тоже KWI).
Описание структуры файлов этого стандарта - расширение KWI.
KIWI - формат используется для описания карт и объектов, может содержать мета данных, например, голосовые сообщения.
Основные файлы на диске:
LOADING.KWI - загрузчик
ALLDATA.KWI - картографическая информация в специальном формате KIWI
INDEXDAT.KWI - поисковые и справочные индексы
Все эти файла, как правило, записывались на HDD
Пример структуры разделов HDD (MMCS R03)
1. Maps
2. blank
3. Loading
4. ScreenData
5. CDDB
6. AVUnit
На новых моделях, как напрмер MMCS W-11 и W-12, которая устанавливается на Аутлендер третьего поколения, вместо жесткого диска появилось два гнезда для SD карт одна под навигацию другая предположительно для музыки
Здесь описана классическая структура стандарта, но каждый производитель всегда вносит свои коррективы. http://www.kiwi-w.org/documents_eng.html
[свернуть]
LOADING.KWI — загрузчик

Скрытый текст

Это контейнер, который состоит из секций.
В общем случае лоадинг может содержать и одну секцию и больше...главное, что он содержит загрузчик для ОС.... саму ОС (не важно какую) он может и не содержать - загрузчик может ссылаться на другой файл, содержащий ОС....
Пример описания лоадинга на базе ОС WinCE (loading.kwi MITSUBISHI).
1. Заголовок.
1. Loader (boot)
2. Firmware (OS)
3. Screendata (FS)
У W11, W12 доплнительные секции:
4. Графические файлы *.bmp
5. Фалы типа *FONT.BIN — судя по названию, для отображения фонтов на экране.

Структура заголовка Loading.kwi


На примере loading.kwi MITSUBISHI:
Адрес -> Длина -> Назачение

0-1 ------> 2 ------>количество размещеных систем.
2-3 ------> 2 ------>Резерв
4-F ------> 12 ----->Идентификация и управленческая информация
10-11 ---> 2 ------> Количество частей в Loading
12-13 ---> 2 ------> резерв
14 ------> 1 ------> Категория модуля №1: 0- программа инициализации, 1 – программа, 2 – библиотека, 3 – data, + 40h (64) тестовый, + 80h (128) – сервисный диагностический
15-17 ----> 3 ------> Резерв

14-53 ------> 64 ------> 01 Категория Unit №1, NR261RM.MLD.ORG NR261RM.- русская голова,
NR261J11 – японская голова
NR261EM - европа
Эти параметры сравниваются внутри BOOT
.MLD.ORG признак BOOT
00000113 Номер версии (F)
00000113 Номер версия (G)
00000101 Номер версия (J)
00000111 Номер версии (E)
54-93 ------> 64 ------> 01 Категория Init №2, NR261RM.SHx.ORG NR261RM.- русская голова,
NR261J11 – японская голова
NR261EM – Европа
MMC13 – W11 , W12
NR242RM - русский вариант W-12;
NR242EM - европейский вариант;
NR242UM - американский вариант;
NR242AM - австралийский вариант.
Эти параметры сравниваются внутри BOOT
.SHx.ORG признак OS
00000400 Номер версии модуля OS (F)
00000500 Номер версии модуля OS (G)
00011403 Номер версии модуля OS (J)
00006203 Номер версии модуля OS (E)
94-D3 ------> 64 ------> 03 Категория Unit №3 NR261RM.SCN.ORG NR261RM.- русская голова,
NR261J11 – японская голова
NR261EM - европа
Эти параметры сравниваются внутри BOOT
.SCN.ORG признак DATA
00000400 Номер версии модуля FS (F)
00000500 Номер версии модуля FS (G)
00000000 Номер версии модуля FS (J)
00006203 Номер версии модуля FS (E)
D4-D5 ----> 2 ------> 1D 60 1D 60 дата, на которую функции модуля становится действительным.
Дата отображается с количество дней считается с 1 января 1997 года как день 0 на основе UTC.
По умолчанию должен быть установлен с "00 (16)" Если Дата не задана.
Примерно: 10/07/2027
D6-D7 ----> 2 ------> 1D 60 1D 60 дата, на которую функции модуля становится не действительным.
D8-117 ----> 64 ------> Это поле используется для описания модуля для пользователя.
118-11B ----> 4 ------> 00 00 04 00 400 (400*2 =800) В этом поле стартовый адрес программного кода (если есть) Unit умноженое на 2
11С-11F ----> 4 ------> 00 03 74 00 37400 (37400*2 = 6А800) В этом поле размер программного кода (если есть) Unit умноженое на 2
120-1D3 ----> 180 ------> Это поле используется изготовителем модуля, чтобы указать информацию, относящуюся к производителю.
[свернуть]

Описание Loader (boot)


Файл (контейнер) для хранения стартового образа прошивки в формате NB0, он в свою очередь запакован в контейнер BIN (файл формата bib).
Главным показателем того, что перед Вами находится прошивка в контейнере этого типа, является сигнатура BOOOFF.(именно с точкой на конце) , в начале образа.
В нем находится файл nk.exe — ядро системы.
Описание bib формат (файлы bin) http://msdn.microsoft.com/en-us/library/ms898171.aspx
[свернуть]

Описание Firmware (OS)


Файл (контейнер) для хранения рабочего образа прошивки в формате NB0.
Главным показателем того, что перед Вами находится прошивка в контейнере этого типа, является сигнатура BOOOFF.(именно с точкой на конце) , в начале образа.
В нем находятся все модули и файлы системы в разобраном виде. Стандарт PE format.
http://kaimi.ru/2011/07/pe-%D1%84%D0...6%D0%B8%D1%8F/
[свернуть]

Структура Screendata (FS)


Это простой, даже не архивированный контейнер. В нем, по определенной логике лежит информация (жестко записанная) - в каком каталоге должны находиться файлы этой секции
Структура UNIT ScreenData в loading.kwi:
Первый блок:
4h первые -> Количество записей в блоке
4h вторые -> Размер блока от начала блока (в размер входят первые 4h и вторые 4h))
Данные: список каталогов -> Разделитель «00h»
Второй блок:
4h первые -> Количество записей в блоке
4h вторые -> Размер блока от начала блока (в размер входят первые 4h и вторые 4h)
Данные: список имен с каталогом, содержащий последовательность
записи файлов (по порядку)-> Разделитель «00h» (индексный)
4h первые -> Размер файла
далее -> Имя файла заканчивается.
Разделитель «00h»
Третий блок:
Начало: в конце второго блока, начинается файл данных
Данные: по порядку по размеру файла как во втором блоке.
Все данные и адреса считываются ил прошивки по-байтово в обратном порядке - "ногами вперед" — Little-Endian
DWORD num_LE; // little-endian
DWORD num_BE; // big-endian
LE по умолчанию для x86 и SH4.
ScreenData на HDD - это тот же образ, что в loading.kwi, но уже развернутый в выше упомянутом каталоге
[свернуть]
[свернуть]
JRemaker

Скрытый текст

Программа JRemaker. Предназначена для редактирования прошивок от автомагнитол на базе формата контейнера файл: loading.kwi.
OS: WinCe 2.11, 3.0, 4.20, 6.0.
Разработана на основе анализа структуры LOADING.KWI - загрузчик, установленных на атомобилях MITSUBISHI - R01, R02, R03, J03, J05, N04, W11, W12.
Совместима для работы также с E-01..E-06, J-01/02/04/11, N-01, N-02, N-03, N05

Чтобы скачать JRemaker, обращайтесь в личку AS21 или по email: nick@avalr.com.ua.
[свернуть]
Расширение FM-диапазона радио

Скрытый текст

В Японии FM диапазон вещания ограничен более жестко (76...90 МГц) Для обхода этого ограничения необходимо установить FM-модулятор, который расширит диапазон до требуемого российского 108 МГц. Как правило модулятор имеет антенное гнездо и антенный выход и провод питания +12.
1) MMCS среднего поколения (начиная с J-01 от 2006г. и до R-03) имеют в своем составе радиотюнер. Также его имеют MMCS последнего поколения (начиная с J-11 от 2011г. и до нынешней W-12), а предыдущее самое первое поколение MMCS не имело встроенного радиотюнера (например, на Аутлендере первого поколения), а еще более ранние назывались MDS и не имели жесткого диска вообще.
2) в различных странах различные диапазоны для FM-радио, например,
-- Европа/Россия 87..108 МГц с шагом 0,1 МГц;
-- СССР/Россия дополнительно 65,9..74 МГц УКВ;
-- Америка 87..108 МГц с шагом 0,2 МГц;
-- Япония 76..90 МГц с шагом 0,1 МГц,
соответственно, и MMCS-ы для различных регионов изначально имеют локализацию. Причем программно-аппаратную.
Один из вариантов:
----В Японии FM диапазон вещания ограничен более жестко (76...90 МГц) Для обхода этого ограничения необходимо установить FM-конвертер, который расширить диапазон до требуемого российского 108 МГц. Как правило модулятор имеет антенное гнездо и антенный выход и провод питания +12. FM-конвертер позволяет без каких-либо программно-аппаратных изменений в радиотюнере сдвинуть диапазон. Наиболее востребованы и широко применяются такие:
-- для приема УКВ на стандартном российско-европейском тюнере (87..108);
-- для приема российского FM (87..108 с шагом 0,1) на американском тюнере (87..108 с шагом 0,2);
-- для приема российского FM (87..108 с шагом 0,1) на американском тюнере (76..90 с шагом 0,1).
При этом на экране радиотюнера не реально отображается частота принимаемой станции.
3) если же все-таки переделывать ПО и оборудование самой MMCS, то точно нужно перепрошивать микроконтроллер, управляющий синтезатором частоты, наиболее просто это будет с адаптацией американки, т.к. диапазон одинаков (уважаемый Ежик Пых перешивал Ренесасовский NEC микроконтроллер под шаг 0,1). Для японки возможно еще дополнительно прийдется перестраивать контура в ВЧ-блоке...
[свернуть]
Адаптация NTSC ТВ к российскому ТВ

Скрытый текст

Если TV тюнер встроен в головное устройство, устанвливается дополнительный внешний тюнер.
Тюнер обеспечивает возможность приема телевизионных передач цветного изображения в системах PAL/SECAM D/K и отображение принятого сигнала на штатных NTSC мониторах автомобилей японского и американского рынков.
Такие устройства могут коммутировать сигналы формата RGB+SYNC, RGB+HSync+VSync, RGsB.
Данное устройство позволяет подключить ТВ-тюнер к навигационному дисплею автомобиля по RGB+SYNC в случае отсутствия стандартного AV-входа.
Также возможно подключать ТВ-тюнер к навигационным мониторам, где сигналы синхронизации либо формата RGB+HSync+VSync (MITSUBISHI), либо синхронизация передается в канале зеленого цвета (MITSUBISHI, BMW)
Встроенный аналоговый ТВ-тюнер имеют толаько японские варианты MMCS. Остальные редакции его не имеют. В связи с вытеснением аналогового TV цифровым DVB-(T)/T2, аналоговое ТВ скоро возможно скоро будет не актуальным"
[свернуть]
Примеры модификации loading.kwi для MMCS

Скрытый текст


Пример № 1 Руссификация японки

Скрытый текст


NR261RM.- русская голова,
NR261J11 – японская голова

Смотрим раздел Стурктура заголовка loading.kwi
Вариант №1 -> R03G:
Имеет 3 Unit: 10-11 ---> 2 ------> Количество частей в Loading = 3
Категория Unit №1, NR261RM.MLD.ORG
Категория Unit №2, NR261RM.Shx.ORG
Категория Unit №3, NR261RM.SCN.ORG
MLD, SHx, SCN -> ссылки на 3 адреса:
Unit №1:
118-11B ----> 4 ------> 00 00 04 00 = (400*2 =800) В этом поле стартовый адрес программного кода Unit умноженое на 2
11С-11F ----> 4 ------> 00 03 74 00 = (37400*2 = 6А800) В этом поле размер программного кода
Unit №2: -> 218...
Unit №3: -> 318...

Вариант №2 -> J05 + R03G: руссификация японки
Имеет 3 Unit: 10-11 ---> 2 ------> Количество частей в Loading = 4
Категория Unit №1, NR261J11.MLD.ORG
Категория Unit №2, NR261RM.MLD.ORG
Категория Unit №3, NR261RM.Shx.ORG
Категория Unit №4, NR261RM.SCN.ORG
MLD (японский),MLD (русский), SHx(русский), SCN(русский) -> ссылки на 4 адреса:
Unit №1:
158-11B ----> 4 ------> 00 00 04 00 = (400*2 =800) В этом поле стартовый адрес программного кода Unit умноженое на 2
11С-11F ----> 4 ------> 00 03 74 00 = (37400*2 = 6А800) В этом поле размер программного кода
Unit №2:
258-11B ----> 4 ------> 00 00 04 00 400 (400*2 =800) В этом поле стартовый адрес программного кода Unit умноженое на 2
11С-11F ----> 4 ------> 00 03 74 00 37400 (37400*2 = 6А800) В этом поле размер программного кода Unit умноженое на 2
Unit № 1 и Unit № 2 ссылаются на один адрес
Unit №3: -> 358...
Unit №4: -> 458...
[свернуть]
Пример № 2 Maintance от американки:

Скрытый текст


Программа JRemaker:
- Current - R03_G
- Donor - N03 или N04 можно попрбовать с другими версиями американки
-- Надо скопировать из донора в current следующие файлы:
1) HMIManager.exe
2) gs_hmi_string.tbl,
3) HMI.scrn
4) HMI_BMP.symb
5) can.exe
Новые возможности:
>Выбор языка при старте (при выборе языка меняется язык не только MMCS, но и язык отоббражения информации в ETAKS
> через кнопку INFO в меню появляется "тех. обслуживание" -> Maintenance - это специализированный календарь по графику технического обслуживания.
MMCS через can получает данные по maintenance и использует для некоторых расчетов для этотго графика.
В русской такой функции нет, can.exe урезанный по этим функциям соответственно maintenance не работает.
Теперь должен работает в полном объеме.
[свернуть]
[свернуть]
MMCS — Описание, характеристика

Скрытый текст


Описание

Скрытый текст


классификацию самих MMCS, можно разделить на три поколения:
-- пред-MMCS (чаще называемые MDS) были модульными и состояли из отдельных блоков: монитор, CD-радио, блок навигации, ТВ-тюнер и т.п. Жесткого диска не имели, а LOADING и карты грузились с DVD (у меня есть один такой производства Aisin под маркой Mitsubishi);
-- нулевое поколение MMCS это дальнейшее развитие MDS, но в навигационном блоке появился жесткий диск (такие устанавливались на Outlander первого поколения, производитель MELCO);
-- первое поколение MMCS это моноблочный вариант с жестким диском "все-в-одном", который в основном здесь и рассматривается (такие устанавливались на Outlander XL, производитель MELCO).
Есть 3 варианта работы MMCS с BT:
1. Не поддерживается (J-01)
2. Поддерживается старый блок - (R-01, R-02, E-01, E-02, E-03, N-02, N-03, P-01, C-01, J-02, J-03, J-04)
4. Поддержка нового блока - адресная книга, USB, BT Audio (R-03, E-04, E-05, E-06, P-02, C-02, J-05, N-05)
Известны следующие аппаратные редакции устройств.
Для японского региона:
J-01 [8750A082]
J-02 [8750A072]
J-03 [8750A141]
J-04 [8750A115]
J-05 [8750A224]
Для американского региона:
N-01 [8750A069]
N-02 [8750A142]
N-03 [8750A183]
N-04 [8750A???]
N-05 [8750A???]
Для европейского региона:
E-01 [8750A070]
E-02 [8750A143]
E-03 [8750A184]
E-04 [8750A???]
E-05 [8750A???]
E-06 [8750A???]
Для русского региона:
R-01 [8750A169]
R-02 [8750A170]
R-03 [8750A211]
Для австралийского региона (под маркой Mitsubishi, но производитель KENWOOD):
A-01 [8750A132]
A-02 [8750A???]
A-03 [8750A???]
A-04 [8750A196]
соответственно, поскольку австралийские варианты крайне экзотичны у нас и, вероятно, серьезно отличаются по архитектуре, то упомянуты для полноты перечня.
-- второе поколение MMCS это дальнейшее развитие, т.е. обновленный вариант, у которого вместо жесткого диска используется SD-карта памяти (такие устанавливаются на Outlander III).
J-11 [8750A???]
W-11 [8750A???]
W-12EU [8750A374]
W-12RU [8750A391]
[свернуть]
Характеристика

Скрытый текст


R03 и ее аналоги

Скрытый текст

• WinCe 4.2
• Процессор Renesas SH7770
• 30 Гб жесткий диск
---- R-01 Toshiba MK3029GAC
---- R-02 Toshiba MK4036GAC
---- R-03 Toshiba MK4050GAC
---- Вариант установки SSD PATA https://out-club.ru/board/showpost.p...postcount=6574
• Навигационная система double wide DIN
дисплей
----ЖК-панель Sharp LQ070 формально 7-дюймовая (реально чуть меньше, т.е. 6.95") с физическим разрешением 480×234
• Предварительно установленны европейские японские российские дорожные карты
• Touch screen полнофункциональный экран
• Регулировки Аудио кнопками руля
• 8 Гб музыкальный сервер (22 ГБ для навигации)
• Cовместима с MP3 и WMA
• DVD / CD слот
• Стандартный TMC-тюнер (ТВ-в японской версии)
• Информация бортового компьютера
• Опция пользовательских настроек систем автомобиля (открытие с пульта, освещение в дневное время, работа стеклоочистителей, индикаторы) (( в европейско-американской версии))
• Подключаются 6 динамиков стандартной системы и 9 динамиков
Rockford Fosgate
• 4 канала х 45W
• Телефонный адаптер для подключения портативного аудио оборудования
(необязательно) MZ313870
[свернуть]
W12 и ее аналоги

Скрытый текст

MMCS W-11 и W-12 устанавливается на Аутлендер третьего поколения. Типоразмер, модуль блютус , кан модуль такой же как на предыдущих моделях вместо жесткого диска появилось два гнезда для SD карт одна под навигацию другая видимо для музыки DVD диски не воспроизводит, разьемы подключения другие, чем у R-03
[свернуть]
[свернуть]
Cпецификация
[свернуть]
Сервисные инструкции к MMCS, усилителям, штатным ГУ >>>

Наличие порта DEBUG у W-серии >>>

Loading.kwi для MMCS J-11 (оригинальный) >>>

Последний раз редактировалось megaaxel; 27.03.2015 в 14:47.
holod вне форума   Вверх Ответить с цитированием
16 пользователя(ей) сказали cпасибо:
Старый 09.06.2011, 15:34   #46
Bedolaga
Бывалый
 
Имя: Алексей
Авто: Pajero Sport 2010 3.0
Сообщений: 29
По умолчанию Исследование механизма работы программного обеспечения MMCS

Согласен с предыдущими ораторами: как минимум тему с хакингом нужно выносить в отдельную. А здесь только уже законченные и проверенные результаты.

BTW, кто-то изучал уже этот кусок из AVUnit.exe?:

Код:
 
.text:001157B4 mov r13, r9
.text:001157B6 mov #h'4B, r12
.text:001157B8 mov.l r5, @r10
.text:001157BA cmp/eq r13, r5
.text:001157BC bf/s loc_1157E8
.text:001157BE shll2 r12
.text:001157C0 mov.l @(h'FC,pc), r3 ; [001158C0] = sub_26D00
.text:001157C2 jsr @r3 ; sub_26D00
.text:001157C4 mov #0, r5
.text:001157C6 cmp/eq #5, r0
.text:001157C8 bt loc_1157CC
.text:001157CA mov #0, r9
.text:001157CC
.text:001157CC loc_1157CC:
 
.text:001157CC mov.l @(h'F4,pc), r4 ; [001158C4] = " Park-->Run"
.text:001157CE mov.l @(h'F8,pc), r3 ; [001158C8] = sub_74824
.text:001157D0 jsr @r3 ; sub_74824
.text:001157D2 mov r9, r5
.text:001157D4 mov.l @r8, r0
.text:001157D6 mov #1, r6
.text:001157D8 mov.w @(h'DE,pc), r3 ; [001158BA] = h'2E8
.text:001157DA mov #5, r5
.text:001157DC mov r9, r7
.text:001157DE mov.l @(r0,r3), r3
.text:001157E0 jsr @r3
.text:001157E2 mov r8, r4
.text:001157E4 bra loc_115846
.text:001157E6 mov #0, r5
.text:001157E8 ; ---------------------------------------------------------------------------
.text:001157E8
.text:001157E8 loc_1157E8: ; CODE XREF: .text:001157BC j
.text:001157E8 mov r8, r9
коричневый фрагмент кода шлет извещение о начале движения с парковки. Кто-то пробовал его обойти заменой:

Код:
.text:001157BC                 bf/s    loc_1157E8
на

Код:
 .text:001157BC                 bra    loc_1157E8
?

Я понимаю что это ламерство, но а вдруг?

---------- Добавлено в 04:51 ---------- Предыдущее сообщение было написано Вчера в 14:34 ----------

2 Ёжик Пых:

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

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

Найдем способ коммуникации, значит сможет нормальную отладку организовать. Иначе будет все будет наобум через модификацию кода, замену лоадинга, запись на диск, проверка на устройстве и т.д. по циклу.

Надеюсь выхлоп будет стоить потраченных усилий.
Bedolaga вне форума   Вверх Ответить с цитированием
Старый 10.06.2011, 09:42   #47
heavy
Опытный
 
Аватар для heavy
 
Авто: Lancer Sportback 1.8
Сообщений: 62
По умолчанию Re: Исследование механизма работы ПО MMCS

В свое время для отладки (не для производственного тестирования) на платах были спец. контакты или колодки (jtag вроде именовали), как правило не распаянные в производтсвенной модели, может и тут что-то подобное имеется...

Интересно на чем отлаживают код разработчики, имхо не на живой голове, а на железке типа "ренесанса" или софтовом эмуляторе, но у меня в свое время не удалось виртуалку под sh4 запустить нормально =( Но кто-то вроде писал (сейчас не уверен что именно про mmcs, возможно про другую kiwi-систему, что пакет собран для работы с несколькими различными платформами одновременно, может наш тоже?


Но вообще странная штука, что за столько лет так и не утекла из недр восточных разработчиков ни одна версия kiwi редактора... но как-то даже натыкался на резюме одного из разработчиков, кто приводил в пример что разрабатывал эту систему.
heavy вне форума   Вверх Ответить с цитированием
Старый 10.06.2011, 11:30   #48
Bedolaga
Бывалый
 
Имя: Алексей
Авто: Pajero Sport 2010 3.0
Сообщений: 29
По умолчанию Re: Исследование механизма работы ПО MMCS

Цитата:
Сообщение от heavy Посмотреть сообщение
Интересно на чем отлаживают код разработчики, имхо не на живой голове, а на железке типа "ренесанса" или софтовом эмуляторе
ПО MMCS писалось на языке высокого уровня, причем объектно ориентированном (как верный признак, в теле программ щедро накидано операторов "delete" и "new", используемых в ООП для создания и уничтожения экземпляров классов).

У этого факта есть 2 стороны:

1) плюс: много полезной информации компилятор оставляет в теле исполняемого модуля. Там есть потрясающие строки вида " А вот сейчас мы запретим показ DVD в движении". Причем строки хранятся недалеко от кода, как это и положено при компиляции объектов Именно поэтому относительно легко удается грохнуть этот запрет с DVD, особенно не парясь с трассировкой кода.

2) минус: крайне затруднено восстановление программной логики, поскольку очень много вызовов процедур не по прямым адресам, а косвенно через относительные смещения к неивестным из мертвого листинга адресам (которые видимо являются ссылками на объекты исходного текста ООП). И мертвый код анализировать становится трудно. Это плата за удобство концепции ООП для разработчика.

На интелсовместимых платформах, я даже спустя 15 лет перерыва могу по ассемблерному коду легко вернуть все в С. Легко понять вызовы процедур и какие параметры при этом передаются. На SH-4 у меня таких навыков нет, поэтому это все время. Если кто обладает знаниями по стандартной структуре ассемблерного кода SH-4, в который компилируются высокоуровневые вызовы процедур и функций хоть на CPP хоть на C#, буду признателен за краткую информацию.

Что касается отладки: свой небольшой отладчик в MMCS загружен, можно пытаться его слегка переписать, чтобы он выводил на экран устройства или в файл нужную информацию. Но что бы его переписать и отладить нужно большое количество циклов: модификация кода --> модификация loading.kwi --> запись на HDD --> запуск на устройстве ---> анализ результата --> модификация кода --> ... и далее по циклу.

Все прозаично но муторно и долго. А альтернативой является интуитивное и несистематическое тыканье в разные места кода на удачу и проверка что получилось. Тоже вариант, но менее предсказуемый.
Bedolaga вне форума   Вверх Ответить с цитированием
Старый 14.06.2011, 06:13   #49
Bedolaga
Бывалый
 
Имя: Алексей
Авто: Pajero Sport 2010 3.0
Сообщений: 29
По умолчанию Re: Исследование механизма работы ПО MMCS

В эту тему буду выкладывать ссылки на полезную информацию, связанную с SH4 архитектурой. Нашел очень важный документ SH-4 Generic and C Specific ABI, маленько раскрывающий особенности вызовов функций и соглашения по передаче параметров при этих вызовах. Собственно нечто подобным я и просил поделиться почтеннейшую публику постом выше.
Bedolaga вне форума   Вверх Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Старый 14.06.2011, 15:21   #50
Alex01
Старожил Клуба
 
Аватар для Alex01
 
Авто: Outlander XXL, 2.4 CVT S15 W13
Сообщений: 1,109
По умолчанию Re: Исследование механизма работы ПО MMCS

когда будет "Hello World" для тестирования?
Alex01 вне форума   Вверх Ответить с цитированием
Старый 14.06.2011, 15:31   #51
Bedolaga
Бывалый
 
Имя: Алексей
Авто: Pajero Sport 2010 3.0
Сообщений: 29
По умолчанию Re: Исследование механизма работы ПО MMCS

Цитата:
Сообщение от Alex01 Посмотреть сообщение
когда будет "Hello World" для тестирования?
Сперва aux в движении добьем. Потом написание отладчика. Без отладчика делать вообще нечего. А после попросим у мицев долю в акционерном капитале.
Bedolaga вне форума   Вверх Ответить с цитированием
Старый 16.06.2011, 00:19   #52
Ёжик Пых
Старожил Клуба
 
Аватар для Ёжик Пых
 
Имя: Дмитрий
Авто: PS 2.4D AT 17MY, i-Miev 12MY
Сообщений: 654
По умолчанию Re: Исследование механизма работы ПО MMCS

Bedolaga, по поводу Вашей идеи с DVD, не сказать чтобы ничего не получилось, получилось несколько не то .
Пересобрал Loading и опробовал. Если раньше при начале движения выскакивала надпись "Не отображается при движении" на синем фоне, то теперь при начале движения экран становится полностью черным и восстанавливается при остановке.
Ёжик Пых вне форума   Вверх Ответить с цитированием
Пользователь сказал cпасибо:
Старый 16.06.2011, 04:30   #53
Bedolaga
Бывалый
 
Имя: Алексей
Авто: Pajero Sport 2010 3.0
Сообщений: 29
По умолчанию Re: Исследование механизма работы ПО MMCS

Цитата:
Сообщение от Ёжик Пых Посмотреть сообщение
Bedolaga, по поводу Вашей идеи с DVD, не сказать чтобы ничего не получилось, получилось несколько не то .
Пересобрал Loading и опробовал. Если раньше при начале движения выскакивала надпись "Не отображается при движении" на синем фоне, то теперь при начале движения экран становится полностью черным и восстанавливается при остановке.
Оценил деликатность фразы "несколько не то"

такие результаты это скорее норма при взломе вслепую. Буду много думать. Напишу соображения чуть позже. Спасибо Дмитрий что нашел время на эксперимент.

---------- Добавлено в 13:41 ---------- Предыдущее сообщение было написано в 03:30 ----------

Буду делиться своими соображения порционно, по мере появления, если не против.

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

И вот тут возникает основная проблема: как узнать адрес кода, вызывающего процедуру loc_115798? С отладчиком это было бы тривиальной задачей: посмотрел бы в стек или содержимое регистра PR (Return address). Но с мертвым листингом это недоступно. И как теперь? IDA выдает единственную ссылку на loc_115798:

DATA XREF: .data:001926C4

т.е. это место в какой-то таблице, в которой и хранится адрес нашей процедуры. Значит ее вызов осуществляется где-то косвенным путем, через смещение data:001926C4 от начала этой загадочной таблицы.

В мануале, ссылку на который я приводил, описывается техника вызова функций через смещения в Глобальной Таблице Смещений (GOT). Видимо и здесь также. Нужно только подходящую таблицу найти. У меня вот кандидатура:

Код:
 
.data:00192218 aUi_dvdcontrold:.sdata "<<----------UI_DVDControlDepend End!!"
.data:00192218                                         ; DATA XREF: .text:off_DB65Co
в ней смещение для нашей процедуры: h'4AC

теперь можно тупо поискать по листингу обращения к функциям с использованием смещения h'4AC.

Их там порядком будет, но поппадаются и очень похожие на то, что нужно:

Код:
 
.text:0010278E loc_10278E:                             ; CODE XREF: .text:00102782
.text:0010278E                 mov.l   @(h'1F4,pc), r3 ; [00102984 HideScreen@HMB_AbstractControl@@IAAXH@Z
.text:00102790                 mov     #h'25, r5
.text:00102792                 mov.l   @r3, r3
.text:00102794                 jsr     @r3
.text:00102796                 mov     r8, r4
.text:00102798                 mov.w   @(h'70,pc), r3 ; [0010280C] = h'250
.text:0010279A                 mov     r8, r2
.text:0010279C                 add     r3, r2
.text:0010279E                 mov.l   @r2, r0
.text:001027A0                 cmp/eq  #1, r0
.text:001027A2                 bf      loc_1027A8      ; Неужто?
.text:001027A4                 mov     #2, r3
.text:001027A6                 mov.l   r3, @r2
.text:001027A8
.text:001027A8 loc_1027A8:                             ; CODE XREF: .text:001027A2j
.text:001027A8                 mov.l   @r8, r0         ; Неужто?
.text:001027AA                 mov.w   @(h'56,pc), r3 ; [00102804] = h'4AC
.text:001027AC                 mov.l   @(r0,r3), r3
.text:001027AE                 jsr     @r3
.text:001027B0                 mov     r8, r4
интересно, что делает функция библиотечная HideScreen? Закрывает текущий экран, для последующего вывода, типа "Зарещено в движении"?
Bedolaga вне форума   Вверх Ответить с цитированием
Пользователь сказал cпасибо:
Старый 16.06.2011, 23:06   #54
Ёжик Пых
Старожил Клуба
 
Аватар для Ёжик Пых
 
Имя: Дмитрий
Авто: PS 2.4D AT 17MY, i-Miev 12MY
Сообщений: 654
По умолчанию Re: Исследование механизма работы ПО MMCS

Похоже на правду. За мануал спасибо, действительно начинаешь думать как компилятор .

Я попробую вот так, по наглому :

Код:
.text:0010278E loc_10278E:                             ; CODE XREF: .text:00102782 
.text:0010278E                 rts 
.text:00102790                 nop 
.text:00102792                 mov.l   @r3, r3 
.text:00102794                 jsr     @r3 
.....



---------- Добавлено в 23:11 ---------- Предыдущее сообщение было написано в 23:06 ----------

Цитата:
Сообщение от Bedolaga Посмотреть сообщение
интересно, что делает функция библиотечная HideScreen? Закрывает текущий экран, для последующего вывода, типа "Зарещено в движении"?
Я думаю, это как раз выключенный экран, который я наблюдал.
Ёжик Пых вне форума   Вверх Ответить с цитированием
Старый 17.06.2011, 04:39   #55
Bedolaga
Бывалый
 
Имя: Алексей
Авто: Pajero Sport 2010 3.0
Сообщений: 29
По умолчанию Re: Исследование механизма работы ПО MMCS

[QUOTE=Ёжик Пых;1037974]
Я попробую вот так, по наглому :

Код:
.text:0010278E loc_10278E:                             ; CODE XREF: .text:00102782 
.text:0010278E                 rts 
.text:00102790                nop
хорошая мысль, которую я стеснялся предложить, ибо понимаю, что это все время и трудозатраты. Таким образом будет окончательно ясно: содержит ли эта процедура что-то более существенное, чем просто вывод на экран сообщения о запрете просмотра в движении, но будет по прежнему не понятно, откуда она вызывается.

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

А я тем временем внимательно посмотрю те процедуры, которые ты заколотил, чтобы лучше понять логику, которая запрещает просмотр.
Bedolaga вне форума   Вверх Ответить с цитированием
Старый 17.06.2011, 10:59   #56
Ёжик Пых
Старожил Клуба
 
Аватар для Ёжик Пых
 
Имя: Дмитрий
Авто: PS 2.4D AT 17MY, i-Miev 12MY
Сообщений: 654
По умолчанию Re: Исследование механизма работы ПО MMCS

Цитата:
Сообщение от Bedolaga Посмотреть сообщение
А я тем временем внимательно посмотрю те процедуры, которые ты заколотил, чтобы лучше понять логику, которая запрещает просмотр.
Насколько помню, там 3 проверки: side_brake, tv_park, car_speed.

А вот ячейки памяти, где всё это живет, если не ошибаюсь (смещения 6B, 6C, 6D от R0 с учетом шифта в лево на 2 - 1AC, 1B0, 1B4) :

Код:
.text:00021EB0                 mov     #h'6B, r3       ; Move Immediate Byte Data
.text:00021EB2                 mov.l   @(4,r8), r0     ; Move Structure Long Data
.text:00021EB4                 shll2   r3              ; Shift Logical Left 2
.text:00021EB6                 mov.l   off_2214C, r4 ; aUi_dvdcontr_14 ; "[UI_DVDControl055M] side_brake=%d"
.text:00021EB8                 jsr     @r9 ; sub_745B8 ; Jump to Subroutine
.text:00021EBA                 mov.l   @(r0,r3), r5    ; Move Long Data
.text:00021EBC                 mov     #h'6C, r3       ; Move Immediate Byte Data
.text:00021EBE                 mov.l   @(4,r8), r0     ; Move Structure Long Data
.text:00021EC0                 shll2   r3              ; Shift Logical Left 2
.text:00021EC2                 mov.l   off_22150, r4 ; aUi_dvdcontr_15 ; "[UI_DVDControl055M] tv_park=%d"
.text:00021EC4                 jsr     @r9 ; sub_745B8 ; Jump to Subroutine
.text:00021EC6                 mov.l   @(r0,r3), r5    ; Move Long Data
.text:00021EC8                 mov     #h'6D, r3       ; Move Immediate Byte Data
.text:00021ECA                 mov.l   @(4,r8), r0     ; Move Structure Long Data
.text:00021ECC                 shll2   r3              ; Shift Logical Left 2
.text:00021ECE                 mov.l   off_22154, r4 ; aUi_dvdcontr_16 ; "[UI_DVDControl055M] car_speed=%d"
.text:00021ED0                 jsr     @r9 ; sub_745B8 ; Jump to Subroutine
Ёжик Пых вне форума   Вверх Ответить с цитированием
Пользователь сказал cпасибо:
Старый 17.06.2011, 20:03   #57
DinP
Вступаю в Клуб
 
Имя: Денис
Авто: я пешком
Сообщений: 1
По умолчанию Re: FAQ по штатной MMCS (Все вопросы в одной теме)

Цитата:
Сообщение от Ёжик Пых Посмотреть сообщение
Гы. А если скорость порта поменять ещё интересней будет . Там запрашивается устройство с адресом А0 на шине в цикле и ждет ACK, которого нет.
Сорри что встреваю,но адрес A0 обычно используется для еепром.Рискну предположить что в ключе обновления стоит что-нибудь типа 24Cxx(тогда нет никакой проблемы склонировать ключ).
Правда есть варианты что еепром будет какой-нибудь чудестный(типа как в катриджах Xerox90 или XC01) со стандартным I2C,но со всякими хитрыми защитами.В таком случае придется писать эмулятор.
DinP вне форума   Вверх Ответить с цитированием
Старый 17.06.2011, 20:31   #58
Bedolaga
Бывалый
 
Имя: Алексей
Авто: Pajero Sport 2010 3.0
Сообщений: 29
По умолчанию Re: Исследование механизма работы ПО MMCS

Согласен, судя по строковому шаблону, который используется в заглушенных процедурах:

Код:
 
.data:001A2558 aDvdprohibitfac:.sdata "DVDProhibitFactorChanged av_prohibit=%d,side_brake=%d,tv_park"
так оно и есть. Интересно, эти параметры и для AUX используются? Если так, можно ненапряжно походить по листингу, поискать все обращения к ним и забить все попытки их как-то изменить. Попробую такой вариант.

---------- Добавлено в 20:15 ---------- Предыдущее сообщение было написано в 19:31 ----------

В дополнение,

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

Например для "side_brake":

это может быть строка "mov #h'6B, r3", а далее рядышком должно быть такое:

Код:
 
shll2   r3
или нечто аналогичное по результату

так вот, после непродолжительных поисков находим аккурат содержимое одной из процедур, которую ты заглушил:

Цитата:
.text:00115972 mov #h'6B, r3
.text:00115974 mov r9, r2
.text:00115976 shll2 r3
.text:00115978 add r3, r2
.text:0011597A mov #1, r3
.text:0011597C mov.l r3, @r2
.text:0011597E mov r8, r3
.text:00115980 add #h'13, r3
.text:00115982 mov.b @r3, r3
.text:00115984 extu.b r3, r3
.text:00115986 tst r3, r3
.text:00115988 bf loc_11598E
.text:0011598A mov #0, r3
.text:0011598C mov.l r3, @r2
.text:0011598E
.text:0011598E loc_11598E: ; CODE XREF: .text:00115988
.text:0011598E mov #h'6C, r3
.text:00115990 mov r9, r2
.text:00115992 shll2 r3
.text:00115994 add r3, r2
.text:00115996 mov #1, r3
.text:00115998 add #h'14, r8
.text:0011599A mov.l r3, @r2
.text:0011599C mov.b @r8, r3
.text:0011599E extu.b r3, r3
.text:001159A0 tst r3, r3
.text:001159A2 bf loc_1159A8
.text:001159A4 mov #0, r3
.text:001159A6 mov.l r3, @r2
т.е. все сходится. Эти те самые параметры, значит надо внимательно пошариться по листину и найти те места, которые ты возможно пропустил. Пошел искать.

---------- Добавлено в 20:23 ---------- Предыдущее сообщение было написано в 19:31 ----------

Оппа!

Вот очень подозрительные манипуляции с этими адресами (sie_brake и tv_park):

Код:
 
loc_427AE:                              ; CODE XREF: sub_42608+142
.text:000427AE                 mov.w   @(h'B2,pc), r3 ; [00042864] = h'11A
.text:000427B0                 mov     r8, r10
.text:000427B2                 add     r3, r10
.text:000427B4                 mov.b   @r10, r3
.text:000427B6                 extu.b  r3, r0
.text:000427B8                 cmp/eq  #2, r0
.text:000427BA                 bf      loc_427D2
.text:000427BC                 mov     #h'6B, r3
.text:000427BE                 mov     r8, r0
.text:000427C0                 shll2   r3
.text:000427C2                 mov.l   @(r0,r3), r0
.text:000427C4                 cmp/eq  #1, r0
.text:000427C6                 bf      loc_427D2
.text:000427C8                 mov     #2, r5
.text:000427CA                 mov.l   @(h'224,pc), r3 ; [000429F0] = sub_47C4C
.text:000427CC                 shll16  r5
.text:000427CE                 jsr     @r3 ; sub_47C4C
.text:000427D0                 mov     r8, r4
.text:000427D2
.text:000427D2 loc_427D2:                              ; CODE XREF: sub_42608+1B2
.text:000427D2                                         ; sub_42608+1BE
.text:000427D2                 mov     #9, r5
.text:000427D4                 mov.l   @(h'218,pc), r3 ; [000429F0] = sub_47C4C
.text:000427D6                 shll16  r5
.text:000427D8                 jsr     @r3 ; sub_47C4C
.text:000427DA                 mov     r8, r4
.text:000427DC                 mov     #3, r3
.text:000427DE                 mov     r8, r0
.text:000427E0                 mov.b   r3, @r10
.text:000427E2                 mov     #-h'6C, r3
.text:000427E4                 extu.b  r3, r3
.text:000427E6                 mov.l   @(r0,r3), r0
.text:000427E8                 cmp/eq  #1, r0
.text:000427EA                 bf      loc_427F2
.text:000427EC                 mov.l   @(h'204,pc), r3 ; [000429F4] = sub_4E058
.text:000427EE                 jsr     @r3 ; sub_4E058
.text:000427F0                 mov     r8, r4
.text:000427F2
в общем наметилась какая-то осмысленная стратегия в работе: анализ всех кусков кода, где манипулируют side_brake и tv_park и далее нужная модификация.

Все, можно идти спать.
Bedolaga вне форума   Вверх Ответить с цитированием
Старый 23.06.2011, 01:03   #59
Ёжик Пых
Старожил Клуба
 
Аватар для Ёжик Пых
 
Имя: Дмитрий
Авто: PS 2.4D AT 17MY, i-Miev 12MY
Сообщений: 654
По умолчанию Re: Исследование механизма работы ПО MMCS

Bedolaga, перепробовал кучу вариантов, нашел c твоей подсказкой альтернативный метод DVD in Motion, AUX не сдается

Все Park->Run относятся только к DVD. Вместо 3х заглушек, ставим одну:

Код:
.text:00115798 ; =============== S U B R O U T I N E =======================================
.text:00115798
.text:00115798
.text:00115798 sub_115798:                             ; DATA XREF: .data:001926C4o
.text:00115798                                         ; .pdata:002A9968o
.text:00115798                 rts
.text:0011579A                 nop
.text:0011579C                 mov.l   r10, @-r15
.text:0011579E                 mov.l   r11, @-r15
.text:001157A0                 mov.l   r12, @-r15
.text:001157A2                 mov.l   r13, @-r15
.text:001157A4                 sts.l   pr, @-r15
.text:001157A6                 add     #-h'10, r15
.text:001157A8                 mov     r4, r8
.text:001157AA                 mov     #-h'70, r3
.text:001157AC                 mov     r8, r10
.text:001157AE                 extu.b  r3, r3
И там рядом куча манипуляций с заветными ячейками, вызванными ниоткуда:

Код:
.text:00115972 loc_115972:                             ; CODE XREF: sub_115950+16j
.text:00115972                 mov     #h'6B, r3
.text:00115974                 mov     r9, r2
.text:00115976                 shll2   r3
.text:00115978                 add     r3, r2
.text:0011597A                 mov     #1, r3
.text:0011597C                 mov.l   r3, @r2
.text:0011597E                 mov     r8, r3
.text:00115980                 add     #h'13, r3
.text:00115982                 mov.b   @r3, r3
.text:00115984                 extu.b  r3, r3
.text:00115986                 tst     r3, r3
.text:00115988                 bf      loc_11598E
.text:0011598A                 mov     #0, r3
.text:0011598C                 mov.l   r3, @r2
.text:0011598E
.text:0011598E loc_11598E:                             ; CODE XREF: sub_115950+38j
.text:0011598E                 mov     #h'6C, r3
.text:00115990                 mov     r9, r2
.text:00115992                 shll2   r3
.text:00115994                 add     r3, r2
.text:00115996                 mov     #1, r3
.text:00115998                 add     #h'14, r8
.text:0011599A                 mov.l   r3, @r2
.text:0011599C                 mov.b   @r8, r3
.text:0011599E                 extu.b  r3, r3
.text:001159A0                 tst     r3, r3
.text:001159A2                 bf      loc_1159A8
.text:001159A4                 mov     #0, r3
.text:001159A6                 mov.l   r3, @r2
Мне непонятно из этого только одно, в 6D (vehicale speed) пишется либо #0, либо #1, т.е. это получается флаг, а не реальная скорость ???
Ёжик Пых вне форума   Вверх Ответить с цитированием
Пользователь сказал cпасибо:
Старый 23.06.2011, 09:56   #60
WhiteTiger
Житель Клуба
 
Аватар для WhiteTiger
 
Имя: Виталий
Авто: -
Сообщений: 196
По умолчанию Re: Исследование механизма работы ПО MMCS

Дима, в MMCS в разделе Vehicle Signal Check есть данные от 3 сенсоров: Speed, ILL, Shift R Position. Последнее это понятно задняя передача, ILL - Illumination активируется при включении ближнего света, а этот пресловутый Speed становится On при наборе скорости в 6 км\ч, тогда же блокируются и DVD и AUX. Может это тебе как то поможет.
WhiteTiger вне форума   Вверх Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Outlander. Моторчик механизма стеклоподъемника Rikoshet Outlander - Эксплуатация и ремонт 25 31.01.2020 15:47
Поломка механизма поднятия запаски Dozr Outlander XL - Запчасти и ремонт 33 02.08.2017 15:23
Избавлю от площадки заднего дискового тормозного механизма T - 34 Outlander. Агрегаты и иже с ними 0 22.04.2011 15:41
сижу без работы!!! САНЯ В.-58 Работа (поиск и предложения) 0 08.02.2011 18:22

Текущее время: 07:20. Часовой пояс GMT +3.
Powered by vBulletin® Version 3.8.10
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Использование материалов сайта разрешается только при условии размещения активной ссылки на OUT-CLUB.RU
Copyright ©2006 - 2024, WWW.OUT-CLUB.RU