MX_Master 1 9 августа, 2021 Опубликовано 9 августа, 2021 · Жалоба Пишу новые прошивки для уже существующих устройств. Юзеры сами могут заливать бинарники в имеющееся у них устройства (обычным китайским STLINK'ом). Но хочется сделать свою работу хотя б чуток оплачиваемой (хотя б от 200 до 1000р с носа в зависимости от сложности ПО и поддержки). Однако.. не знаю какой способ защиты от копирования выбрать для открытого бинарника. Пока понятно только одно - у юзера будет простой способ ввести какой-то ключ, и этот ключ запишется куда в свободное место флэша STM32. А вот, что делать дальше и какие проверки проводить непонятно. Ибо открытый бинарник всегда можно дизассемблировать. В крайнем случае, можно править сам бинарник без пересборки. Вот сижу чешу репу.. Если кто подскажет куда копать и как лучше к этому делу подступиться, буду благодарен Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 9 августа, 2021 Опубликовано 9 августа, 2021 · Жалоба 4 минуты назад, MX_Master сказал: Вот сижу чешу репу.. Если кто подскажет куда копать и как лучше к этому делу подступиться, буду благодарен Давно аналогичной проблемой озадачен. Если юзеры не будут ломать прошивку, то самый простой и удобный способ - генерация какой-нить контрольной суммы с ID-чипа и какой-то иной информацией. Т.е. юзеры дают вам значение функции от ID-чипа (seed=f1(ID)). Вы в ответ передаете другое значение (key=f2(seed)). Юзеры используют key для инициализации устройства. Второй вариант - шить секретный загрузчик. Тут все просто, понятно, надежно, но нужно физически контактировать с чипом или изделием. Третий вариант - некое аппаратное устройство, которое проинициализирует изделие. В этом устройстве вами будет заложено N штук лицензий с возможностью пополнения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 9 августа, 2021 Опубликовано 9 августа, 2021 · Жалоба 49 minutes ago, MX_Master said: Юзеры сами могут заливать бинарники в имеющееся у них устройства (обычным китайским STLINK'ом) Понимаю, что Казань уже наша.. но всё же. Почему такой способ выбрали? Без загрузчика, без всего. Даёте голый бинарь) С другой стороны, кому нужно что-то ломать, на это же нужно тратить время. Защититься от копирования можно привязкой к ID микроконтроллера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 9 августа, 2021 Опубликовано 9 августа, 2021 · Жалоба Ломать прошивку экономически нецелесообразно! Дешевле с нуля написать код!!! Единственное исключение - какой-нибудь мегахитрый алгоритм или огороженная система коммуникации. Но и здесь не факт, что дешевле будет дизассемблировать прошивку и в этом ужасе ковыряться! И да, я считаю хамством брать деньги за апгрейженную версию прошивки!!! Если вы хотите заработать на существующих юзерах, берите с них деньги за реализацию фичриквестов конкретного юзера (и не факт, что эти фичи войдут в мейнлайн). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MX_Master 1 9 августа, 2021 Опубликовано 9 августа, 2021 · Жалоба Понимаю, что первоначальный физический доступ и собственный загрузчик решают задачу чуть ли не на 100%. Вариант собственного устройства у меня уже намечен. Но мулька как раз в том, чтоб не перепродавать пользователям перепрошитые устройства другого производителя. Пользователь должен сам решать вопрос о замене ПО своего устройства. Ну, типа, как в настольных реалиях - выбор ОС для своего ПК. За апгрейды денег мне не надо. А вот за первую установку полностью нового софта - хотелось бы маленько брать. Привязка к ID чипа - это самое очевидное. Именно так и надо делать. Но самое неочевидное, как этот механизм привязки к чипу спрятать в открытом бинарнике? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smart_pic 7 9 августа, 2021 Опубликовано 9 августа, 2021 · Жалоба 3 hours ago, Eddy_Em said: И да, я считаю хамством брать деньги за апгрейженную версию прошивки!!! Если вы хотите заработать на существующих юзерах, берите с них деньги за реализацию фичриквестов конкретного юзера (и не факт, что эти фичи войдут в мейнлайн). Так и делаем на серийных изделиях , все доступно на сайте , все обновления и старые архивы прошивок. Юзеры скачивают и обновляют сами. Пользователи иногда просят добавить определенный функционал, мы делаем и потом это доступно в новых прошивках всем желающим. Берем, если юзеру нужно что то свое , кастомное и только ему нужное. Иногда это входит в стоимость пусконаладки оборудования. 14 minutes ago, MX_Master said: Привязка к ID чипа - это самое очевидное. Именно так и надо делать. Но самое неочевидное, как этот механизм привязки к чипу спрятать в открытом бинарнике? Искать проверку совпадения ID в бинарнике - не благодарное дело. Кому надо - наверное быстрее свой код напишут на ваше железо. Ни разу не защищал код от заказчиков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 9 августа, 2021 Опубликовано 9 августа, 2021 · Жалоба 38 minutes ago, MX_Master said: За апгрейды денег мне не надо. А вот за первую установку полностью нового софта - хотелось бы маленько брать. Хочется взять, и поделить на нуль! Чем же апгрейд отличается от "полностью нового софта" в случае железяки? Это - железяка, а не компьютер. Для нее нет понятия "полностью новый софт". Просто апгрейды с разной степенью реализации фич и устранения багов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 57 9 августа, 2021 Опубликовано 9 августа, 2021 (изменено) · Жалоба 2 часа назад, Eddy_Em сказал: Хочется взять, и поделить на нуль! Вообще-то программирование - это работа, на которую уходят время и силы, и если программист работает над серьезными задачами, а не игрушками для гитхаба, то имеет полное право получать за это вознаграждение... 2 часа назад, Eddy_Em сказал: Это - железяка, а не компьютер. И что? Для "железки" программы пишутся сами, в отличие от компов? Изменено 9 августа, 2021 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба 7 hours ago, MX_Master said: Привязка к ID чипа - это самое очевидное. Именно так и надо делать. Но самое неочевидное, как этот механизм привязки к чипу спрятать в открытом бинарнике? Вспоминается полиморфный код вирусов во времена доса. Почитайте. Я уже не помню эту тему. Но суть в том, что Вы код верификации ID-микроконтроллера имеете в прошивке в неком зашифрованном виде (ну хотя бы "отксоренном" (xor)). Затем, расшифровываете его и загружаете в ОЗУ. Там в ОЗУ выполняете, и по результатам проверки запускаете прошивки или лочите её. Я думаю, что пользователь замучается всё это искать, и просто не будет тратить своё время. Можно только ID "отксорить". Его уже в чистом виде не будет в бинарнике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MX_Master 1 10 августа, 2021 Опубликовано 10 августа, 2021 (изменено) · Жалоба Спасибо всем за советы. Из обсуждения я подметил, что полностью открытым бинарник быть не обязан. Частично открытой (но хитрой) частью, надо бы сделать загрузчик. Он должен проверять серийники, править и проверять регистры защиты флэша, и уметь расшифровывать остальной функционал, в котором тоже могут быть проверки серийников и регистров защиты. Ещё бы, по-хорошему, надо накинуть в разных местах проверки CRC32 важных мест бинарника. Наверное, этого будет достаточно, как думаете? Изменено 10 августа, 2021 пользователем MX_Master Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба 1 hour ago, MX_Master said: Ещё бы, по-хорошему, надо накинуть в разных местах проверки CRC32 важных мест бинарника Зачем в разных местах? CRC32 на весь бинарник недостаточно? 1 hour ago, MX_Master said: Наверное, этого будет достаточно, как думаете? Знать бы, что Вы за устройства делаете, какова их цена и какой спрос. Если Вы защищаете детскую говорящую игрушку, то достаточно. Можно вообще не защищать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
destroit 9 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба 2 часа назад, haker_fox сказал: Знать бы, что Вы за устройства делаете https://www.cnc-club.ru/forum/viewtopic.php?f=41&t=16788&view=unread#unread Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба В этой сфере большая вероятность, что будут ломать прошивку. Китайцы "с Алиэкспресса" в том числе. PS. Есть три вещи, на которые можно смотреть вечно: вода, огонь и работающий CNC :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба 1 hour ago, destroit said: https://www.cnc-club.ru/forum/viewtopic.php?f=41&t=16788&view=unread#unread А в этой ветке точно ли вопрос по CNC? Здесь бы ответ автора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба Честно говоря, почитал, что там по ссылке, и аж оторопел! Не ожидал я такого "ардуинства", честно говоря!!! Я как-то себе более вменяемыми воспринимал все эти разработки: коль уж пользуешься шаговиком, так поставь на него инкрементальный энкодер (чтобы проверять, не пропускает ли шаги); тики на драйвер ШД нужно обязательно генерировать аппаратным таймером (ШИМ), а никак не "ногодрыгом". И очень много других претензий. Я вообще не понимаю, как "малинка" и т.п. одноплатники под управлением линукса (который вообще ни разу ни ОСРВ даже с патчами!) могут рулить ЧПУшным станком напрямую, без аппаратной прокладки в виде пусть даже того же STM32F072 (у которого как раз хватит таймеров, чтобы рулить тремя осями с обратной связью; сам занят сейчас разработкой такой трехкоординатной подвижки, только с другими целями: точно позиционировать светоприемник)! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться