Easyelectronics.ru

Электроника для всех
Текущее время: 28 янв 2020, 23:59

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

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

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

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


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

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


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

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


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

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


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

jump ...


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

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

В смысле?


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

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


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

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

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


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

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


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

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


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

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


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

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


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

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


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


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

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


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

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


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

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2503
А вариант наверное 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
Сообщения: 5780
Sergey_spb писал(а):
Интереснее кстати было бы обсудить именно анализ бинарника. Я пробовал открывать свой же бинарник в IDA, и как-то не очень получилось. Поскольку я знаю под какой конкретно МК и как я компилил, то соответственно я знаю с какого адреса лежит прошивка, где таблица прерываний, где точка входа. Кроме того, из ДШ на МК известны адреса периферии. Но вот указать это все IDA-е у меня не получилось.
А ведь есть еще стандартные функции, которые IDA может узнавать.
На хабре была статья как разбирали "носорога с FreeRTOS внутри". У них там так лихо все вышло :)


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


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

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


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

Зарегистрирован: 05 дек 2017, 18:17
Сообщения: 211
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
Сообщения: 2503
Sergey_spb, логично. Но в любом случае с передачей бута изначально вариантов нет. "Лазейка" подобная всегда останется. Только усложнять процедуру взлома, делая его просто невыгодным.


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

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

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

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


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

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


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


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


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

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

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


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

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


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


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

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


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

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 1840
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
Сообщения: 644
Откуда: Санкт-Петербург
Вот даже любопытно... кто-нибудь сам пытался дизассемблировать какой-нибудь бинарник от мк сложнее чем мигания лампочкой на авр ? Имеется в виду - реально на практике... или все только в теории ?

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

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


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

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

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

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


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


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


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

Сейчас этот форум просматривают: AlexTA, Dad_14, Google [Bot], NStorm


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

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

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