Запутывание в .NET: как это делается, насколько это безопасно? - PullRequest
3 голосов
/ 29 мая 2009

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

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

Меня также интересует любое объяснение, которое дает некоторое базовое понимание того, как работает обфускатор.

Насколько я понимаю, запутывание не может помешать отражению и обнаружению методов и т. Д., Но делает код в методах менее читаемым, перетаскивая имена переменных. Это неправильно? Что еще он делает?

Ответы [ 5 ]

5 голосов
/ 29 мая 2009

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

1 голос
/ 29 мая 2009

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

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

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

0 голосов
/ 21 июня 2010

Вот статья, которую я написал, опубликованная в журнале ISSA, на тему « Оценка и управление рисками безопасности, уникальными для Java и .NET » - это файл PDF, но он покрывает запутывание и ряд связанных методы. Что еще более важно, он охватывает процесс снижения этих рисков и некоторые предложения о том, как согласовать все вышеперечисленное с существенностью этих рисков для ваших конкретных обстоятельств.

0 голосов
/ 29 мая 2009

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

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

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

Перепишите как пока. использование особые ценности. Изменить итерацию в рекурсию запутать конструкции и бессмысленные переменные имена удалить промежуточный переменные и литералы запутывать Имена снова Удалить литералы Удалить лишний текст
0 голосов
...