В любом случае какая бы параноидальная защита ни стояла, два метода: терморектальный криптоанализ и покупка разработчика ее вскрывают полностью.
если верить историческим книгам разработчика предавали огню, это если им верить
Необратимое термошифрование. Метода, чо. Раньше делали качественно - баги фиксить после релиза не нужно было.
интересно, как это сделать? Быстро и относительно точно
Не стоит задачи защитить код от копирования. Стоит задача создавать прошивки, которые делают одно и тоже, но выглядят (на уровне машинного кода) по разному.
Для решения этой задачи прошивка объявляется большим числом, а дальше - см. остальные мои сообщения.
После компиляции получаем бинарник, в котором:
[случайный_алгоритм_дешифрования_тела][тело]
С таким ТЗ часть прошивки (после дешифровщика) шифруется простым алгоритмом по ключу хранящемуся в определенном месте (хоть в отдельной части памяти, хоть стеганографически зашитом в той же закодированной прошивке). Алгоритм единый, множество ключей явно больше ваших копий.
Если никому не рассказывать тайну алгоритма, ключом может служить хоть серийник МК.
Непонятно требование к алгоритму “работать долго”. Любую функцию можно снабдить “пустыми” циклами или имитирующими работу - если автор этого не понимает, то под сомнением его скилл как программиста.
Это (обьявление большим числом) в практичском плане вам ничего не дает… да и вообще, глупость, по моему ![]()
Мне самому интересно. Я читал про общий принцип контроля устройствами своего периметра. Был способ еще и по давлению газа - давление в корпусе ушло, срабатывает независимая схема запускающая “сжигание” ключа. Типа микросхемки, которая умеет только выдавать уникальный ключ, а при пропадании внешнего давления навсегда выходить из строя. Конечно, вскрывается в барокамере, тоже от случайных прохожих.
Это как раз то, чего не нужно.
Алгоритм должен быть генерёный, все время - разный.
Если алгоритм один и тот же, то глянув в начальные байты прошивки можно будет сказать, “О, это же алгоритм от Мишутки, он нам известен, сейчас мы сами все расшифруем, без сопливых”
И напишут програмку для расшифровки всех прошивок.
Но если все прошивки изначально разные, то задача осложняется. Недостаточно будет вытащить ключ или , там, hardware id. Нужно будет еще сидеть и разбираться в алгоритме. И найденное решение будет уже не применимо к другой прошивке (взломав одно устройство нельзя так же взломать остальные)
Для формализации вычислений. Ну пусть будет массив, если так удобнее.
Это для устойчивости к автоматизированной “распаковке”.
Посмотрите в интернете о методах защиты (шифрования) исполняемых файлов и о методах их расшифровки пошаговым исполнением. Поезно так же почитать о том, как устроена “распаковка” .exe файлов обфусцированных\щифрованных антивирусными програмами.
Вот вам и вопрос, что сложного вам как программисту написать не имеющее отношение к выдаче результата “тяжелое” вычисление? Что и это вы выносите как непосильное вам и требующее помощи. Расшифровать тормозящий кусок, погонять его, потом приступить к дальнейшей расшифровке.
Ну скипнут же его в отладчике просто, если это dummy code, не имеющий отношения к вычислению результата
значит сделайте так, чтоб не скипнули. Используйте его результат в основном коде…
Право, согласен с @Мишутк - вы странные вопросы задаете. Задача, которую вы не можете понять как решать - выглядит на порядок проще всех этих алгоритмов криптографии и обфускации. которые вы, по вашим уверениям, знаете…
Прям “назвал все буквы, не смог угадать слово…”
Ваш уникальный алгоритм после первого же запуска и начала работы расшифрованной программы останавливается и делается дамп программы.
Все, ее теперь можно и клонировать и изучать.
Еще раз - от чего вы защищаетесь?
На серийных изделиях вы защиты не добьетесь. МК и программа должны быть внутри одного кристалла специально обученного прятать код на схемотехническом уровне. Все остальное, если говорим об устройстве которое само себя расшифровывает, на стандартных компонентах вскрывается на раз.
а ты как будто тестер на ардуино никогда не видел )))
потому и спрашиваю, что видел.
Точность измерения емкости в них плюс-минус лапоть
Мне просто нужен тру-полиморфный код, вот и все.
От чего защищаются полиморфным кодом? Вот и мне для этого же.
Я это сформулировал как задачу в этом топике. Но специально для вас могу переформулировать: нужен генератор тру-полиморфного кода. ну, или метаморфного, как его одно время называли.
там-то как раз ничего сложного нет.
Ладно, понятно, что ничего не понятно.
Какую-то теорию читать надо, современную.
Генерировать алгоритмы - это непросто ![]()
Думаю, надо в сторону генетического алгоритма двигаться.
Много писанины ![]()
Если это нужно просто ради факта наличия, то вопросов нет.
Прикольно наблюдать, когда разработчик заявляет о защите, на которую потратил кучу времени (может и денег), а она вскрывается вообще в обход. Один из примеров я привел, как снимается дамп памяти уже с расшифрованной работающей программой.
Пока не построена модель угрозы для всего законченного устройства, говорить о защитах немного бессмысленно.