(Почему) я должен использовать запутывание?

Мне кажется, что обфускация - это идея, которая попадает куда-то в лагерь «безопасность по неизвестности» или «ложное чувство защиты». Для защиты интеллектуальной собственности есть авторское право; чтобы предотвратить обнаружение проблем безопасности, есть решение этих проблем . Короче говоря, я рассматриваю это как техническое решение социальной проблемы. Они почти никогда не работают.

Тем не менее, я, кажется, единственный в нашей команде разработчиков, который чувствует это, поэтому я либо ошибаюсь, либо мне просто нужны убедительные аргументы. Наш продукт использует .NET, и один разработчик предложил .NET Reactor (который, кстати, был предложен в этом ТАК что нить тоже ).

  

.NET Reactor полностью останавливает любую декомпиляцию, смешивая любую чистую сборку .NET (написанную на C #, VB.NET, Delphi.NET, J #, MSIL ...) с собственным машинным кодом.

Итак, в основном, вы отбрасываете все преимущества байт-кода за один раз?

Есть ли хорошие инженерные преимущества для запутывания?

8 голосов | спросил Sören Kuklau 28 PM00000010000004331 2008, 13:08:43

6 ответов


0

Я опубликовал вопрос, который может помочь вам, поскольку в нем обсуждаются некоторые из проблем: Если я буду беспокоиться о том, чтобы запутывать мою нетто-код

ответил John Sibly 28 PM00000020000004731 2008, 14:26:47
0

Если большая команда программистов действительно хочет получить ваш исходный код, у которого есть время, деньги и усилия, тогда они будут успешными.

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

ответил GateKiller 28 PM00000010000000531 2008, 13:14:05
0

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

ответил skolima 28 PM00000010000000931 2008, 13:13:09
0

Одно потенциальное инженерное преимущество состоит в том, что в некоторых случаях запутывание может создавать меньшие исполняемые файлы или другие артефакты, например запутывание javascript приводит к уменьшению размера файлов (поскольку все переменные называются «a» и «b» вместо «descriptiveNameOne», а весь пробел удаляется и т. д.). Это приводит к более быстрому времени загрузки веб-страниц, которые используют запутанный JavaScript. Очевидно, что это не относится (в той же степени) к миру .NET, но это пример ситуации, в которой есть прямое инженерное преимущество.

ответил John 28 PM00000010000003531 2008, 13:13:35
0

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

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

ответил Staale 28 PM00000010000005131 2008, 13:16:51
0

Основная причина использования запутывания - защита интеллектуальной собственности, как вы указали. Как правило, для бизнеса гораздо выгоднее приобрести продукт для запутывания, например .NET Reactor, чем пытаться юридически защищать ваши авторские права.

Запутывание может также обеспечить другие, более случайные преимущества, такие как повышение производительности и уменьшение размера сборки. Это принесет вам технические преимущества.

ответил John Hunter 28 PM00000010000001831 2008, 13:17:18

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132