SGOEditor. Часть 1. Начало…

Пользователи, которые следят за моим блогом уже знают, что в свое время я заморозил разработку VAGHelper.X на неопределенный срок. Вместе с другими функциями, которые были ранее анонсированы, была заморожена и та часть, которая касалась работы с файлами SGO.

Скорее всего, проект так бы и лежал мертвым грузом где-то на у меня сервере, если бы однажды мне в личку на Драйве не постучал Олег с просьбой помочь с RDKS… Задачу решили, RDKS успешно запустили, но это оказалось мелочным и неважным, после того как выяснилось, что Олег занимается изучением ECU двигателей на VAG группе путем дизассемблирования прошивок!

В общем, Олег придал должное ускорение, в результате чего на свет появился SGOEditor — форк VAGHelper.X ориентированный исключительно на работу с SGO файлами.

Основной функционал по работе с датаблоками уже был частично реализован ранее, поэтому в первую очередь было решено проверить то, что требовало минимальных доработок и исправлений: экспорт данных. Учитывая, что в моем автомобиле используется блок 3T0907115F с прошивкой 0030, для проверки использовался 3T0907115F__0030.sgo

Редактор SGO файлов
Редактор SGO файлов

После извлечения, получается группа из четырех файлов:

Контейнера SGO в формате BIN
Контейнера SGO в формате BIN

Однако практического смысла в этих файлах нет, файлы шифрованные. С расшифровкой помог Олег, у которого уже были наработки в этой области.

Распакованные контейнера в формате BIN
Распакованные контейнера в формате BIN

Файлики извлечены, но как убедится в том, что данные соответствуют тем, что записаны в ECU? Самый надежный вариант считать их программатором. Для этого пришлось снять блок с авто…

Снятие ECU двигателя CDAB
Снятие ECU двигателя CDAB
Снятие замка с разъема ECU
Снятие замка с разъема ECU
ECU MED17 двигателя CDAB
ECU MED17 двигателя CDAB

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

Оригинальные данные ECU в формате BIN
Оригинальные данные ECU в формате BIN

Стоит ли говорить что данные оказались абсолютно одинаковыми?

Сравнение данных в HEХ редакторе
Сравнение данных в HEХ редакторе

Вторым шагом в цепочке экспериментов стала запись модифицированного SGO файла. Самый простой вариант модифицировать SGO — удалить «лишние» датаблоки. Следующий эксперимент проводился уже «на столе» с блоком 06J906026D, благо у Олега оказался «свободный» блок =)

Был файл 06J906026D__3945.sgo размером 1 215 531 байт, содержащий 4 блока данных:

Сводная информация о файле в SGOeditor
Сводная информация о файле в SGOeditor

Стал файл 06J906026D__3945.sgo размером 47 913 байт, содержащий 1 блок данных:

Модифицированный SGO файл
Модифицированный SGO файл

Запускаем ODIS E и…

Ошибка записи модифицированного файла ODIS E
Ошибка записи модифицированного файла ODIS E

…получаем ошибку по ИММО. В общем-то логично, учитывая что кроме ECU двигателя никаких других блоков нет.

После отключения ИММО, модифицированный файл наконец-то пишется в ECU!

Успешная запись модифицированного файла ODIS E
Запись модифицированного файла ODIS E
Артефакты после прошивки модифицированным файлом
Артефакты после прошивки модифицированным файлом

В ближайшее время в планах проверить самое интересное, то, ради чего создавался SGOEditor — создание SGO файла на базе модифицированных BIN файлов и разобраться с артефактами прошивки.

Так что дальше будет еще интереснее, не переключайтесь =)