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

 
 
19 страниц V  « < 6 7 8 9 10 > »   
Closed TopicStart new topic
> Защита секция кода во FLASH в ATmega, Как защититься от несанкционированного выполнения кода
singlskv
сообщение Feb 14 2008, 20:41
Сообщение #106


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Дон Амброзио @ Feb 14 2008, 23:21) *
Ага..Щаззз....А Вы потом этот код в свой проектик или в свою кандидатскую... А мне , как изобретателю кушиш с маслом biggrin.gif
Ну что, наша амброзия похоже сдулась окончательно ?
Вы эта.., всерьез думаете что Ваш код мне за чем то нужен ? :07
Цитата
Да я бы сделал и это, но мне сейчас нЕкогда..Работы много
Дык Вы уже определитесь со своей ориентацией...
Ну или не постите глупости....
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Feb 14 2008, 21:17
Сообщение #107


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(singlskv @ Feb 14 2008, 23:41) *
Ну что, наша амброзия похоже сдулась окончательно ?
Вы эта.., всерьез думаете что Ваш код мне за чем то нужен ? :07
Дык Вы уже определитесь со своей ориентацией...
Ну или не постите глупости....

Давайте всё же эмоции держать при себе. Я не обязан тут сидеть целыми днями и всем разжёвывать как надо проектировать программы для обнаружения случайных джампов. По-моему я и так достаточно уже написал (перечитайте внимательно ещё раз всю тему и 90% вопросов у Вас отпадут). Также как и остальных я не заставляю тут отписываться.
А потом, без обид, есть же вещи, как ноу-хау и интеллектуальная собственность, и которые не предназначены для всеобщего пользования. Тем более что некоторые идеи я Вам уже выложил, а всё выкладывать я не обязан.
"Мудрец по фантику от конфеты сможет понять устройство вселенной, а ..."(с)


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 14 2008, 21:44
Сообщение #108


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Дон Амброзио @ Feb 15 2008, 00:17) *
Давайте всё же эмоции держать при себе.
А при чем здесь эмоции ?
Вы автор топика, и я Вам задал кучу вопросов, и ни на один из них вы толком не ответили...



Ну дык, как?
Инструкции AVR мы уже изучили ?
примеры применения будут ?
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Feb 15 2008, 05:24
Сообщение #109


Знающий
****

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



to Дон Амброзио:
Почитал ваши предложения. На мой взгляд, все они крайне запутанны, сложны, плохо расширяемы, непереносимы между процессорами, требуют полного знания ассемблера и "неподключаемы" к сторонним библиотекам. Т.е., если у вас есть прошивка, которая тиражируется на миллионы изделий, и относительно "проста", то в ней все это можно использовать. Однако если тираж небольшой, то все это крайне затруднительно...
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 15 2008, 10:37
Сообщение #110


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Я Дон Амброзио за формат таблиц cpi Rd,K благодарен. Поэтому вам, 'singlskv', за него отвечу. Хотя 'Дон Амброзио' уж вам и так всё подробно расписал.
Цитата(singlskv @ Feb 14 2008, 23:17) *
давайте реальный пример использования, пусть будеть например модбас и соответственно рассчет
CRC16 через таблицы...

Вот как я бы написал (специально пишу не оптимально, а просто чтобы работало - оптимальный код он денег стоит):
Цитата
in ZL,UDR ; прочли данные из USART
st X+,ZL ; сохранили в ОЗУ
; Дальше собственно CRC считаем.
; R3, R2 - CRC аккумулятор, RG00 - любой регистр =0
eor ZL,R3 ; проксорим данные с.б. старого CRC
add ZL,ZL ; *2 (потом ещё на 2 итого на *4)
ldi ZH,high(T_CRC) ; таблица CRC (c 0bXXXXXXX000000000)
adc ZH,RG00 ; прибавим C (перенос)
add ZL,ZL ; *2 (переходим к словам)
rol ZH ; Z - ук-ль на соотв. слово
lpm R3,Z ; это старший байт т.к. таблица переставлена
adiw ZL,2 ; передвинем ук-ль на ст. байт
eor R3,R2 ; получили ст. байт нового CRC
lpm R2,Z ; м.б. нового CRC просто из таблицы
; итого R3,R2 обновлённое CRC

.org 0x400
T_CRC: ; У ModBuss какой-то паршивый производящий многочлен был. Типа 0x1C0C1- но не уверен.
; Если что подправьте. Но именно 0x1C0C1, а не 0xC0C1. Насчёт 1 это я не ошибся!
.dw 0x3000, 0x3000, 0x30C1, 0x30C0
...
rjmp Crash

Если кто это применять будет. При получении зарплаты прошу меня не забывать! (шутка)
С CRC всё элементарно ведь. Сам-то вы, 'singlskv', рассчёт CRC из аппноутов берёте что-ли? Или вы хитрее гораздо. Типа шпион промышленный? Секреты у всех выведываете...

Цитата(singlskv @ Feb 15 2008, 00:44) *
Вы автор топика, и я Вам задал кучу вопросов, и ни на один из них вы толком не ответили...

Один д. может столько вопросов задать, что 100 умных не ответят.

Только без обид! 'singlskv' - заранее прощения прошу.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 15 2008, 11:03
Сообщение #111


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(Непомнящий Евгений @ Feb 15 2008, 07:24) *
to Дон Амброзио:
Почитал ваши предложения. На мой взгляд, все они крайне запутанны, сложны, плохо расширяемы, непереносимы между процессорами, требуют полного знания ассемблера и "неподключаемы" к сторонним библиотекам. Т.е., если у вас есть прошивка, которая тиражируется на миллионы изделий, и относительно "проста", то в ней все это можно использовать. Однако если тираж небольшой, то все это крайне затруднительно...


Я вам больше скажу. Все эти извращения можно применять. Возможно, в каком-то очень маловероятном случае, они даже спасут. Но! Такие способы требуют написания проекта исключительно на ассемблере, можно конечно, кое-что и на C сделать, но тут будет "программа на ассемблере, написаная на C" (по аналогии с "я вам программу на Фортране на любом языке напишу"). И, для большого и сложного проекта, такая реализация будет скорее всего глючная сама по себе, из-за ошибок в алгоритмах и прочем. Исключительно из-за сложности реализации больших проектов на ассемблере. Там что, по моему мнению, все, о чем тут говорили, представляет исключительно теоретический интерес. Хотя, на диссер не тянет, все придумано до нас smile.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 15 2008, 11:20
Сообщение #112


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(defunct @ Feb 14 2008, 18:18) *
Это вариант. Только я считаю, что это лишнее..

В принципе могу с вами и согласится. Т.к. сам всегда CRC32 FLASH в основном цикле считаю (по слову за раз - см. мои предыдущие посты). Но ни разу не сработало.
Цитата(defunct @ Feb 14 2008, 18:18) *
Ну просто не будет программа работать нормально если часть флеша слетит по причине прыжка на erase sequence в бутлоадере, не вернемся мы оттуда в ОС... Следовательно тут как раз WDT помощник.
Ну а если предположить, что мы все-таки вернулись после erase sequence в ОС и продетектили нарушение флеш в основной программе, что дальше? Выход ведь тот же самый - сброс и запуск бутлоадера.

Насчёт защиты от несанкционированного запуска бутлоадера. Я бы предложил написать так:
Цитата
; до последней проверки
ldi R17,Tag ; что такое Tag думаю объяснять не надо
; начинается последняя проверка. В ней R17 не используется.
...
; последняя проверка закончена. Дальше пошли аварийно опасные команды.
....
; дальше пример от 'Дон Амброзио'. Чуть переделанный
OUT SPMCR , R16
; ---------------
cpi R17 , Tag
brne CRASH
;-----------------
SPM

Если предположить, что аварийно опасных команд 8 шт. А у R17, в остальных частях программы, значения от 0 до FF равновероятны. То вероятность "не попорчивания" FLASH при случайном прыжке для AVR с 128 кБайт памяти будет: (1-(8/65536)/256)*100%=99.9999523%. Что существенно выше, чем надёжность CRC16 с производящим многочленом 0x11021, которая составляет 99.9984% для пакетов данных длиной более 17 бит (Р.Л. Хаммел "Последовательная передача данных").
Цитата(defunct @ Feb 14 2008, 18:18) *
У мелких АРМов (конкурентов мег) есть FLASH. Хотите размещайте во флеш, не хотите - копируйте и запускайте в RAM.

Если код во флеш разместить, то он и выполнятся медленно будет. Примерно с той-же скоростью, как у AVR. А у мелких АРМов разве защита кода есть? Я считал, что нет. Но м.б. у каких-то и есть - просветите.
Go to the top of the page
 
+Quote Post
tyro
сообщение Feb 15 2008, 11:20
Сообщение #113


Любитель Кошек
*****

Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873



Цитата(Rst7 @ Feb 15 2008, 14:03) *
Я вам больше скажу. Все эти извращения можно применять. smile.gif

Это Вы говорите как специалист по части применения поледних?(шутка) smile.gif
Было бы интересней, если бы Вы привели код или пути решения поставленной задачи [deleted]

Сообщение отредактировал IgorKossak - Feb 15 2008, 11:43


--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 15 2008, 11:38
Сообщение #114


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Это Вы говорите как специалист по части применения поледних?(шутка)


Конечно. (не шутка). Если в меру, можно и поизвращаться. Иногда результаты хорошие получаются.

Цитата
Было бы интересней, если бы Вы привели код или пути решения поставленной задачи,


Задача сия точного решения не имеет. Можно только итерациями бесконечно приближаться, асимптотически, к прямой, которая есть "надежность 100%". Хотя полсотни резисторов, рассыпаные по плате имеют вероятность выхода больше, чем камень wink.gif Рассмотрите необходимость решения данной задачи с точки зрения расчета надежности.

[deleted]

Сообщение отредактировал IgorKossak - Feb 15 2008, 11:44


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Feb 15 2008, 13:52
Сообщение #115


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



По теме ещё будут сообщения?
Или давайте закроем тему.

Модератор.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 15 2008, 14:07
Сообщение #116


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(galjoen @ Feb 15 2008, 13:37) *
С CRC всё элементарно ведь.

Кстати насчёт CRC. Если, например, иногда нужно бывает 1 слово в защищённом CRC блоке ОЗУ изменить. Я CRC всего блока не пересчитаваю - это долго. Я просто ещё одно слово завожу рядом. И его одновременно меняю, так чтобы CRC всего блока не изменился. Это хакерский приём конечно. И кусок программы которая так делает я принципиально демонстрировать не буду. Ток кто в CRC разбирается - сам запросто такое напишет. А тому, кто не разбирается - такое лучше и не знать.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 15 2008, 14:11
Сообщение #117


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Извините конечно bb-offtopic.gif но никогда не могу пройти мимо подобных заявлений -
"Ток кто в CRC разбирается - сам запросто такое напишет. А тому, кто не разбирается - такое лучше и не знать".
2 galjoen - НУ чтож гордитесь! Вы гениальный!
Не думаете , что если все так будут делать - но всё мы в конечном итоге деградируем ?
Go to the top of the page
 
+Quote Post
_Sam_
сообщение Feb 15 2008, 14:14
Сообщение #118


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Можна ещё один маленький уточняющий вопрос?

Цитата
Здесь тема только про "ловлю" случайных джампов

А какова вероятность того, что помеха собъёт только PC??? Видимо PC из особого теста леплен.
А если сбивается не только PC(т.е. возможен не только случайный джамп) в чём смысл темы?
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 15 2008, 14:39
Сообщение #119


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Kuzmi4 @ Feb 15 2008, 17:11) *
Извините конечно bb-offtopic.gif но никогда не могу пройти мимо подобных заявлений -
"Ток кто в CRC разбирается - сам запросто такое напишет. А тому, кто не разбирается - такое лучше и не знать".
2 galjoen - НУ чтож гордитесь! Вы гениальный!
Не думаете , что если все так будут делать - но всё мы в конечном итоге деградируем ?

Прошу прощения если меня не так поняли. Не хотел никого обидеть. Я имел в виду, что хакеров-крекеров и так хватает. Это они в программах (для компьютера) таким способом защиту кода с помощью CRC ломают. И мою защиту так сломали (когда-то давным-давно когда я еще молодой-неопытный был). И помогать им в этом я не хочу. В смысле тем, которые этого не знают (пока). А по моему мнению, хакеров со знаниями теории - мало.
Ещё раз простите - в следующий раз при написании поста буду осмотрительней.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 15 2008, 15:30
Сообщение #120


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Мда-с...

Как защититься от случайного выполнения записи в boot-loader.
Это не то,что приснопамятное засорение EEprom - тут у нас по питанию все ОК.
1. Заводим в основной программе себе нулевой регистр и не трогаем его ни при каких обстоятельствах. Только clr NullReg после сброса.
2. Кусок кода по записи в SPMCR не имеет точки входа.
Код
Fl_write_by_boot:
        COM NullReg; assuming ==0 just before this cmd
        RET; pre-initialized stack content HERE
FL_write_entry:
        LDI  R16,Spmcr_value; abstract command
        AND R16,NullReg
        OUT SPMCR,R16
        SPM
        CLR NullReg


3. Как безопасно запихнуть в стек адрес входа ?
Вопрос открытый, хотя я загружал с порта в теле команды для записи страницы. Некрасиво, но луше не придумал.

Сообщение отредактировал _Pasha - Feb 15 2008, 15:32
Go to the top of the page
 
+Quote Post

19 страниц V  « < 6 7 8 9 10 > » 
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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