Обновить

ROP Level 1 в GD32F4: «А метлой дверь подпёр?» Или как нежно слить защищенную прошивку через программатор

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели12K
Всего голосов 21: ↑21 и ↓0+27
Комментарии9

Комментарии 9

помним, что всё что угодно может быть настроено в исполнителе, отключаем прерывания, все прерывания, сбрасываем настройки интерфейсов,

А вотчдог так отключить нельзя, или перенастроить?)

Мимокрокодил, но в STM32 (и возможно в GD32 как в аналоге) IWDG отключается только после сброса микроконтроллера. У программиста есть только два выбора - включать IWDG если он нужен или не включать IWDG если он не нужен. Поэтому иногда даже делают задержку настройки всякой периферии после включения, которая может превратить микроконтроллер в кирпич, чтобы дать шанс программатору стереть кривую прошивку.

Даже у IWDG можно открыть регистры на запись и перезаписать значения прескалера и счётчика на максимальные - в контроллерах не предусмотрена даже опция смены открывающей запись константы, не говоря уже про шифрацию. Это будет проще, чем отправлять за раз по 16 байт. И очень редко программисты высчитывают окно вачдога впритык по тактам - обычно не заморачиваются и ставят что-то в районе секунды, чтобы при зависании автоматически перезагрузилось.

Помню в Атмеге 128 можно было пин батарейного питания дернуть на землю и спокойно слить прошивку). Возможно тут тоже есть специально предусмотренные бэкдоры.

Это как так? И что такое "пин батарейного питания". Для АВР есть какие-то дешёвые методы слива залоченной прошивки?

Глитчинг. Довольно популярная техника, подходит для разных архитектур. Питание просаживается коротким импульсом в момент чтения фьюзов, чтобы bootrom прочитал отсутствие бита защиты от чтения.

А, так вот как это называется.

Были такие 3G-модемы залоченные, от ZTE - там в них прошивку можно было обновить "методом кнопки", кратковременный разрыв питания при загрузке модема.

Статью нейронка писала? Что вот это значит?

вочдог переваривает ассемблерную порцию «корма

ассемблерный код сбрасывает вочдог стандартным методом, как и родная прошивка. Кто что переваривает?

Народ! В терминологии GD есть FWDT (в STM IWDG), его жестко можно включить на этапе прошивки, прям бит сбросить, а еще есть более коварная вещь WWDT (в STM WWDG), тут хуже, в окно не попал, швах! А перенастроить можно, но, тут реально рабочий вариант для любого, даже самого "лютого" WDT, подождать 1.5 минуты или 20 секунд, пофиг, для дампа защищенной прошивки, задача не пачками же дампить? ...эммм, странное дело, а никого не удивило что можно слить обычным программатором? ...и глитчить питание микроконтроллера, от которого кстати контроллеру может стать плохо... банально сгорит, а ещё глитчинг может переключить битики во встроенной FLASH памяти MCU.

dmitryrf - Вы ТРОЛЬ? Суть статьи в чем? А Вы "докопались" до стилистики, стилистика - мое личное дело.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации