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

 
 
> Защита прошивки в LPC23xx/LPC24xx, написание специфического загрузчика
Vitaliy_ARM
сообщение Mar 20 2008, 15:30
Сообщение #1


Знающий
****

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



Пишу внутрипрограммный загрузчик.

Как понимаю, в этих процессорах защита организована так.
По адресу 0x000001FC во флешь находится поле Code Read Protection (CRP).
Записав в это поле определенное в даташите значение, устанавливается степень защиты кода.
При загрузки внутренний загрузчик смотрит на это поле и решает, что делать ISP.

Так же есть возможность определить программно, закрыт процессор или нет.

Только не приятно, что это поле находится в одной странице вместе с векторами прерывания. А загрузчик перешиваться не должен.
Как кто решает проблему программной установки этого поля перезаписи векторов прерывания?
Или может можно более красиво решить эту задачу?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Mar 20 2008, 15:38
Сообщение #2


Гуру
******

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



Цитата(Vitaliy_ARM @ Mar 20 2008, 18:30) *
Как кто решает проблему программной установки этого поля перезаписи векторов прерывания?

Очередную проблему Вы выдумали - защита штатного загрузчика должна быть активирована ВСЕГДА. А из своего - пишите через ISP что хотите.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Mar 21 2008, 13:25
Сообщение #3


Знающий
****

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



Цитата(zltigo @ Mar 20 2008, 18:38) *
Очередную проблему Вы выдумали - защита штатного загрузчика должна быть активирована ВСЕГДА. А из своего - пишите через ISP что хотите.


Понял.

Загрузчик теперь немного модифицировался. Нужно сделать еще и так.
Часть функций зашиврована и лежит в некоторой странице флешь. Потом, когда
загрузчик определит, что защита включена, он распакует содержимое флешь в область RAM.
И сразу запустит от туда обработчик команд. (компилятор IAR)

Первое решение влоб, это тупой перенос содержимого флешь в рам и использование фиксированной таблицы адресов функций, в которой будут указаны адреса со смещением, таким, что в табицу попадал адрес ее в рам, написать диспетчер, который будет прыгать по этой таблице и вызывать нужные функции, но это давольно заморочено.

Собственно думал заменить механизм инициализации __ramfunc, на собственный механизм распаковки.
Это вообще возможно?Или есть что-то лучше?


Цитата(meister @ Mar 20 2008, 21:46) *
У меня в векторах прерываний стоят бранчи на сектор обновляемой части прошивки, а оттуда - куда надо.


Дело в том, что я хотел внутрипрограммно устанавливать и снимать защиту кода. Для этого надо затирать и переписывать страницу вместе с векторами прерываний, если вдруг произойдет сбой и страница не запишется, все улетит, и придется лезть по COM порту и перезаливать прошивку. И еще минус сбоя, если сделать это умышлено, то по ISP можно вычитать оставшуюся прошивку приложения.

Остановился на полном закрытии загрузчика.

Нашел еще интересную ссылку про загрузчик.
http://caxapa.ru/105173.html?hilite=scmRTOS&todo=full

Только как в новом IAR 5.11 сделать копию векторов прерываний в область, раположенную не по адресу 0x00000000, а в 0x00003000?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vitaliy_ARM   Защита прошивки в LPC23xx/LPC24xx   Mar 20 2008, 15:30
|- - zltigo   Цитата(Vitaliy_ARM @ Mar 21 2008, 16:25) ...   Mar 21 2008, 15:44
|- - Vitaliy_ARM   Цитата(zltigo @ Mar 21 2008, 18:44) Похож...   Mar 21 2008, 22:20
|- - meister   Цитата(Vitaliy_ARM @ Mar 22 2008, 01:20) ...   Mar 21 2008, 22:42
||- - Vitaliy_ARM   Цитата(meister @ Mar 22 2008, 01:42) Можн...   Mar 22 2008, 11:15
||- - meister   Цитата(Vitaliy_ARM @ Mar 22 2008, 14:15) ...   Mar 22 2008, 11:28
|||- - Vitaliy_ARM   Цитата(meister @ Mar 22 2008, 14:28) Буде...   Mar 22 2008, 11:31
|||- - meister   Цитата(Vitaliy_ARM @ Mar 22 2008, 14:31) ...   Mar 22 2008, 11:35
|||- - Vitaliy_ARM   Цитата(meister @ Mar 22 2008, 14:35) Един...   Mar 22 2008, 11:42
|||- - meister   Цитата(Vitaliy_ARM @ Mar 22 2008, 14:42) ...   Mar 22 2008, 12:03
|||- - Vitaliy_ARM   Цитата(meister @ Mar 22 2008, 15:03) Вы п...   Mar 22 2008, 12:59
||- - zltigo   Цитата(Vitaliy_ARM @ Mar 22 2008, 14:15) ...   Mar 22 2008, 14:25
|- - zltigo   Цитата(Vitaliy_ARM @ Mar 22 2008, 01:20) ...   Mar 22 2008, 00:18
- - meister   Цитата(Vitaliy_ARM @ Mar 20 2008, 18:30) ...   Mar 20 2008, 18:46
- - Kirill Frolov   Цитата(meister @ Mar 20 2008, 21:46) У ме...   Mar 20 2008, 19:10
- - zltigo   Цитата(Kirill Frolov @ Mar 20 2008, 22:10...   Mar 20 2008, 20:49
- - Kirill Frolov   Цитата(zltigo @ Mar 20 2008, 23:49) Совер...   Mar 23 2008, 06:55
- - zltigo   Цитата(Kirill Frolov @ Mar 23 2008, 09:55...   Mar 23 2008, 08:02


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

 


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


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