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

 
 
> Защита прошивки в 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
zltigo
сообщение Mar 21 2008, 15:44
Сообщение #4


Гуру
******

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



Цитата(Vitaliy_ARM @ Mar 21 2008, 16:25) *
Потом, когда
загрузчик определит, что защита включена...

Похоже не поняли - ЗАЩИТА ВКЛЮЧЕНА ВСЕГДА. И никаих танцев с бубнами, распаковок из FLASH в RAM просто не надо. Тем более, что это НЕ ЗАЩИТА, если есть моменты, когда сам загрузчик занимающийся расшифровкой можно считать smile.gif


Цитата(Vitaliy_ARM @ Mar 21 2008, 16:25) *
Только как в новом IAR 5.11 сделать копию векторов прерываний в область, раположенную не по адресу 0x00000000, а в 0x00003000?

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


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


Знающий
****

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



Цитата(zltigo @ Mar 21 2008, 18:44) *
Похоже не поняли - ЗАЩИТА ВКЛЮЧЕНА ВСЕГДА. И никаих танцев с бубнами, распаковок из FLASH в RAM просто не надо. Тем более, что это НЕ ЗАЩИТА, если есть моменты, когда сам загрузчик занимающийся расшифровкой можно считать smile.gif


Понял, но не до конца изложил идею. Всегда теперь разрешаю защиту. Ни для кого не секрет, что китайцы пилят процессоры. Как-то находил, что спилить авр стоит около 200 долларов.
Для меня сейчас главное - это защитить часть функций загрузчика, такие как считывание некоторой области данных. Или вообще весь загрузчик распаковывать, если все ключи внутри верны.
Допустим, ключем является вся область страницы флешь памяти. Пусть человек получил после спила китайскую прошивку. После ее зашития в нормальный процессор, загрузчик либо закрывает доступ к процессору (если в прошивке также установлен CRP), и разрешает доступ к функциям (к которым можно достучаться по определенному мной и шифрованному протоколу), в этом случае нужно ломать протокол. Либо нужно модифицировать начало флешь, чтобы записать туда программу, которая вычитывает всю прошивку, но в этом случае она вычитает просто какой-то мусор(зашифрофанную прошивку), а правильно расшифровать уже будет не возможно. Думаю этот способ по-лучше, чем просто поставить CRP. smile.gif , только проблеммный.

Собственно для запуска прикладной программы используется переотображение векторов, поэтому про загрузчик ей вообще знать не нужно (как в ScmRtos Сергея Борща).
Пока лучше не нашел способа, может подскажете, где еще можно посмотреть альтернативные варианты запуска прикладной программы?

п.с. защита прикладной области пока не рассматривается


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


Гуру
******

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



Цитата(Vitaliy_ARM @ Mar 22 2008, 01:20) *
..поэтому про загрузчик ей вообще знать не нужно

Ага, "не нужно" smile.gif может она у Вас и работать сможет в пороизвольном месте Flash? Нет? Тогда она уже обязана знать, что работает в области не занятой загрузчиком и соответственно знать о существовании загрузчика. В остальном тоже сполшные заморочки без всякой надобности. Почитайте пост meister
для просветления.


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

Сообщений в этой теме
- Vitaliy_ARM   Защита прошивки в LPC23xx/LPC24xx   Mar 20 2008, 15:30
|- - 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
- - 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 - 08:56
Рейтинг@Mail.ru


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