Чтение защищенных прошивок Январь 5.1

Часто задаваемые вопросы
Ответить
Аватара пользователя
michaelukolov
Администратор
Сообщения: 15
Зарегистрирован: 28 ноя 2016, 20:36

Чтение защищенных прошивок Январь 5.1

Сообщение michaelukolov » 02 июн 2017, 19:12

В этой статье речь пойдет о способе чтения защищенных прошивок ЭБУ Январь 5.1
Как правило, защиту на чтение прошивки ставят чип-тюнеры, которые не хотят, чтобы прошивка с авторскими калибровками попала не в те руки, как правило - в сеть. Лично я при настройке в большинстве случаев также ставлю защиту на чтение, дабы мои купленные прошивки (SPT, LS, TRS) не начали вдруг гулять по сети.

Как это работает?
В CombiLoader можно увидеть галочку "Защита от считывания" - собственно она и включает эту защиту. Защита находится на уровне процессора! - именно это делает блок, с защищенной от чтения прошивкой, уязвимым. Схема при попытке чтения блока с защищенной прошивкой выглядит примерно так: в CLD (или любом другом ПО) нажимаем кнопку "Чтение" - на процессор ЭБУ посылается сигнал по K-Line для идентификации, чтения - процессор дает команду флэш-памяти на стирание, и за несколько сотен наносекунд флеш-память уже абсолютно пустая, вернее содержит одни единицы (FF). При этом в загрузчике происходит ошибка, что блок не выходит на связь. При повторной попытке чтения связь успешно устанавливается, однако после чтения мы получаем прошивку в виде одних единиц.
Узнать заранее, защищена ли прошивка - нельзя! Это проясняется только при попытке чтения.
Как обойти защиту?
Давайте сперва разберемся, что именно происходит, когда мы пытаемся установить связь с блоком, в котором находится защищенная прошивка? Как я уже сказал, процессор посылает команду на стирание флеш-памяти. Флеш-память имеет выводы, которыми задается ее состояние (чтение, запись) соответственно выводы RE# и WE#. Но! У нас имеется еще третий важный вывод - CE# - разрешение выборки кристалла, либо более простыми словами - разрешить или запретить обращаться к флеш-памяти. Так вот.. Дело в том, что для того, чтобы флеш-память выполняла какие-либо команды, необходимо задать низкий уровень сигнала на выводе CE# - в противном случае флеш-память будет игнорировать любые команды. Теперь разберемся, как же нам использовать это в своих целях - считать защищенную прошивку.
Все на самом деле очень просто! Как я уже сказал, при низком уровне на выводе CE# флеш-память выполняет любые команды, а что же тогда происходит, если подать на вывод высокий уровень сигнала (напряжение питания микросхемы)? - флеш-память будет игнорировать любые поступающие на нее команды. В этом и заключается способ обхода - в момент установки соединения необходимо подать высокий уровень на вывод #CE, в таком случае флеш-память проигнорирует сигнал на стирание от процессора. В данном случае есть один нюанс - если мы не перестанем подавать высокий уровень на вывод, то в конце-концов прошивка не считается, более того, загрузчик не поймет, какой ЭБУ мы инициализируем. Значит, нам нужно прекратить подавать высокий уровень на CE# сразу после установки соединения.
Практика..
В случае с ЭБУ Январь 5.1, нам нужно замкнуть выводы флеш-памяти под номерами 32 и 22 в момент установки соединения, затем сразу разомкнуть и дождаться успешного считывания прошивки.
AMD-AM29F010B-90JC.gif

Ответить

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей