|
Защита прошивки в LPC23xx/LPC24xx, написание специфического загрузчика |
|
|
|
 |
Ответов
|
Mar 21 2008, 13:25
|
Знающий
   
Группа: Свой
Сообщений: 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?
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Mar 21 2008, 15:44
|

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

|
Цитата(Vitaliy_ARM @ Mar 21 2008, 16:25)  Потом, когда загрузчик определит, что защита включена... Похоже не поняли - ЗАЩИТА ВКЛЮЧЕНА ВСЕГДА. И никаих танцев с бубнами, распаковок из FLASH в RAM просто не надо. Тем более, что это НЕ ЗАЩИТА, если есть моменты, когда сам загрузчик занимающийся расшифровкой можно считать  Цитата(Vitaliy_ARM @ Mar 21 2008, 16:25)  Только как в новом IAR 5.11 сделать копию векторов прерываний в область, раположенную не по адресу 0x00000000, а в 0x00003000? По здравому размышлению можно придти в выводу, что хотя контроллер это позволяет делать, делать этого в большинстве случаев абсолютно не нужно. Прочитайте предыдущие посты.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 21 2008, 22:20
|
Знающий
   
Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246

|
Цитата(zltigo @ Mar 21 2008, 18:44)  Похоже не поняли - ЗАЩИТА ВКЛЮЧЕНА ВСЕГДА. И никаих танцев с бубнами, распаковок из FLASH в RAM просто не надо. Тем более, что это НЕ ЗАЩИТА, если есть моменты, когда сам загрузчик занимающийся расшифровкой можно считать  Понял, но не до конца изложил идею. Всегда теперь разрешаю защиту. Ни для кого не секрет, что китайцы пилят процессоры. Как-то находил, что спилить авр стоит около 200 долларов. Для меня сейчас главное - это защитить часть функций загрузчика, такие как считывание некоторой области данных. Или вообще весь загрузчик распаковывать, если все ключи внутри верны. Допустим, ключем является вся область страницы флешь памяти. Пусть человек получил после спила китайскую прошивку. После ее зашития в нормальный процессор, загрузчик либо закрывает доступ к процессору (если в прошивке также установлен CRP), и разрешает доступ к функциям (к которым можно достучаться по определенному мной и шифрованному протоколу), в этом случае нужно ломать протокол. Либо нужно модифицировать начало флешь, чтобы записать туда программу, которая вычитывает всю прошивку, но в этом случае она вычитает просто какой-то мусор(зашифрофанную прошивку), а правильно расшифровать уже будет не возможно. Думаю этот способ по-лучше, чем просто поставить CRP.  , только проблеммный. Собственно для запуска прикладной программы используется переотображение векторов, поэтому про загрузчик ей вообще знать не нужно (как в ScmRtos Сергея Борща). Пока лучше не нашел способа, может подскажете, где еще можно посмотреть альтернативные варианты запуска прикладной программы? п.с. защита прикладной области пока не рассматривается
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|