Стоит ли запутывать код .NET? - PullRequest
15 голосов
/ 23 февраля 2010

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

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

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

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

Если вы не запутываете, вы все равно не предоставляете полный исходный код, поэтому вы можете продать «лицензию на исходный код».

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

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

Ответы [ 6 ]

18 голосов
/ 23 февраля 2010

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

11 голосов
/ 23 февраля 2010

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

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

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

3 голосов
/ 23 февраля 2010

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

2 голосов
/ 09 апреля 2010

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

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

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

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

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

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

На самом деле вы должны подумать о каком-то уровне защиты и обдумать действия злоумышленника. И это также усложнит жизнь решительному обратному механизму.

2 голосов
/ 23 февраля 2010

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

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

1 голос
/ 23 февраля 2010

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

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

...