Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Инструменты/стратегия обфускации .NET
Мой продукт состоит из нескольких компонентов: ASP.NET, Windows Forms App и Windows Service. 95% или около того кода написано в VB.NET.
По соображениям интеллектуальной собственности мне нужно запутать код, и до сих пор я использовал версию dotfuscator, которой уже более 5 лет. Я думаю, что пришло время перейти к инструменту нового поколения. То, что я ищу, - это список требований, которые я должен учитывать при поиске нового обфускатора.
То что я знаю я должен искать до сих пор:
- Serialization/De-serialization . В моем текущем решении я просто говорю инструменту не запутывать никакие члены данных класса, потому что боль от невозможности загрузить данные, которые были ранее сериализованы, просто слишком велика.
- Интеграция с процессом сборки
- Работа с ASP.NET . В прошлом я находил это проблематичным из - за изменения имен .dll (у вас часто есть по одному на страницу), с которыми не все инструменты справляются хорошо.
Мы испробовали несколько обфускаторов. Ни один из них не работает в большом клиент-серверном приложении, использующем удаленное взаимодействие. Проблема в том, что клиент и сервер совместно используют некоторые библиотеки DLL, и мы не нашли ни одного обфускатора, который мог бы справиться с этим.
Мы пробовали DotFuscator Pro, SmartAssembly, XenoCode, Salamander и несколько небольших временных приложений, названия которых ускользают от меня.
Честно говоря, я убежден, что запутывание-это большой Хак.
Даже те проблемы, которые он решает, не являются полностью реальной проблемой. Единственное, что вам действительно нужно защитить,-это строки подключения, коды активации и другие важные для безопасности вещи. Этот бред о том, что другая компания собирается реинжинирировать всю вашу кодовую базу и создать из нее конкурирующий продукт, является чем-то из кошмара параноидального менеджера, а не реальностью.
Сейчас я занимаюсь этим 'Knee Deep', пытаясь найти хорошее решение. Вот мои впечатления до сих пор.
Xenocode - у меня есть старая лицензия на Xenocode2005, которую я использовал для запутывания моих сборок .net 2.0. Он отлично работал на XP и был достойным решением. Мой текущий проект-это .net 3.5, и я нахожусь на Vista, поддержка сказала мне дать ему ход, но версия 2005 года даже не работает на Vista (сбои), поэтому я и теперь должен купить 'PostBuild2008' по цене gobsmacking от $1900. это может быть хорошим инструментом, но я не собираюсь выяснять. Слишком дорогой.
Reactor.Net - это гораздо более привлекательная цена, и она отлично работала на моем автономном исполняемом устройстве. Модуль лицензирования был также хорош и сэкономил бы мне кучу усилий. К сожалению, в нем отсутствует ключевая особенность, а именно возможность исключить материал из запутывания. Это делает невозможным достижение нужного мне результата (слияние нескольких сборок вместе, запутывание одних, не-запутывание других).
SmartAssembly - я скачал Eval для этого, и он работал безупречно. Я смог добиться всего, что хотел, и интерфейс был первоклассным. Цена вопроса все еще немного тяжеловата.
Dotfuscator Pro -не смог найти цену на сайте. В настоящее время ведутся дискуссии, чтобы получить цитату. Звучит зловеще.
Confuser - проект с открытым исходным кодом, который работает довольно хорошо (чтобы запутать ppl, как и следует из названия). https://confuser.codeplex.com /
(добавлено jgauffin)
Примечание: ConfuserEx, как сообщается, является "broken" в соответствии с выпуском #498 по их GitHub РЕПО.
Вернуться к .Net 1.1 обфускация была необходима: декомпилировать код было легко, и вы могли перейти от assembly, к IL, к C# коду и снова скомпилировать его с очень небольшим усилием.
Теперь с .Net 3.5 я совсем не уверен. Попробуйте декомпилировать a 3.5 assembly; то, что вы получите, - это очень долгий путь от компиляции.
Добавьте оптимизацию из 3.5 (гораздо лучше, чем 1.1) и то, как анонимные типы, делегаты и так далее обрабатываются отражением (они кошмарны для перекомпиляции). Добавьте выражения lambda, компилятор 'magic', как Linq-синтаксис и var, и функции C#2, как yield (что приводит к появлению новых классов с нечитаемыми именами). Ваш декомпилированный код оказывается далеко не компилируемым.
Профессиональная команда с большим количеством времени все еще может перепроектировать его обратно, но то же самое верно и для любого запутанного кода. Тот код, который они получили бы из этого, был бы недостижим и, скорее всего, очень глючным.
Я бы рекомендовал подписывать ключами ваши сборки (то есть, если хакеры могут перекомпилировать одну, они должны перекомпилировать все), но я не думаю, что обфускация стоит того.
Если вы ищете бесплатный вариант, вы можете попробовать DotObfuscator Community Edition, который поставляется с Visual Studio или Eazfuscator.NET .
С 29 июня 2012 года Eazfuscator.NET теперь является коммерческим. Последняя бесплатная доступная версия-3.3.
Я также использую SmartAssembly. Я обнаружил, что Ezrinz .Net реактор гораздо лучше для меня на .net приложениях. Он запутывает, поддерживает Mono, объединяет сборки, а также имеет очень хороший модуль лицензирования для создания пробной версии или привязки лицензии к конкретной машине (очень легко реализовать). Цена также очень конкурентоспособна, и когда мне нужна была поддержка, они были там, где быстро. Eziriz
Просто для ясности я просто клиент, который любит продукт и никак не связан с компанией.
Короче говоря, вы не можете этого сделать.
Существуют различные инструменты, которые могут затруднить кому - то чтение вашего кода-некоторые из них были отмечены другими ответами.
Однако все это только затрудняет чтение-они увеличивают количество необходимых усилий, вот и все. Часто этого бывает достаточно, чтобы отпугнуть случайных читателей, но тот, кто твердо решил покопаться в вашем коде, всегда сможет это сделать.
У нас есть многоуровневое приложение с интерфейсом asp.net и winform, которое также поддерживает удаленное взаимодействие. У меня не было никаких проблем с использованием любого обфускатора, за исключением типа шифрования, который генерирует загрузчик, который может быть проблематичным во всех видах неожиданных способов и просто не стоит этого, на мой взгляд. На самом деле мой совет был бы больше похож на "Avoid encrypting loader type obfuscators like the plague". :)
По моему опыту, любой обфускатор будет прекрасно работать с любым аспектом .net, включая asp.net и удаленное управление, вам просто нужно познакомиться с настройками и узнать, как далеко вы можете продвинуть его в каких областях вашего кода. И потратьте время, чтобы попробовать обратное проектирование на то, что вы получаете, и посмотреть, как это работает с различными настройками.
Мы использовали несколько в течение многих лет в наших коммерческих приложениях и остановились на obfuscator от 9rays.net, потому что цена правильная, он делает свою работу, и у них есть хорошая поддержка, хотя мы действительно не нуждались в поддержке в течение многих лет, но, честно говоря, я не думаю, что это действительно важно, какой obfuscator вы используете, проблемы и кривая обучения все равно, если вы хотите, чтобы он работал правильно с удалением и asp.net.
Как уже упоминали другие, все, что вы на самом деле делаете, - это эквивалент висячего замка, удерживающего в противном случае честных людей и или затрудняющего простую перекомпиляцию приложения.
Лицензирование обычно является ключевой областью для большинства людей, и вы определенно должны использовать какую-то систему сертификатов с цифровой подписью для лицензирования в любом случае. Ваша самая большая потеря будет происходить от случайного обмена лицензиями, если у вас нет умной системы на месте, люди, которые нарушают систему лицензирования, никогда не собирались покупать в первую очередь.
Очень легко зайти слишком далеко и оказать негативное влияние на ваших клиентов и ваш бизнес, сделать то, что просто и разумно, а затем не беспокоиться об этом.
Crypto Obfuscator решает все ваши проблемы и сценарии. Оно :
- Автоматически исключает типы / члены из запутывания на основе правил. Сериализованные типы / поля являются одним из них.
- Он может быть интегрирован в процесс сборки с помощью MSBUild.
- Поддерживает ASP.Net проектов.
В течение последних двух дней я экспериментировал с Dotfuscator Community Edition advanced (бесплатная загрузка после регистрации basic CE, которая поставляется в комплекте с Visual Studio).
Я думаю, что причина, по которой больше людей не используют обфускацию в качестве опции по умолчанию, заключается в том, что это серьезная проблема по сравнению с риском. В небольших тестовых проектах я мог заставить запутанный код работать с большим усилием. Развертывание простого проекта через ClickOnce было хлопотным, но достижимым после ручной подписи манифестов с помощью mage. Единственная проблема заключалась в том, что при ошибке стек trace возвращался запутанным, а CE не имел деобфускатора или осветлителя в упаковке.
Я попытался запутать реальный проект, который VSTO основан на Excel, с виртуальной земной интеграцией, множеством вызовов веб-служб и контейнером IOC и множеством размышлений. Это было невозможно.
Если обфускация действительно является критическим требованием, вы должны разработать свое приложение с учетом этого с самого начала, тестируя запутанные сборки по мере продвижения. В противном случае, если это довольно сложный проект, вы в конечном итоге получите серьезную боль.
Недавно я попробовал подключить выход одного свободного обфускатора к другому свободному обфускатору, а именно Dotfuscator CE и новый Babel obfuscator на CodePlex. Подробнее - в моем блоге .
Что касается сериализации, я переместил этот код в другой DLL и включил его в проект. Я рассудил, что там нет никаких секретов, которых нет в XML, так что это не нуждается в запутывании. Если в этих классах есть какой-либо серьезный код, то его должно покрывать использование частичных классов в main assembly.
Избегайте Реактора. Это совершенно бесполезно (и да, я заплатил за лицензию). Ксенокод был лучшим из тех, с которыми я столкнулся и тоже купил лицензию. Поддержка была очень хорошей, но я не очень нуждался в ней, так как она просто работала. Я проверил каждый обфускатор, который смог найти, и мой вывод заключается в том, что ксенокод был далеко не самым надежным и сделал лучшую работу (а также возможность отправить процесс вашего .NET exe в родной exe, который я больше нигде не видел.).
Есть два основных различия между реактором и ксенокодом. Во-первых, Ксенокод действительно работает. Во-вторых, скорость выполнения ваших сборок ничем не отличается. С реактором это было примерно в 6 миллионов раз медленнее. У меня также сложилось впечатление, что реактор-это операция одного человека.
Вы можете использовать "Dotfuscator Community Edition" - он поставляется по умолчанию в Visual Studio 2008 Professional. Вы можете прочитать об этом по адресу:
http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html
Версия "Professional" продукта стоит денег, но лучше.
Вам действительно нужно, чтобы ваш код был запутан? Обычно в декомпиляции вашего приложения очень мало ошибок, если только оно не используется в целях безопасности. Если вы беспокоитесь о людях "stealing" вашего кода, не стоит этого делать; подавляющее большинство людей, смотрящих на ваш код, будут использовать его в учебных целях. В любом случае, нет абсолютно эффективной стратегии запутывания для .NET - кто-то с достаточным навыком всегда сможет декомпилировать/изменить ваше приложение.
Вы должны использовать то, что является самым дешевым и наиболее известным для вашей платформы, и назвать это днем. Запутывание высокоуровневых языков является трудной проблемой, потому что потоки VM opcode не страдают от двух самых больших проблем, которые делают собственные потоки opcode: идентификация функций / методов и псевдонимирование регистров.
Что вы должны знать о реверсировании байт-кода, так это то, что тестеры безопасности уже используют стандартную практику для проверки прямого кода X86 и поиска в нем уязвимостей. В raw X86 вы не можете даже найти допустимые функции, не говоря уже о том, чтобы отслеживать локальную переменную на протяжении всего вызова функции. Почти ни при каких обстоятельствах реверсоры машинного кода не имеют доступа к именам функций и переменных-если только они не просматривают код Microsoft, для которого MSFT услужливо предоставляет эту информацию общественности.
"Dotfuscation" работает главным образом путем скремблирования имен функций и переменных. Вероятно, это лучше сделать, чем публиковать код с информацией уровня отладки, где отражатель буквально отказывается от вашего исходного кода. Но все, что вы делаете помимо этого, скорее всего, приведет к снижению отдачи.
Я обнаружил, что Agile.Net обеспечивает довольно хорошую защиту для вашего .Net Assembly, потому что он предлагает не только запутывание, но и шифрование. Скачайте бесплатно trail.
http://secureteam.net/NET-Code-Protection.aspx
http://secureteam.net/downloads.aspx
Вот документ от самой Microsoft. Надеюсь, это поможет..., это из 2003 года, но это все еще может быть актуально.
Я запутывал код в одном и том же приложении с момента .Net 1, и это была большая головная боль с точки зрения обслуживания. Как вы уже упоминали, проблему сериализации можно избежать, но очень легко ошибиться и запутать то, что вы не хотели запутывать. Легко сломать сборку или изменить шаблон запутывания и не иметь возможности открывать старые файлы. Кроме того, может быть трудно выяснить, что пошло не так и где.
Нашим выбором был Ксенокод, и если бы я сделал этот выбор снова сегодня, я бы предпочел не запутывать код или использовать Dotfuscator.
Я должен был использовать обфускацию / защиту ресурсов в моем последнем проекте RPO и нашел Crypto Obfuscator как хороший и простой в использовании инструмент. Проблема сериализации - это только вопрос настроек в этом инструменте.
бесплатный способ-использовать dotfuscator из visual studio, иначе вам придется выйти и купить obfuscator, такой как Postbuild ( http://www.xenocode.com/Landing/Obfuscation.aspx )
Мы используем SmartAssembly на нашем клиенте windows. Прекрасно работать.
Это тоже добавляет некоторые дополнительные проблемы. Распечатка имен классов в лог-файлах / исключениях должна быть be de-запутана. И конечно же не может создать класс из его имени. Так что это хорошая идея, чтобы взглянуть на вашего клиента и посмотреть, какие проблемы вы можете получить, запутывая.
Есть хорошая версия с открытым исходным кодом под названием Obfuscar. Кажется, все работает нормально. Типы, свойства, поля, методы могут быть исключены. Оригинал находится здесь: https://code.google.com/p/obfuscar/, но поскольку он, похоже, больше не обновляется, кто-то разветвил его здесь: https://obfuscar.codeplex.com/