Easyelectronics.ru

Электроника для всех
Текущее время: 24 сен 2020, 05:41

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 110 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 14:50 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
MasterElectric писал(а):
Круто! А что в качестве радиоканала?

Пока работаю по блютус.
Радиомодуль стоит.
Опыт написания бутлоадера для работы с радиомодулем есть.
https://yadi.sk/i/E8xwMPTa3P7MAX


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 14:55 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 537
Откуда: Киев
Sergey_spb Она же будет зашифрована, при чем шифрация на сервере. А у J-Link все в dll, и в открытом виде было.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 14:56 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 537
Откуда: Киев
Есть смысл посмотреть в сторону nRF52?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 14:56 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
Sergey_spb писал(а):
На мой не профессиональный взгляд, если уважаемый автор опасается, что прошивку комерсы утянут, достаточно просто в виде бинарника ее распространять. Сильно сомневаюсь, что там какие-то сверх уникальные алгоритмы. А значит для комерсов будет дешевле заказать написание прошивки с нуля.


Можно просто найти код проверки ключа и обойти защиту, даже правкой ассемблерного кода (бинарика).

jump ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 14:59 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
MasterElectric писал(а):
Есть смысл посмотреть в сторону nRF52?

В смысле?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:02 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 537
Откуда: Киев
Тебе так будет удобнее, раз все по блютузу. И нет промежуточного звена (после блютуза UART 100%). МК неплохие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:05 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2868
Pingvin писал(а):
Прошивка считывает UID, шифрует его ключом А.
Пользователь отправляет мне этот зашифрованный UID либо текстом, либо в бинарном виде.
Я дешифрую ключом А - получаю UID.
Шифрую его другим ключом - ключом Б.
Зашифрованный ключом Б UID - это и есть лицензионный ключ.
Его пользователь вводит с консоли или с помощью утилиты загружает бинарик.
При старте прошивка дешифрует лицензионный ключ и сравнивает его с UID.
Если не совпадает - облом.

А откуда ключ Б на устройстве? Тоже в буте изначально передается заказчику? Тогда смысл во всём этом?
Если уж делать активацию устройства, прочитайте про PKI. Вам просто сертификат можно вшивать в бут, а приватный ключ держать у себя. В этом случае вы можете подписать и отправить любые данные устройству, которое оно с помощью своего ключа сможет расшифровать и проверить подлинность. Только вот никто не защитит от подмены сертификата в буте на свой опять же при реверсе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:05 
Старожил

Зарегистрирован: 05 дек 2017, 18:17
Сообщения: 231
MasterElectric писал(а):
Sergey_spb Она же будет зашифрована, при чем шифрация на сервере. А у J-Link все в dll, и в открытом виде было.


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

Интереснее кстати было бы обсудить именно анализ бинарника. Я пробовал открывать свой же бинарник в IDA, и как-то не очень получилось. Поскольку я знаю под какой конкретно МК и как я компилил, то соответственно я знаю с какого адреса лежит прошивка, где таблица прерываний, где точка входа. Кроме того, из ДШ на МК известны адреса периферии. Но вот указать это все IDA-е у меня не получилось.
А ведь есть еще стандартные функции, которые IDA может узнавать.
На хабре была статья как разбирали "носорога с FreeRTOS внутри". У них там так лихо все вышло :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:09 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2868
Если б устройство к инету можно было бы подключать для активаци... можно было бы Diffie-Hellman использовать для вполне себе безопасной генерации общего секретного ключа, который перехватить не смогут даже дампая трафик обмена.
Теоретически можно подобный обмен организовать в ручном режиме. Но дюже муторно имхо заказчика на это напрягать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:13 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 537
Откуда: Киев
Правильно поэтому не надо хранить в буте алгоритм шифрования. А еще лучше пусть будет, а использовать другой))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:18 
Старожил

Зарегистрирован: 05 дек 2017, 18:17
Сообщения: 231
MasterElectric писал(а):
Правильно поэтому не надо хранить в буте алгоритм шифрования. А еще лучше пусть будет, а использовать другой))


Давайте еще раз. В буте нет шифрования. Тогда где оно? В каком месте прошивка расшифровывается?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:20 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 537
Откуда: Киев
Реверс это к Dosikus. В целом да опыт будет хороший.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:24 
Старожил

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 537
Откуда: Киев
Из ОЗУ и прилетит от прошивальщика и еще для прикола можно с 10 вариаций написать и подсовывать каждый раз разное. Во время обновления отладка работать не будет. А бут можно загадить пустышками похожими на обработку пакетов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:24 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2868
А вариант наверное DH использовать. Делается универсальный бут, с пустыми параметрами. Заказчик заливает. Бут при первом запуске локает от чтения всё. Генерит g, p, a + A, сохраняет их в закрытой странице. g,p,A передает пользователю в виде какого одного "запроса активации". Можно UID также еще передавать просто для "инвентаризации". На стороне разраба для данного экземпляра выбирается уникальный b и на основе переданных от клиента g,p,A генерится B, которое отдается назад клиенту. Клиент заводит число B в МК, который внутри получает K = B^a mod p и сохраняет его. С двух сторон есть общий секретный ключ. Теперь для этого экземпляра ус-ва можно генерировать индивидуально шифрованные прошивки. Ключик шифрования был записан во флэшку МК уже после лока бутом, в открытом виде не передавался.

