Инструменты/стратегия путаницы.NET [закрываются]

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

Когда что-то должно существовать в C ++ но нет, первое место для поиска - boost.org . Там я нашел Boost многомерную библиотеку массивов, multi_array . Он даже включает класс multi_array_ref, который можно использовать для упаковки собственного одномерного массива.

157
задан 6 revs, 5 users 55% 13 April 2015 в 12:51
поделиться

23 ответа

Назад с путаницей.Net 1.1 было важно: декомпиляция кода была легка, и Вы могли пойти от блока, к IL, к коду C# и компилировать его снова с очень небольшим усилием.

Теперь с.Net 3.5 я нисколько не уверен. Попытайтесь декомпилировать 3,5 блока; то, что Вы получаете, является длинным длинным путем от компиляции.

Добавляют оптимизации от 3,5 (намного лучше, чем 1,1) и путь анонимные типы, делегаты и так далее обрабатываются отражением (они - кошмар для перекомпиляции). Добавьте лямбда-выражения, компилятор 'волшебство' как Linq-синтаксис и var, и функции C#2 как yield (который приводит к новым классам с нечитабельными именами). Ваш декомпилируемый код заканчивается длинный длинный путь от компилируемого.

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

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

42
ответ дан Keith 23 November 2019 в 21:45
поделиться

Можно также хотеть посмотреть на новые технологии защиты кода такой как Metaforic и V.i. Labs и новые технологии программной защиты от копирования такой как ByteShield. Раскрытие: Я работаю на ByteShield.

0
ответ дан Christian Olsson 23 November 2019 в 21:45
поделиться

Я запутывал код в том же приложении начиная с.Net 1, и это была сильная головная боль с точки зрения обслуживания. Как Вы упомянули, проблемы сериализации можно избежать, но действительно легко сделать ошибку и запутать что-то, что Вы не хотели запутываемый. Легко повредить сборку, или изменить шаблон путаницы и не быть в состоянии открыть старые файлы. Плюс он может быть трудным узнать то, что пошло не так, как надо и где.

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

2
ответ дан Jon Dewees 23 November 2019 в 21:45
поделиться

Я также использовал SmartAssembly. Я нашел что Реактор Ezrinz.Net намного лучше для меня на .net приложениях. Это запутывает, Моно поддержка, блоки слияний, и это также также имеет очень хороший модуль лицензирования, чтобы создать пробную версию или связать лицензию на конкретную машину (очень легкий реализовать). Цена также очень конкурентоспособна и когда я нуждался в поддержке они где быстро. Eziriz

Только, чтобы быть ясным я - просто custumer, кому нравится продукт и ни в коем случае не связанный с компанией.

9
ответ дан Ronnie 23 November 2019 в 21:45
поделиться

У меня не было проблем с Smartassembly.

3
ответ дан Geoff Appleford 23 November 2019 в 21:45
поделиться

Необходимо использовать то, что является самым дешевым и известным прежде всего платформой, и прекратить дело. Путаница высокоуровневых языков является тяжелой проблемой, потому что потоки кода операции VM не страдают от двух самых больших проблемных собственных потоков кода операции, сделайте: идентификация функции/метода и искажение регистра.

то, Что необходимо знать об инвертировании байт-кода, - то, что это уже - общепринятая практика для тестеров безопасности, чтобы рассмотреть прямой X86-код и найти уязвимости в нем. В необработанном X86 Вы не можете обязательно даже найти допустимые функции, уже не говоря о дорожке локальная переменная в течение вызова функции. Почти ни при каких обстоятельствах делают инверторы собственного кода имеют доступ к именам функций и именам переменной---, если они не рассматривают код Microsoft, для которого MSFT услужливо предоставляет ту информацию общественности.

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

3
ответ дан tqbf 23 November 2019 в 21:45
поделиться

Я недавно попытался передать вывод по каналу одного свободного obfuscator в другой свободный obfuscator - а именно, CE Dotfuscator и новый Babel obfuscator на CodePlex. Больше деталей на моем блоге .

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

4
ответ дан harriyott 23 November 2019 в 21:45
поделиться

В течение прошедших двух дней я экспериментировал с Общественным усовершенствованным Выпуском Dotfuscator (бесплатная загрузка после регистрации основного CE, который прибывает связанный Visual Studio).

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

я пытался запутать реальный проект, который является VSTO, базирующимся в Excel, с Виртуальной Наземной интеграцией, большим количеством вызовов веб-сервиса и контейнера МОК и партия отражения. Это было невозможно.

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

5
ответ дан burnside 23 November 2019 в 21:45
поделиться

У нас есть много приложение уровня с asp.net и интерфейсом winform, который также поддерживает дистанционную работу. У меня не было проблем с использованием никакого obfuscator за исключением типа шифрования, который генерирует загрузчик, который может быть проблематичным во всех видах неожиданных путей и просто не стоить того, по-моему. На самом деле мой совет был бы больше вроде, "Стараются не шифровать тип загрузчика obfuscators как эпидемия".:)

, По моему опыту, любой obfuscator будет хорошо работать с любым аспектом .net включая asp.net и дистанционную работу, просто необходимо стать близкими с настройками и изучить, как далеко можно продвинуть его в который области кода. И не торопитесь для попытки инженерного анализа на том, что Вы получаете и видите, как он работает с различными настройками.

Мы использовали несколько за эти годы в наших коммерческих приложениях и обосновались на Специях obfuscator с 9rays.net, потому что цена является правильной, она делает задание, и у них есть хорошая поддержка, хотя нам действительно не была нужна поддержка в годах больше, но быть честным я не думаю, что она действительно имеет значение, какой obfuscator Вы используете, проблемы и кривая обучения являются всеми одинаковыми, если Вы хотите иметь ее работа правильно с дистанционной работой и asp.net.

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

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

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

