Насколько эффективный путаница?

Спасибо всем за вклад. После отладки в течение двух дней. Я обнаружил, что у меня есть несколько установок библиотеки boost, включенных в мое решение

30
задан Community 23 May 2017 в 12:17
поделиться

9 ответов

Я обсудил, почему я не думаю, что Путаница является эффективным средством защиты от взламывания здесь:
Защищают Код.NET от инженерного анализа

Однако, Ваш вопрос - конкретно приблизительно [1 125] исходное воровство , который является интересной темой. В книге Eldad Eiliams, " Инвертирование: Секреты Инженерного анализа ", обсуждает автор исходное воровство как одну причину позади инженерного анализа в первых двух главах.

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

Так, если у Вас нет некоторого сверхсекретного алгоритма, Вы не хотите, чтобы Ваша конкуренция имела, Вы не должны волноваться об исходном воровстве. Стоимость, связанная с инвертированием любого существенного количества исходного кода из Вашего приложения быстро, превышает стоимость перезаписи его с нуля.

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

Некоторые общие антиреверсивные меры:

  • Запутывание - не делает многого с точки зрения защиты Вашего источника или препятствования тому, чтобы это было взломано. Но мы не могли бы также сделать это полностью легким, правильно?
  • сторонние Упаковщики - Themida является одним из лучших. Упаковывает исполняемый файл в зашифрованное win32 приложение. Предотвращает отражение, если приложение является приложением.NET также.
  • Пользовательские Упаковщики - Иногда запись Вашего собственного упаковщика, если у Вас есть навык, чтобы сделать так, является эффективной, потому что существует очень мало информации в раскалывающейся сцене о том, как распаковать Ваше приложение. Это может остановить неопытное Ре. Этот учебное руководство дает некоторую хорошую информацию о записи Вашего собственного упаковщика.
  • Сохраняют промышленные секретные алгоритмы от пользовательской машины. Выполните их как удаленный сервис, таким образом, инструкции никогда не выполняются локально. Единственный "надежный" метод защиты.

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

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

<час>

Вы упомянули, что Вам потребовались несколько месяцев для записи ~20kLOC для приложения. Потребовалось бы почти порядок величины дольше для инвертирования эквивалентных 20kLOC из приложения в осуществимый источник, если бы Вы приняли меры предосторожности абсолютного минимума.

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

Берут следующий беллетризованный пример: Позволяет говорят, что я просто разработал совершенно новое конкурирующее приложение для iTunes, который имел тонну дополнительных свойств. Позвольте говорят, что потребовалось несколько 100k LOC и 2 года для разработки. Одной основной характеристикой, которую я имею, является новый способ подать музыку Вам базирующийся от Вашего слушающего музыку вкуса.

Apple (являющийся пиратами они) получает ветер этого и решает, что им действительно нравится Ваша музыка, предлагают функцию, таким образом, они решают инвертировать его. Они затем заточат - в на только, что алгоритм и перепроектировать инженеры в конечном счете придумают осуществимый алгоритм, который подает эквивалентные предложения, учитывая те же данные. Затем они реализуют, сказал, что алгоритм в их собственном приложении, назовите это "Genius" и сделайте их следующие 10 триллионов долларов.

, Именно так исходное воровство понижается.

Никто не сидел бы там и инвертировал бы весь 100k LOC для кражи значительных блоков скомпилированного приложения. Это просто было бы слишком дорогостоящим и слишком трудоемким. Приблизительно 90% времени, которое они инвертировали бы скучный, non-industry-secretive код, который просто обработал нажатия кнопки или обработал ввод данных пользователем. Вместо этого они могли нанять собственных разработчиков, чтобы переписать большую часть из него с нуля за меньшее количество денег и просто инвертировать важные алгоритмы, которые являются трудными инженеру и которые дают Вам край (т.е., музыка предлагает функцию).

40
ответ дан Nurbol Alpysbayev 27 November 2019 в 23:29
поделиться

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

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

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

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