PS: Конечно тут есть недостаток обычного DH - он не устойчив к MitM атаке. Если "заказчик" начнет подменять значения с ус-ва и передаваемые ему обратно, можно получить промежуточный ключ. Но это заказчик схему должен для начала понять и разобраться. И еще не спалиться выходя за пределы алгоритма. Что уже сильно снижает вероятность.


Последний раз редактировалось NStorm 31 окт 2019, 15:29, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 15:28 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5883
Sergey_spb писал(а):
Интереснее кстати было бы обсудить именно анализ бинарника. Я пробовал открывать свой же бинарник в IDA, и как-то не очень получилось. Поскольку я знаю под какой конкретно МК и как я компилил, то соответственно я знаю с какого адреса лежит прошивка, где таблица прерываний, где точка входа. Кроме того, из ДШ на МК известны адреса периферии. Но вот указать это все IDA-е у меня не получилось.
А ведь есть еще стандартные функции, которые IDA может узнавать.
На хабре была статья как разбирали "носорога с FreeRTOS внутри". У них там так лихо все вышло :)


Гы, ты даже не представляешь как это интересно ...
А entry_point можно даже в хекс редакторе ручками вычислить...
"стандартные функции" - простыни SPL и калокуба палятся на раз..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 16:57 
Старожил

Зарегистрирован: 28 янв 2015, 16:31
Сообщения: 248
чем вам повредит открытые исходники бутлоадера ? Они должны быть открыты если там не ксор используется )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 18:46 
Старожил

Зарегистрирован: 05 дек 2017, 18:17
Сообщения: 231
NStorm писал(а):
А вариант наверное DH использовать. Делается универсальный бут, с пустыми параметрами. Заказчик заливает. Бут при первом запуске локает от чтения всё. Генерит g, p, a + A, сохраняет их в закрытой странице. g,p,A передает пользователю в виде какого одного "запроса активации". Можно UID также еще передавать просто для "инвентаризации". На стороне разраба для данного экземпляра выбирается уникальный b и на основе переданных от клиента g,p,A генерится B, которое отдается назад клиенту. Клиент заводит число B в МК, который внутри получает K = B^a mod p и сохраняет его. С двух сторон есть общий секретный ключ. Теперь для этого экземпляра ус-ва можно генерировать индивидуально шифрованные прошивки. Ключик шифрования был записан во флэшку МК уже после лока бутом, в открытом виде не передавался.

PS: Конечно тут есть недостаток обычного DH - он не устойчив к MitM атаке. Если "заказчик" начнет подменять значения с ус-ва и передаваемые ему обратно, можно получить промежуточный ключ. Но это заказчик схему должен для начала понять и разобраться. И еще не спалиться выходя за пределы алгоритма. Что уже сильно снижает вероятность.


В этом случае, "заказчик" патчит бинарник бута, чтобы либо не устанавливалась защита от чтения, либо просто при записи прошивки она сливалась куда-нибудь, скажем в uart. По большому счету, не надо даже с шифрованием разбираться. Найти по адресам регистров место, где запись во флэш происходит, и туда сделать патч.
Если не ошибаюсь, примерно так бут от st-lilnk-а получили. Только там человек не патчил бут, а подсунул прошивальщику свою прошивку, которая и вычитала весь флеш.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 18:52 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2868
Sergey_spb, логично. Но в любом случае с передачей бута изначально вариантов нет. "Лазейка" подобная всегда останется. Только усложнять процедуру взлома, делая его просто невыгодным.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 19:20 
Старожил

Зарегистрирован: 28 янв 2015, 16:31
Сообщения: 248
Бизнес кейс невнятный, излишне усложняете задачу...
1. Зачем самосборщику вливать проприетарную прошивку ? -> Он же самосборщик, ему нужен опенсорс ;)))
2. Хорошо может быть купленно устройство с уже припаянным и залоченным контроллером, остальное допаять типа самому: нафига мне как пользователю эта возня, а вдруг не заработает ? сЫкономить 500р на китайской сборке рассыпухи смдшной и сломать глаза неделей пайки, нанена прокатчику эта забота ? ;P

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

Нету здесь места бутлоадеру шиФровальщику отдаваемому в народ ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 31 окт 2019, 19:43 
Старожил
Аватара пользователя

Зарегистрирован: 26 окт 2013, 07:58
Сообщения: 2587
Sergey_spb писал(а):
MasterElectric писал(а):
Правильно поэтому не надо хранить в буте алгоритм шифрования. А еще лучше пусть будет, а использовать другой))


Давайте еще раз. В буте нет шифрования. Тогда где оно? В каком месте прошивка расшифровывается?


Как это - не будет?
Именно в буте будет дешифровка бинарика производиться.
Для себя я все уже решил.
Бута в открытом доступе не будет.
Камень будет залочен от считывания.
Самосборшики будут брать прошитые активированные и залоченные контроллеры у меня.
Самосборщику исходники никуда не упёрлись.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 01 ноя 2019, 00:29 
Старожил

Зарегистрирован: 05 дек 2017, 18:17
Сообщения: 231
Миха писал(а):
Бизнес кейс невнятный, излишне усложняете задачу...
Итого
- печатку самосборщики будут покупать и лить туда вариант с гитхаба, Каустик какой-нибудь.
- коммерсы будут покупать готовые полностью собранные платы, им возня с активацией ненужна,
а только официальные обновления которые не окирпичат устройство.

Нету здесь места бутлоадеру шиФровальщику отдаваемому в народ ;)


И каким чудесным образом распространять обновление? В открытом виде?

Pingvin писал(а):
Как это - не будет?
Именно в буте будет дешифровка бинарика производиться.


Это был риторический наводящий вопрос для MasterElectric. Я с Вами согласен, что это наиболее надежный вариант.
Я ничерта не смыслю в лазертаге, но Ваш проект выглядит здорово. Удачи Вам с ним.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 01 ноя 2019, 00:34 
Старожил

Зарегистрирован: 05 дек 2017, 18:17
Сообщения: 231
И все таки :)
Давайте вернемся к реверсу :)
Есть ли какие-то плагины к IDA, чтобы загрузить на нужный МК скажем содержимое .svd и допустим стартапа (в части таблицы векторов)?
Я видел как-то видео, как человек руками регионы памяти обозначал, но это как-то не продуктивно. У IDA же есть система плагинов, питон там вроде внутри, неужели нет готовых решений?
Аналогично с сингатурами функций. Всякие memcpy и прочие printf должны по идее распознаваться, если сингатуры есть.
dosikus_2 выше вон говорит, что и hal распознается. Я только не понял, это IDA по сингатурам, или сам dosikus_2 опытным глазом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 01 ноя 2019, 01:15 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2062
Sergey_spb писал(а):
И все таки :)
Давайте вернемся к реверсу :)
Есть ли какие-то плагины к IDA, чтобы загрузить на нужный МК скажем содержимое .svd и допустим стартапа (в части таблицы векторов)?
Я видел как-то видео, как человек руками регионы памяти обозначал, но это как-то не продуктивно. У IDA же есть система плагинов, питон там вроде внутри, неужели нет готовых решений?
Аналогично с сингатурами функций. Всякие memcpy и прочие printf должны по идее распознаваться, если сингатуры есть.
dosikus_2 выше вон говорит, что и hal распознается. Я только не понял, это IDA по сингатурам, или сам dosikus_2 опытным глазом?

Да всё это с полпинка делается. Здравый смысл и знание архитектуры. Процессор не важен. Кто ломал Word 6.0 - тому эта хрень - как семечки.
Пример: http://akb77.com/g/stm32/fix-jlink-ob-09262016/
Так это и делается. Сломать можно всё.
А в Word 6.0 была совсем другая история. Ребята из MS сильно постарались. Многие местные гуру программирования (сарказм) даже не догадываются о способах такой защиты кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 01 ноя 2019, 03:50 
Старожил

Зарегистрирован: 02 ноя 2015, 19:21
Сообщения: 682
Откуда: Санкт-Петербург
Вот даже любопытно... кто-нибудь сам пытался дизассемблировать какой-нибудь бинарник от мк сложнее чем мигания лампочкой на авр ? Имеется в виду - реально на практике... или все только в теории ?

Pingvin, бут с шифром на мк(по номеру чипа) и защитой от записи. прошивка с шифром, пусть даже простым . и все.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс инженеринг. Насколько легко получить исходный код?
СообщениеДобавлено: 01 ноя 2019, 04:07 
Старожил

Зарегистрирован: 02 ноя 2015, 19:21
Сообщения: 682
Откуда: Санкт-Петербург
Sergey_spb писал(а):
Есть ли какие-то плагины к IDA, чтобы загрузить на нужный МК скажем содержимое .svd и допустим стартапа (в части таблицы векторов)?

вектора прерываний вообще не проблема найти.
Sergey_spb писал(а):
Аналогично с сингатурами функций. Всякие memcpy и прочие printf должны по идее распознаваться, если сингатуры есть.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 110 ]  На страницу Пред.  1, 2, 3, 4, 5  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB