Действительно ли обфускация .NET-кода стоит того?

Из того, что я прочитал, обфускация кода на самом деле не так сложно "взломать", и это только задержит неизбежное. В этом случае, какова цель?

Если кто-то действительно хочет украсть ваш источник, он может.

Если кому-то нужно просмотреть исходный код для безобидных/полезных целей, они не могут.

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

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

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

Например, мне нужно заменить некоторые изображения в ASPDotNetStoreFront. Когда вы искали местоположение тегов, я обнаружил, что они содержались в скомпилированном коде. ДЕРЬМО. Поэтому я решил, что декомпилирую код, чтобы узнать, какие теги img заменить через Regex. Я попытался просмотреть исходный код, чтобы увидеть, какие изображения могут появиться из данного скомпилированного метода, и рефлектор не может справиться с этим, я полагаю, из-за обфускации. У меня действительно нет времени, чтобы оглядываться за декомболистами/de-obfuscators.

Ответы

Ответ 1

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

Ответ 2

Только в том случае, если ваш проект длительный и займет у кого-то много времени, чтобы его реализовать. Это, конечно, мнение здесь, но я еще не нашел запутанную DLL DLL, но я не мог понять, что происходит с использованием только Reflector.

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

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

Ответ 3

По-моему, нет. Я видел, как парни взломали программы, написанные на разных языках. С профессиональными инструментами, такими как IDA (работает для неуправляемого кода), ничто не защищено на 100%. Обфусканные сборки еще проще взломать из-за присутствия метаданных.

Ответ 4

Я не знаю, стоит ли его "запугать", но я могу сказать, что есть альтернативы обфускации, которые более безопасны.

XHEO, например, предоставляет инструмент (CodeVeil), чтобы фактически шифровать сборки .NET, а не просто запутывать их.

Ответ 5

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

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

Вы, как поставщик приложений, будете нести ответственность в первую очередь...

Сторонники BitHelmet довольно хорошо объясняют это в http://www.bithelmet.com/Overview.html.

Несколько лет назад я работал в компании с кредитными картами среднего размера. Было три кражи (большие деньги) с участием сотрудников, которых мы kwnew, и все они выполнялись не российским или китайским хакером мирового класса, а работниками kwnow-just-enough-of-programming, которые сделали немного скручивается с программным обеспечением кассиров.

Тогда я был младшим:), мой босс должен был с этим справиться. Я всегда удивляюсь, как многие из этих краж никогда не были обнаружены;-). Я мог бы это сделать, но так и не сделал!

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

Ответ 6

Для приложений .Net, НЕ обфускание составляет создание вашего продукта с открытым исходным кодом, поскольку его так легко увидеть и проанализировать исходный код с помощью Reflector. У вас может быть лицензионное соглашение, но только несколько компаний имеют время и деньги для защиты лицензионного соглашения в суде. Для таких компаний обфускация - лучший вариант. Конечно, вам нужно протестировать запутанные сборки, но затем вы уже тестируете свой продукт, поэтому почему бы не протестировать окончательные обфускации сборок.

Это также зависит от того, насколько полезен обфускатор. Рассмотрим наш Crypto Obfuscator - он поддерживает легкую интеграцию с Visual Studio, поэтому вы всегда запускаете запутанные сборки. Он также имеет много автоматических исключений, поэтому он не будет запутывать классы/члены, которые вызовут запутанную сборку для неправильной работы. Он также отображает предупреждения (включая номер строки) для кода, которые могут привести к неправильной работе запутанной сборки. Это огромная экономия времени.