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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Защита прошивки в LPC23xx/LPC24xx, написание специфического загрузчика
meister
сообщение Mar 22 2008, 12:03
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Цитата(Vitaliy_ARM @ Mar 22 2008, 14:42) *
К сожалению в вашем случае "против лома нет приема".


Вы предлагаете загрузчик, который расшифровывает прошивку при каждом запуске? Будет исходить из того, что и мой и Ваш МК распилили. Мой можно сразу прошивать в другой, Ваш нужно прошагать (в симуляторе), образ памяти забрать и тоже прошивать. Велика разница?

UPD
Вообще не понял, в чем заключается смысл всех этих вывертов. Если получить точное содержимое флэш и залить в другой МК - он будет работать точно так же. Если получили содержимое флэш -- поздно боржоми пить.

Сообщение отредактировал meister - Mar 22 2008, 12:08
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Mar 22 2008, 12:59
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(meister @ Mar 22 2008, 15:03) *
Вы предлагаете загрузчик, который расшифровывает прошивку при каждом запуске? Будет исходить из того, что и мой и Ваш МК распилили. Мой можно сразу прошивать в другой, Ваш нужно прошагать (в симуляторе), образ памяти забрать и тоже прошивать. Велика разница?

UPD
Вообще не понял, в чем заключается смысл всех этих вывертов. Если получить точное содержимое флэш и залить в другой МК - он будет работать точно так же. Если получили содержимое флэш -- поздно боржоми пить.


Так то оно так. Пока главной задачей ставится ухудшение дизасемблирования прошивки. Прикладная пограмма запускается и тоже распаковывается, если загрузчик в нормальном состоянии, CRC его и распакованной части известны заранее. Поэтому в реальном процессоре побегать J-tag ом не получится.
Так как нельзя снять бит защиты. в дизасемблере понять смысл этой прошивки очень сложно и чтобы определить что где надо почистить нужно хорошо постараться.
Это просто пока одно из решений для создания проблем дисасемблированию. Самое ценное в такой защите, это уметь отличать разницу между процессорами (например по уникальному серийнику, который нельзя было бы зачитать внешними средствами, которого нет у филипса). Тогда можно было делать распаковщик с ключем-серийником (подобным образом сделано у BlackFin серий ADSP - BF52x).

Если возможно перешить сам ISP загрузчик в филипсе, то все эти заморочки не имеют смысл.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 22 2008, 14:25
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Vitaliy_ARM @ Mar 22 2008, 14:15) *
Написать..

Не смею более надоедать с разъяснениями.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Kirill Frolov
сообщение Mar 23 2008, 06:55
Сообщение #19


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

Группа: Новичок
Сообщений: 111
Регистрация: 10-02-07
Из: St.Petersburg, Russia
Пользователь №: 25 241



Цитата(zltigo @ Mar 20 2008, 23:49) *
Совершенно не нужны никакие "обработчики c call" в bootloader-e - вектор 32bit - загружается одной командой
Код
                ldr     pc,[pc,#-0x120]         //  Jump directly to the address given by the AIC

в pc и все.


Далеко не всё. Кто будет подтверждение давать AIC'у, кто будет стек переключать, либо иметь большой отдельный стек для прерываний, кто будет возврат из прерывания делать и функции со специальным прологом/эпилогом? Да, gcc вроде как что-то из этой области умеет... А как я говорю используются обычные функции.

Цитата
FIQ, если он один, действительно можно отправить, например, на 0 адрес основной прошивки.
Кроме, того вопрос-то был о другом.


Для FIQ у арма вектор предусмотрен, как раз ^^^ для такой вот команды. Но вопросы обработки и возврата на совести обработчика. Как и стека. Для FAST прерываний это оправдано.


--------------------
[ZX]
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 23 2008, 08:02
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Kirill Frolov @ Mar 23 2008, 09:55) *
А как я говорю используются обычные функции.

Нет ни малейшей необходимости использовать "обычные" функции вместо обработчиков прерываний. И писать руками ТУПУЮ обертку сохраняющую все регистры, вместо того, что-бы позволить оптимизировать это дело компилятору. Нет ни малейшей необходимости делать ЛИШНИЙ вызов "обычной" функции из этой обертки.
Цитата
Кто будет подтверждение давать AIC'у

Проблема века - естественно вызванный обработчик прерывания. Причем в тот момент КОГДА надо, например для организации вложенных прерываний, а не по выходу из функции. Нафиг такой "сервис".
Цитата
, кто будет стек переключать, либо иметь большой отдельный стек для прерываний,

Да вызываемый обработчик ЕСЛИ КОНКРЕТНО ЕМУ НУЖЕН отдельный огромный стек и будет его преустанаваливать со штатного аппаратно переключенного. А вот если обертка будет всем и вся НЕ РАЗЛИЧАЯ и зачем-то СОФТОВО переустанавливать стек, вместо того, что-бы пользоватся родным IRQ стеком, то это чистой воды глупость.
Цитата
Для FAST прерываний это оправдано.

Это оправдано всегда.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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