Ковыряем формат CUW и cuw.exe из комплекта techstream

С подачи товарища решил немного поколупать формат бинарников которые хавает Calibration Update Wizard который идет с софтом тойоты.

В калибровке всякое разное для работы конкреного ЭБУ. Код прошивки записан в самом чипе в ЭБУ, а данные для его работы и есть так называемая "калибровка". Например там может быть кол-во впрыскиваемого топлива или еще херня какая. Файл сам по себе текстовый, но с бинарным заголовком :

minipic

В заголовке ничего интересного пока, кроме контрольной суммы (выделено синим). Сразу после суммы идет непосредственно блок данных, который разбирается уже после верификации файла. Спонсор поиска кода верификации - течстрим 10й ветки (он не защищен протекторами) и IDA 6.8. Подсчет суммы находится по адресу .text:00407010, а вызов из верификатора

.text:004073BC push    0                               ; crc
.text:004073BE call    crc32
.text:004073C3 add     esp, 0Ch
.text:004073C6 cmp     eax, [ebx+14h]
.text:004073C9 setnz   al

minipic

Длина данных - дворд перед контрольной суммой. В примитивном случае для фикса и пересчета црц файла подойдет простая структура

typedef struct CUW_BINARY_HDR {
    BYTE unknown[0x22];
    DWORD dwFileLength;
    DWORD dwFileChecksumm;
}CUW_BINARY_HDR, *PCUW_BINARY_HDR;

Если црц не совпало, выбрасывается эксепшен

minipic

Далее идет совершенно сатанинская функа чтения ИНИ-файла, который идет сразу после бинарного заголовка.

Первое что проверяет утилита тойоты - версия файла прошивки. Поле Vrsion в разделе Format. Всего в данном ЕХЕ вкомпилено 6 мест под версии и заполнены из них только две. То есть, поддерживается версия CUW-файла 1 и 2. Остальное не используется, пока что

minipic

Если версия не та - эксепшен "'Invalid file format"

Дальше - кол-во калибровок, которые можно включить в один файл. Максимум их 4, это поле NunberOfCalibration. Если больше 4х, выбрасывается сепшен "'File data is incorrect (Wrong number of calibrations)'"

Интересно, что для версии прошивок 2+ явно указывается по какому протоколу будет идти обновление. В моем случае ContactType=CAN

minipic

Значит ли это что есть еще какойнитьвайрлесс или другой, закрытый протокол который скоро будет доступен только дилерам тойоты?

что бы это могло быть?

minipic

Тут вообще начинается самое интересное - какая то магия с TargetCalibration / TargetData и, насколько я понял, никто толком не знает как оно генерится друг из друга

minipic


Комментарии
Тарас
Андрей, подскажите пожалуйста какой надо выбрать микроконтроллер из списка в программе IDA Pro 6.8, чтобы она правильно дизассемблировала прошивку от ЭБУ Toyota? Внутри ЭБУ процессор 76F0070.
Thu Jun 29 2017 07:31:46 GMT+0300 (MSK)
Andrew-mobile
привет, я выбирал разные вариации процессора NEC
Thu Jun 29 2017 07:46:36 GMT+0300 (MSK)
Тарас
Так и какой правильнее и полнее дизассемблировал?
Thu Jun 29 2017 11:45:05 GMT+0300 (MSK)
Andrwe
V850E1/ES
Thu Jun 29 2017 11:46:18 GMT+0300 (MSK)