Защитники кода ORM и .NET - PullRequest
       44

Защитники кода ORM и .NET

0 голосов
/ 22 сентября 2009

Мы собираемся использовать средства защиты кода (Obsfucation, а также Native Compilation), я предполагаю, что ORM будут немного зависеть от Reflection, и я беспокоюсь, не создадут ли проблемы методы защиты Obsfucation и Native Compilation?

Кто-нибудь пробовал успешные ORM и Code Protection для любого хорошего настольного приложения? У нас есть приложение для рабочего стола WPF.

Нашим основным языком разработки является C #, и мы используем наш пользовательский ORM, но я также хочу оценить любой коммерческий ORM или ADO.NET EF и т. Д.

Вопрос не в том, что такое защита кода и какую я должен использовать, я пытаюсь спросить о влиянии защиты на ORM.

Ответы [ 3 ]

0 голосов
/ 23 сентября 2009

Redgate приобрел Smart Assembly не так давно, на что я бы обратил внимание, если бы мне это понадобилось.

Некоторое время назад я попробовал CodeViel, чтобы с некоторой степенью успеха взглянуть на запутывание / шифрование кода. Я думаю, что если вы серьезно относитесь к этому, это не так просто, как сбросить сборку на одном конце и получить защищенную сборку. Вам нужно будет рассмотреть части вашего кода (т. Е. Пространства имен, классы, методы, поля, свойства, структуры, события и ресурсы), которые предназначены только для внутреннего использования, и те, которые должны быть доступны другим ресурсам и библиотекам. В том случае, когда я смотрел, я мог зашифровать (или использовать собственную компиляцию), чтобы скрыть некоторые реализации методов, но оставил определение класса (имя, методы, свойства нетронутыми). В некоторых случаях я не затрагивал целые пространства имен, поскольку они содержали только простые объекты POCO, необходимые для других библиотек.

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

0 голосов
/ 24 ноября 2009

Если ваш код использует Reflection, скорее всего, запутанная сборка не будет работать. Вам нужно будет исключить из обфускации тех объектов, на которые ссылается их оригинальное имя. Взгляните на Crypto Obfuscator , который проанализирует ваш код во время запутывания и покажет все методы и номера строк, где вызываются потенциально нарушающие методы (такие как Reflection). Это огромная экономия времени, поскольку она точно определяет точное местоположение и помогает определить свойства / классы, которые необходимо исключить из переименования.

0 голосов
/ 23 сентября 2009

Попробуйте .Net Reactor. Доступный в http://www.eziriz.com/

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

Приветствия

...