Исследование механизма работы программного обеспечения MMCS
Согласен с предыдущими ораторами: как минимум тему с хакингом нужно выносить в отдельную. А здесь только уже законченные и проверенные результаты.
BTW, кто-то изучал уже этот кусок из AVUnit.exe?: Код:
Код:
.text:001157BC bf/s loc_1157E8 Код:
.text:001157BC bra loc_1157E8 Я понимаю что это ламерство, но а вдруг? ---------- Добавлено в 04:51 ---------- Предыдущее сообщение было написано Вчера в 14:34 ---------- 2 Ёжик Пых: Дмитрий, я тебе в почту скинул пропатченый вариант. Если будет время, силы и желание, закинь его в прошивку и попробуй посмотреть, что будет. К большому сожалению это единственный способ отладки на сегодня. Вот почему я так усердно пытаюсь понять, какие порты для связи с устройством доступны. Все же очень печально , что то был не ком порт. Найдем способ коммуникации, значит сможет нормальную отладку организовать. Иначе будет все будет наобум через модификацию кода, замену лоадинга, запись на диск, проверка на устройстве и т.д. по циклу. Надеюсь выхлоп будет стоить потраченных усилий. |
Re: Исследование механизма работы ПО MMCS
В свое время для отладки (не для производственного тестирования) на платах были спец. контакты или колодки (jtag вроде именовали), как правило не распаянные в производтсвенной модели, может и тут что-то подобное имеется...
Интересно на чем отлаживают код разработчики, имхо не на живой голове, а на железке типа "ренесанса" или софтовом эмуляторе, но у меня в свое время не удалось виртуалку под sh4 запустить нормально =( Но кто-то вроде писал (сейчас не уверен что именно про mmcs, возможно про другую kiwi-систему, что пакет собран для работы с несколькими различными платформами одновременно, может наш тоже? Но вообще странная штука, что за столько лет так и не утекла из недр восточных разработчиков ни одна версия kiwi редактора... но как-то даже натыкался на резюме одного из разработчиков, кто приводил в пример что разрабатывал эту систему. |
Re: Исследование механизма работы ПО MMCS
Цитата:
У этого факта есть 2 стороны: 1) плюс: много полезной информации компилятор оставляет в теле исполняемого модуля. Там есть потрясающие строки вида " А вот сейчас мы запретим показ DVD в движении". Причем строки хранятся недалеко от кода, как это и положено при компиляции объектов :biggrin: Именно поэтому относительно легко удается грохнуть этот запрет с DVD, особенно не парясь с трассировкой кода. 2) минус: крайне затруднено восстановление программной логики, поскольку очень много вызовов процедур не по прямым адресам, а косвенно через относительные смещения к неивестным из мертвого листинга адресам (которые видимо являются ссылками на объекты исходного текста ООП). И мертвый код анализировать становится трудно. Это плата за удобство концепции ООП для разработчика. На интелсовместимых платформах, я даже спустя 15 лет перерыва могу по ассемблерному коду легко вернуть все в С. Легко понять вызовы процедур и какие параметры при этом передаются. На SH-4 у меня таких навыков нет, поэтому это все время. Если кто обладает знаниями по стандартной структуре ассемблерного кода SH-4, в который компилируются высокоуровневые вызовы процедур и функций хоть на CPP хоть на C#, буду признателен за краткую информацию. Что касается отладки: свой небольшой отладчик в MMCS загружен, можно пытаться его слегка переписать, чтобы он выводил на экран устройства или в файл нужную информацию. Но что бы его переписать и отладить нужно большое количество циклов: модификация кода --> модификация loading.kwi --> запись на HDD --> запуск на устройстве ---> анализ результата --> модификация кода --> ... и далее по циклу. Все прозаично но муторно и долго. А альтернативой является интуитивное и несистематическое тыканье в разные места кода на удачу и проверка что получилось. Тоже вариант, но менее предсказуемый. |
Re: Исследование механизма работы ПО MMCS
В эту тему буду выкладывать ссылки на полезную информацию, связанную с SH4 архитектурой. Нашел очень важный документ SH-4 Generic and C Specific ABI, маленько раскрывающий особенности вызовов функций и соглашения по передаче параметров при этих вызовах. Собственно нечто подобным я и просил поделиться почтеннейшую публику постом выше.
|
Re: Исследование механизма работы ПО MMCS
когда будет "Hello World" для тестирования? :)
|
Re: Исследование механизма работы ПО MMCS
Цитата:
|
Re: Исследование механизма работы ПО MMCS
Bedolaga, по поводу Вашей идеи с DVD, не сказать чтобы ничего не получилось, получилось несколько не то :).
Пересобрал Loading и опробовал. Если раньше при начале движения выскакивала надпись "Не отображается при движении" на синем фоне, то теперь при начале движения экран становится полностью черным и восстанавливается при остановке. |
Re: Исследование механизма работы ПО MMCS
Цитата:
такие результаты это скорее норма при взломе вслепую. Буду много думать. Напишу соображения чуть позже. Спасибо Дмитрий что нашел время на эксперимент. ---------- Добавлено в 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). Видимо и здесь также. Нужно только подходящую таблицу найти. У меня вот кандидатура: Код:
теперь можно тупо поискать по листингу обращения к функциям с использованием смещения h'4AC. Их там порядком будет, но поппадаются и очень похожие на то, что нужно: Код:
|
Re: Исследование механизма работы ПО MMCS
Похоже на правду. За мануал спасибо, действительно начинаешь думать как компилятор :).
Я попробую вот так, по наглому : Код:
.text:0010278E loc_10278E: ; CODE XREF: .text:00102782 ---------- Добавлено в 23:11 ---------- Предыдущее сообщение было написано в 23:06 ---------- Цитата:
|
Re: Исследование механизма работы ПО MMCS
[QUOTE=Ёжик Пых;1037974]
Я попробую вот так, по наглому : Код:
.text:0010278E loc_10278E: ; CODE XREF: .text:00102782 В общем задача: четко понимать через какие таблицы смещений происходят вызовы процедур - очень актуальна, она позволит без лишних экспериментов восстановить программную логику. А я тем временем внимательно посмотрю те процедуры, которые ты заколотил, чтобы лучше понять логику, которая запрещает просмотр. |
Re: Исследование механизма работы ПО MMCS
Цитата:
А вот ячейки памяти, где всё это живет, если не ошибаюсь (смещения 6B, 6C, 6D от R0 с учетом шифта в лево на 2 - 1AC, 1B0, 1B4) : Код:
.text:00021EB0 mov #h'6B, r3 ; Move Immediate Byte Data |
Re: FAQ по штатной MMCS (Все вопросы в одной теме)
Цитата:
Правда есть варианты что еепром будет какой-нибудь чудестный(типа как в катриджах Xerox90 или XC01) со стандартным I2C,но со всякими хитрыми защитами.В таком случае придется писать эмулятор. |
Re: Исследование механизма работы ПО MMCS
Согласен, судя по строковому шаблону, который используется в заглушенных процедурах:
Код:
---------- Добавлено в 20:15 ---------- Предыдущее сообщение было написано в 19:31 ---------- В дополнение, я попытался поискать по листингу шаблон возможных обращений к этим адресам, предположительно хранящих эти параметры. Например для "side_brake": это может быть строка "mov #h'6B, r3", а далее рядышком должно быть такое: Код:
так вот, после непродолжительных поисков находим аккурат содержимое одной из процедур, которую ты заглушил: Цитата:
---------- Добавлено в 20:23 ---------- Предыдущее сообщение было написано в 19:31 ---------- Оппа! Вот очень подозрительные манипуляции с этими адресами (sie_brake и tv_park): Код:
Все, можно идти спать. |
Re: Исследование механизма работы ПО MMCS
Bedolaga, перепробовал кучу вариантов, нашел c твоей подсказкой альтернативный метод DVD in Motion, AUX не сдается :wall:
Все Park->Run относятся только к DVD. Вместо 3х заглушек, ставим одну: Код:
Код:
|
Re: Исследование механизма работы ПО MMCS
Дима, в MMCS в разделе Vehicle Signal Check есть данные от 3 сенсоров: Speed, ILL, Shift R Position. Последнее это понятно задняя передача, ILL - Illumination активируется при включении ближнего света, а этот пресловутый Speed становится On при наборе скорости в 6 км\ч, тогда же блокируются и DVD и AUX. Может это тебе как то поможет.
|
Текущее время: 14: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