6
ответ дан JohnC 23 November 2019 в 21:45
поделиться

Я попробовал почти каждый obfuscator на рынке, и SmartAssembly является лучшим, по-моему.

10
ответ дан Andrew Peters 23 November 2019 в 21:45
поделиться

Я использовал smartassembly. В основном Вы выбираете dll, и он возвращает запутываемый. Это, кажется, хорошо работает, и у меня не было проблем до сих пор. Очень, очень простой в использовании.

18
ответ дан Shawn 23 November 2019 в 21:45
поделиться

Если Ваш поиск свободного, Вы могли бы попробовать Выпуск Сообщества DotObfuscator, который идет с Visual Studio или Eazfuscator.NET .

<час>

с 29 июня 2012 , Eazfuscator.NET является теперь коммерческим. Последняя бесплатная доступная версия 3.3.

23
ответ дан 5 revs, 3 users 58% 23 November 2019 в 21:45
поделиться

Мы попробовали много obfuscators. Ни один из них не работает над большим клиент-серверным приложением, которое использует дистанционную работу. Проблема состоит в том, что клиент и сервер совместно использует некоторый dlls, и мы не нашли obfuscator, который может обработать его.

Мы попробовали DotFuscator Pro, SmartAssembly, XenoCode, Саламандру и несколько маленьких приложений времени, имена которых выходят из меня.

Откровенно говоря, я - убежденная путаница, большой взлом.

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

50
ответ дан 2 revs 23 November 2019 в 21:45
поделиться

Я также использую smartassembly. Однако я не знаю, как это работает на веб-приложение. Однако я хотел бы указать, что, если Ваше приложение использует условно-бесплатную защиту типа, удостоверьтесь, что это не проверяет лицензию с булевым возвратом. это слишком легко к трещине байта. http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx

0
ответ дан Rick Ratayczak 23 November 2019 в 21:45
поделиться

Мы используем SmartAssembly на нашем клиенте окон. Работает просто великолепно.

Действительно добавляют некоторые дополнительные проблемы также. Распечатывание Ваших имен классов в файлах/исключениях журнала должно быть de-obfuscated. И конечно не может создать класс из его имени. Таким образом, это - хорошая идея смотреть на Ваш клиент и видеть, какие проблемы можно получить путем запутывания.

1
ответ дан Carra 23 November 2019 в 21:45
поделиться

Я «по колено» в этом сейчас пытаюсь найти хорошее решение. Вот мои впечатления на данный момент.

Xenocode - У меня есть старая лицензия на Xenocode2005, которую я использовал для обфускации моих сборок .net 2.0. Он отлично работал на XP и был достойным решением. Мой текущий проект - .net 3.5, и я использую Vista, Служба поддержки посоветовала мне попробовать, но версия 2005 года даже не работает в Vista (вылетает), поэтому я и теперь вынужден покупать PostBuild2008 по невероятной цене в 1900 долларов. Это может быть хороший инструмент, но я не собираюсь выяснять. Слишком дорого.

Reactor.Net - Это гораздо более привлекательная цена, и он отлично работал с моим автономным исполняемым файлом. Модуль лицензирования тоже был хорош и сэкономил бы мне кучу усилий. К сожалению, в нем отсутствует ключевая функция, а именно возможность исключать данные из обфускации. Это делает невозможным достижение нужного мне результата (объединить несколько сборок вместе, запутать одни, не запутать другие).

SmartAssembly - Я скачал Eval для этого, и он работал безупречно. Я смог добиться всего, чего хотел, и интерфейс был первоклассным. Цена по-прежнему высока.

Dotfuscator Pro - Не удалось найти цену на веб-сайте. В настоящее время ведутся переговоры о получении цитаты. Звучит зловеще.

Confuser - проект с открытым исходным кодом, который работает довольно хорошо (чтобы сбить с толку людей, как следует из названия). https://confuser.codeplex.com/
(добавлено jgauffin)

Примечание: ConfuserEx, как сообщается, "сломан" в соответствии с проблемой № 498 в их репозитории GitHub.

43
ответ дан 23 November 2019 в 21:45
поделиться

бесплатный способ - использовать dotfuscator из Visual Studio, иначе вам придется пойти и купить обфускатор, например Postbuild ( http://www.xenocode.com/Landing /Obfuscation.aspx[114265ght)

1
ответ дан 23 November 2019 в 21:45
поделиться

Короткий ответ: вы не можете.

Существуют различные инструменты, которые усложнят чтение вашего кода для кого-то - на некоторые из них указывалось в других ответах

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

7
ответ дан 23 November 2019 в 21:45
поделиться

Вот документ от самой Microsoft. Надеюсь, это поможет ... это с 2003 года, но, возможно, все еще актуально.

2
ответ дан 23 November 2019 в 21:45
поделиться

Все зависит от языка программирования, который вы используете. Прочтите статью: Обфусцированный код

1
ответ дан 23 November 2019 в 21:45
поделиться

Вы можете использовать «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

"Профессиональная" версия продукта стоит денег, но она лучше.

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

3
ответ дан 23 November 2019 в 21:45
поделиться

Пробовал демо-версию Eziriz .... Мне понравилось. Но программное обеспечение так и не принесло.

-1
ответ дан 23 November 2019 в 21:45
поделиться

Crypto Obfuscator address all your concerns and scenarios. It :

  1. Automatically excludes types/members from obfuscation based on rules. Serialized types/fields are one of them.
  2. It can be integrated into the build process using MSBUild.
  3. Supports ASP.Net projects.
5
ответ дан 23 November 2019 в 21:45
поделиться
Другие вопросы по тегам:

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