реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Closed TopicStart new topic
> Что там ST учудил с защитой кода.....
Dr.Alex
сообщение Jun 13 2015, 09:39
Сообщение #46


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(bugdesigner @ Jun 13 2015, 07:48) *
Допустим, что мы успели приаттачиться к DP до момента, пока он не был отключен. Теперь нам нужно пропустить момент отключения DP и запустить ядро процессора. Что у нас получится - HardFault, потому, что доступ к flash при подключенном DP заблокирован. Можете провести экспериментик - напишите маленькую программку, чтоб гоняла какой-нибудь цикл, поставьте RDP=1 и попробуйте подключиться к SWD/JTAG дебаггером. А потом попробуйте запустить свой код из flash.

Не надо запускать свой код из флеш.
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jun 13 2015, 12:01
Сообщение #47


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Цитата(Dr.Alex @ Jun 13 2015, 12:39) *
Не надо запускать свой код из флеш.

А что тогда делать? Предложите хоть какой-нибудь алгоритм действий. Запустить свой код из ОЗУ- не получите доступ к флэш. В ОЗУ ничего интересного нет. Что дальше делать?

Сообщение отредактировал bugdesigner - Jun 13 2015, 12:02
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 13 2015, 12:05
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Надоело повторять каждому одно и то же. Для начала помешать проге отключить жтаг (есть доступ к регистрам), а затем найти в раме или регистрах либо ключи аеса, либо расшифрованные куски прошивки.
Читайте тему с начала (на все подобные вопросы уже отвечено), либо не пишите здесь вовсе.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 13 2015, 13:54
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



А через жтаг можно узнать текущую выполняемую команду, если она выполняется из флешь и та защищена от чтения? Разве есть доступ к конвейерам и прочим патрохам откуда можно узнать код команды?

Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 13 2015, 14:04
Сообщение #50


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Варианты навскидку:
1) прописывать PC, пытаясь перепрыгнуть нежелательный участок
2) останавливать проц через каждые несколько тактов и перезаписывать "опасные" регистры, не давая проге записать туда то что ей нужно
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jun 13 2015, 14:23
Сообщение #51


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Даже если не отключать дебаг порт, можно и нужно написать бутлоадер так, чтоб по содержимомоу памяти и регистров нельзя было ничего утянуть.
1. Ключи AES разместить в flash, и заносить их сразу в регистры CRYP_Kxx (прочитать их нельзя - доступ Write Only)
2. Запихивать блочками по 4 байта прошивку из внешнего носителя (USB, SD) и вычитывая сразу занписывать во внутреннюю flash
В результате, в любой момент времени, в памяти нет ни кусочков прошивки, ни ключей.


Цитата(Dr.Alex @ Jun 13 2015, 17:04) *
Варианты навскидку:
1) прописывать PC, пытаясь перепрыгнуть нежелательный участок
2) останавливать проц через каждые несколько тактов и перезаписывать "опасные" регистры, не давая проге записать туда то что ей нужно

Это в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash. Вы можете изменить PC, но не сможете запустить процессор - получите ошибку что-то типа "невозможно получить инструкцию". Таким образом Вы не можете ни продолжить, не перезапустить выполнение программы из flash. Единственное что можно - это отключиться и ресетнуть МК.
Пошаговое выполнение, естественно, невозможно.
Все это было проверено мной несколько лет назад на железе, можете запустить дебаггер и попробовать. Если найдете "лазейку" - снимаю шляпу.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 13 2015, 15:51
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
то в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash

Ага спасибо, примерно так я себе это и видел.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 13 2015, 19:11
Сообщение #53


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(bugdesigner @ Jun 13 2015, 17:23) *
Это в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash. Вы можете изменить PC, но не сможете запустить процессор - получите ошибку что-то типа "невозможно получить инструкцию".

Вы уже достали со своей флешью. Она нафиг мне не нужна.
Вы судите с колокольни юзера, давящего на кнопочки отладчика в иаре или кайле.
Но о ВСЕХ возможностях и ВСЕХ ограничениях интерфейса это ничего не говорит.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Jun 14 2015, 04:08
Сообщение #54


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Dr.Alex @ Jun 13 2015, 22:11) *
Вы уже достали со своей флешью. Она нафиг мне не нужна.
Вы судите с колокольни юзера, давящего на кнопочки отладчика в иаре или кайле.
Но о ВСЕХ возможностях и ВСЕХ ограничениях интерфейса это ничего не говорит.

Флэш обязательно нужна. В те моменты времени, когда дебаг порт доступен для подключения, ключ шифрования лежит только во флэш, и вынуть его оттуда после подключения к дебаг порту не получится никак(чисто аппаратные способы взлома не учитываемsm.gif). И, наоборот, когда ключ шифрования теоретически доступен для вытаскивания отладчиком(например, при переписывании из флэша в криптомодуль он светится в регистрах процессора), дебаг порт уже недоступен.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jun 14 2015, 06:49
Сообщение #55


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(adnega @ Jun 10 2015, 10:52) *
Давайте попробуем виртуально повзламывать прошивку в Level_1 через отладчик?
0. Подключаемся по JTAG.
1. По USB приходит команда обновить прошивку.


Гм. Когда вы подключаетесь через JTAG к залоченному процу, код из FLASH исполняться не будет. Вы можете подключиться житагом и загрузить свой собственный код из ОЗУ к примеру. Однако этот код не будет иметь доступа к FLASH

Цитата
No access (read, erase, program) to Flash memory or backup SRAM can be
performed while the debug feature is connected or while booting from RAM or
system memory bootloader. A bus error is generated in case of read request.


Цитата(Dr.Alex @ Jun 10 2015, 10:59) *
Да и потом, ведь не обязательно подключаться сначала. Можно и в процессе. И вынуть ключ прямо из регистров блока CRYP :-))))


Когда вы подключите житаг к работающему процу, произойдет сброс. Регистры блока крип при этом обнулятся. Ваш загрузчик из FLASH не сможет быть запущен при подключенном житаге и Level1

Т.е. максимум что вы получите - это содержимое ОЗУ на момент сброса.

UPD Тут я похоже наврал, сброса не будет. Но регистры блока cryp - write-only. Кроме того, вам уже написали выше, что можно отключить ножки отладки - таким образом во время работы программы вы к процу подключиться не сможете - только после сброса.


Цитата(Dr.Alex @ Jun 10 2015, 12:36) *
Но всё равно просматриваются варианты изучить протокол юсб (соснифить работу загрузочного софта), написать свой муляж софта, и затем покопаться жтагом во всех доступных местах (недоступен-то только флеш) чтобы заставить бутлодырь сделать ошибку.


И как вы предлагаете защититься от этого на уровне проца? Опять же, вам уже писали, за не слишком космическую денежку можно вычитать из проца вашу программу вместе со всеми ключами. Подозреваю это будет проще и дешевле предлагаемого вами
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 14 2015, 10:15
Сообщение #56


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Неужели не понятно, что если бы был 100-процентный способ отключить жтаг при левеле1, то не требовался бы левел2?

Поскольку каждый вновь зашедший начинает перечислять все глупости заново (как и всегда),
и совершенно не хочет думать головой, приходится закрыть тему.
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 17:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.02224 секунд с 7
ELECTRONIX ©2004-2016