я не полагаю, что комментарий действительно ссылался "на кражу кода" в том смысле, что Ваш код будет украденным и используемым в другом проекте. Поскольку они использовали слово "взломщик", я полагаю, что они говорили о "воровстве" с точки зрения пиратства программного обеспечения. Взломщики специализируются на работе вокруг механизмов защиты; они не интересуются использованием Вашего исходного кода для некоторой другой цели.

10
ответ дан wuputah 27 November 2019 в 23:29
поделиться

Большинство людей склонно писать то, что, кажется, запутывается код, и это не остановило взломщиков поэтому, каково различие?

РЕДАКТИРОВАНИЕ:

хорошо, серьезное время. Если Вы действительно хотите сделать что-то, что это твердо повредить, изучить полиморфное кодирование (чтобы не быть перепутанным с полиморфизмом). Сделайте код, который самовидоизменяется, и это - серьезная боль для повреждения и сохранит их предположением.

http://en.wikipedia.org/wiki/Polymorphic_code

В конце, ничто не невозможно перепроектировать.

8
ответ дан James Jones 27 November 2019 в 23:29
поделиться

Вы волнуетесь по поводу людей, крадущих определенные алгоритмы, используемые в Вашем продукте. Или Вы Fair Isaac , или необходимо дифференцироваться с помощью больше, чем путь Вы x ++;. при решении некоторой проблемы в коде, который не может быть решен кем-то еще ломающим голову над нею в течение нескольких часов, у Вас должен быть доктор философии в информатике и/или патентах для защиты изобретения. 99% программных продуктов не успешны или особенный из-за алгоритмов. Они успешны, потому что их авторы сделали тяжелый подъем для соединения известных и понятных понятий в продукт, который делает то, что их клиенты нуждаются и продают ему за более дешевый, чем он стоил бы, чтобы заплатить другим для восстанавливания того же.

5
ответ дан Rex M 27 November 2019 в 23:29
поделиться

Посмотрите на него этот путь; редактор WMD, в которого Вы ввели свой вопрос, был перепроектирован ТАК команда, чтобы исправить некоторые ошибки и сделать som улучшения. Тот код запутывался. Вы никогда не собираетесь мешать умным мотивированным людям взломать Ваш код, лучшее, на которое можно надеяться, должно сохранить честных людей честными и сделать его несколько трудно для повреждения.

3
ответ дан Ed S. 27 November 2019 в 23:29
поделиться

Если бы Вы когда-либо видели вывод из дизассемблера, Вы поняли бы, почему путаница всегда перестанет работать.

2
ответ дан Benjamin Autin 27 November 2019 в 23:29
поделиться

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

1
ответ дан Diego Sevilla 27 November 2019 в 23:29
поделиться

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

Хорошая путаница защитит Вас в какой-то степени, но это - все об усилии, требуемом повредить его против 'вознаграждения' наличия кода. Если Вы говорите об остановке Вашего среднего бизнес-пользователя, то коммерческий obfuscator должен быть достаточным.

1
ответ дан Mitch Wheat 27 November 2019 в 23:29
поделиться

Короткий ответ - да и нет; это зависит полностью от того, что Вы пытаетесь предотвратить. Разделите двенадцать из , Безопасная Поваренная книга Программирования имеет некоторые интересные комментарии к этому на странице 653 (который удобно недоступен в книжном предварительном просмотре Google). Это классифицирует антивмешательство в четыре категории: Нулевой день (замедляющий взломщика, таким образом, им требуется долгое время для выполнения то, что они хотят), защита патентованного алгоритма для предотвращения инженерного анализа, "потому что я могу", нападения и я не могут помнить 4-й. Необходимо спросить, что является мной пытающийся предотвратить, и если Вы действительно обеспокоены человеком, получающим взгляд на Ваш исходный код затем, путаница имеет некоторое значение. Используемый на своем собственном это - обычно просто раздражение кому-то пытающемуся смешать с Вашим приложением, и как любые хорошие меры безопасности это работает лучше всего при использовании в сочетании с другими методами антивмешательства.

0
ответ дан Kevin Loney 27 November 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: