Защищать .NET-код от обратного инжиниринга?

Просто для удовольствия:

from time import strptime

strptime('Feb','%b').tm_mon
475
задан 6 revs, 5 users 53% 24 February 2013 в 08:47
поделиться

31 ответ

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

2
ответ дан 2 revs, 2 users 50% 24 February 2013 в 19:47
поделиться

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

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

, Если это не веб-приложение , возможно, можно допускать вход в систему SSH с X передачами серверу приложений (или Соединение Удаленного рабочего стола , я предполагаю для Windows).

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

, Если Вы не верите мне, укажите на высококлассное приложение, которое не было взломано и ограблено.

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

существуют пакеты там, которые зашифруют Ваш EXE и дешифруют его, когда пользователю разрешат использовать его

, Конечно, путь вокруг этого состоит в том, чтобы взломать тест "can-I-use-it" так, чтобы он всегда возвратил true.

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

2
ответ дан 3 revs, 3 users 58% 24 February 2013 в 19:47
поделиться
  • 1
    Должен быть отмечен, что %N только показывает число вкладки в gui энергии. Если Вы имеете set guioptions-=e или используете терминальную энергию, то %N, кажется, представляет количество окон (разделения), открытые на вкладке а НЕ числе вкладки. См. h setting-tabline или этот github.com/mkitt/tabline.vim – overthink 31 October 2013 в 01:26

Вы не можете.

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

то, Что Вы хотите сделать, просто мешают достаточно для взламывания для создания его не стоящим проблемы народов.

Некоторые предложения я имею, чтобы Вы помогли защитить свое приложение:

  • Запутывают Ваш код. Dotfuscator имеет свободный выпуск и идет с Visual Studio.
  • Использование общественность/закрытый ключ или асимметричное шифрование для генерации лицензий на продукты. Это гарантирует, что только можно генерировать коды лицензий. Даже если Ваше приложение взломано, можно быть уверены, что они не будут выпускать ключевой генератор для приложения, потому что невозможно инвертировать ключевой генерирующийся алгоритм.
  • Использование сторонний упаковщик для упаковки исполняемого файла.NET в зашифрованное приложение обертки Win32. Themida является одним из лучших. Это мешает людям отразить Ваше приложение в Отражатель.NET и делает это болью для распаковки для инвертирования.
  • Запись Ваше собственное пользовательский упаковщик . Если сторонние упаковщики являются слишком дорогими, рассматривают запись Вашего собственного. Иногда пользовательские упаковщики могут быть очень эффективными, потому что нет хорошо опубликованных методов о том, как распаковать их. Учебное руководство , Как записать Вашему собственному упаковщику , дает тонну хорошей информации о записи Вашего собственного упаковщика Win32.

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

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

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

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

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

я сразу добавил в наборе драконовского кода DRM и попытался саботировать любого человека, использующего незаконную или взломанную копию. Я должен был, конечно, работать над подаванием моей заявки лучше вместо того, чтобы пытаться остановить неизбежность. Не только, что, но и я повреждал мой верный , клиенты будут вся эта дополнительная защита, которую я включал.

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

656
ответ дан 13 revs, 5 users 68% 24 February 2013 в 19:47
поделиться
  • 1
    При использовании Spring 3.2 или позже Вы могли бы хотеть посмотреть на Janning' s ответ. ( AnnotationMethodHandlerAdapter теперь удерживается от использования.) – Codo 22 April 2014 в 04:55

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

2
ответ дан 2 revs, 2 users 67% 24 February 2013 в 19:47
поделиться

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

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

Так, при поиске метода для борьбы с недопустимым keygenerators за программное обеспечение и Вы не хотите использовать assymetric шифрование из-за длинных регистрационных кодов, которые это генерирует, Вы могли бы взглянуть на Частичную Ключевую Проверку.

Частичная Ключевая Проверка удостоверяется, что каждый недопустимый keygenerator работает только на один конкретный релиз Вашего программного обеспечения. В основном то, что Вы делаете, должно удостовериться, что каждый релиз Вашего программного обеспечения только связывается с кодом для проверки НЕКОТОРЫХ цифр регистрационного кода. Который цифры точно случаен, таким образом, взломщики должны были бы перепроектировать много различных версий Вашего программного обеспечения и объединить все это в один keygenerator для выпуска keygenerator, который работает на все версии программного обеспечения.

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

я использовал Частичную Ключевую Проверку в моем (C++) более новые условно-бесплатные игры, и это было очень эффективно. Прежде чем у нас было много проблем с keygenerators, с которым мы не могли бороться. Afterewards там были большим количеством трещин и нескольких keygenerators, которые работали только на ту конкретную версию игры, но никакой ключевой генератор, который будет работать со всеми версиями. Мы регулярно выпускали очень незначительные обновления игры и представлять все ранее существующие бесполезные трещины.

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

19
ответ дан 2 revs 24 February 2013 в 19:47
поделиться

Вообще говоря существует три группы людей там.

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

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

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

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

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

23
ответ дан 7 revs, 2 users 87% 24 February 2013 в 19:47
поделиться
  • Использование онлайн обновляют для блокирования тех нелицензированных копий.

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

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

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

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

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

16
ответ дан 5 revs, 2 users 94% 24 February 2013 в 19:47
поделиться

Существует Саламандра , который является собственным компилятором.NET и компоновщиком от Remotesoft, который может развернуть приложения без платформы.NET. Я не знаю, как хорошо это соответствует своим требованиям.

5
ответ дан Matthew Olenik 24 February 2013 в 19:47
поделиться

Реактор.NET

Обновление

Jared указал, что de4dot утверждает, что смог декомпилировать его.

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

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

5
ответ дан 2 revs 24 February 2013 в 19:47
поделиться

К сожалению, Вы не собираетесь убегать из этого. Ваш лучший выбор состоит в том, чтобы написать Ваш код в C и P/Invoke это.

существует маленькая уловка - 22, кто-то мог просто декомпилировать Ваше приложение к CIL и уничтожить любой код проверки/активации (например, вызов к Вашей библиотеке C). Помните, что приложения, которые записаны в C, также перепроектированы более персистентными хакерами (просто взгляд на то, как быстрые игры взламываются в эти дни). Ничто не защитит Ваше приложение.

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

существуют пакеты там, которые зашифруют Ваш EXE-файл и дешифруют его, когда пользователю разрешат использовать его, но еще раз, который использует универсальное решение, которое не сомневается взломанный.

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

8
ответ дан 2 revs, 2 users 57% 24 February 2013 в 19:47
поделиться
  • 1
    Mmm... I' m ищущий больше универсального решения проблемы. Так, чтобы КАЖДЫЙ процесс (не только нечто), который вызывает функцию окон get' s верный вместо лжи. – Clark Gaebel 17 May 2009 в 12:10

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

Это идеи:

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

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

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

Переписывают некоторую логику в C++ / CLI и смешивают управляемый код с неуправляемым. Это укрепит разборку. В этом случае не забывайте обеспечивать двоичные файлы x64 также.

8
ответ дан 2 revs, 2 users 74% 24 February 2013 в 19:47
поделиться
  • 1
    Тогда необходимо разъяснить это в вопросе. Вы спросили, как сцепиться в " нечто exe" и это делает это. – xian 17 May 2009 в 12:16

Вы можете..

<забастовка> Microsoft SLP Services Потенциал программного обеспечения InishTech предложения способность помочь защитить код, не влияя на функциональность Ваших приложений.

ОБНОВЛЕНИЕ: (Раскрытие: Я работаю над Eazfuscator.NET) , Что делает <забастовка> Microsoft SLP Services , Потенциал программного обеспечения отличающийся является способностью виртуализировать код, таким образом, Вы определенно можете . Несколько лет передали, так как вопрос первоначально задали; сегодня существует больше продуктов, доступных, которые также работают на подобной основе, такой как:

14
ответ дан 7 revs, 4 users 36% 24 February 2013 в 19:47
поделиться
  • 1
    Но обходы работают через процессы? – Clark Gaebel 17 May 2009 в 12:01

Это действительно стоит того? Каждый механизм защиты может быть поврежден с достаточным определением. Рассмотрите свой рынок, цену продукта, количество клиентов, и т.д.

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

еще Немного идей (ни один не прекрасен, как существуют, не совершенствуют один).

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

9
ответ дан 3 revs, 3 users 46% 24 February 2013 в 19:47
поделиться

ответ на ответ больше чем с 600 голосами: "Вы не можете".;

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

политические деятели затем схематизированы как часть производства; в котором их корпус происходит путем развязывания обязанности продолжительности жизни, которая является результатом их присутствия, с имеют дело социальные культуры;

конфликт для знания, кто Lex Luthor \Супермен в интересах этих социальных наложений;

" Вы не можете".

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

0
ответ дан 29 August 2019 в 08:17
поделиться

Это невозможно к полностью безопасному приложение, извините.

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

Когда дело доходит до.NET при выпуске приложения Windows Forms (или любое приложение, где у клиента есть Портируемый исполняемый файл), он может быть взломанным.

Если Вы хотите придерживаться.NET и хотеть свести к минимуму вероятность того, чтобы брать Ваш исходный код, то можно хотеть рассмотреть развертывание его как приложение ASP.NET через веб-сервер, вместо того, чтобы делать его приложением Windows Forms.

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

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

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

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

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

Вы не можете полностью безопасный никакое приложение (управляемый или не). Если системы как PlayStation и iPad могут быть взломаны — где поставщик даже управляет аппаратными средствами — какую надежду Ваше приложение имеет? К счастью Вы действительно не хотите. По-моему, необходимо защитить приложение как раз, что кто-то не может случайно пиратский продукт, и не больше.

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

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

Необходимо сделать это очень, потому что пользователи не заботятся о лицензии. Лицензии являются искусственными вещами, о которых никто не заботится о том, пока они не должны. Никто не читает их, и они действительно не должны иметь к. Поэтому лучший способ сказать пользователю, где границы, состоит в том, если out-of-the-box поведение для Вашего приложения выполняет лицензию. В этом первом случае, который означает или не удающийся установить или устанавливающий в режиме пробной версии во второй раз. Для последнего это могло бы просто означать проверять дату простого текста в конфигурационный файл. Так или иначе удостоверьтесь, что Вы обрабатываете его изящным, полезным, и почтительным способом.

Таким образом, это объясняет, что это означает, делают просто так много. Но почему бы не пойти дальше? Для почему бы не затыкания каждой небольшой дыры, можно ли найти? Ответ находится в двух частях. Во-первых, если кто-то пересечет этический порог сознательного повреждения Ваших условий лицензионного соглашения — даже простым способом — они также будут готовы сделать что-то более трудное или опасное как получение по запросу Ваше приложение от сайта потока — и существует определенное количество опасности, вовлеченной в запущенные приложения, загруженные из недоверяемых источников. Создание его немного тяжелее является только незначительным раздражением для этих пользователей и рискует вызывать проблемы с Вашими платящими клиентами. Хранение его простой может препятствовать тому, чтобы кто-то рыл в Ваше приложение и выпустил более всестороннюю трещину. Во-вторых, Вы имеете немного глаз в наличии для поиска дефектов; у хакеров есть многие, и у них есть больше практики, находящей их. Только необходимо пропустить тот мало дефекта, и приложение будет иметь то же распределение на пиратских сайтах, как будто Вы ничего не сделали. Необходимо быть правы каждый раз; они только должны быть удачными однажды. Таким образом, требуемое усилие очень высоко, и вероятность любой меры успеха является очень низкой.

В конечном счете, если кто-то захочет пирату Ваше приложение (в противоположность просто использованию его), и это - их главная цель, то они будут. Нет ничего, что можно сделать для остановки их. Это - природа программного обеспечения; после того как файлы, которые составляют Ваш продукт, находятся на компьютере пользователя, который они смогут сделать с ними, как они желают. Это особенно релевантно в управляемых средах как Java или.NET, но это определенно относится к собственному коду также. Время находится на их стороне, и, учитывая достаточное количество времени может быть повреждена любая цифровая безопасность.

Так как Вы не можете мешать пользователям грабить Ваш продукт, Ваш лучший план действий должен участвовать, этот класс пользователя способом использует их для Вашего преимущества. Часто возможно получить их работающий на Вас, а не против Вас. Имея это в виду, каково Ваше приложение, это, вероятно, стоит того для хранения бесплатной версии, которая почти абсолютно функциональна и не истекает. Разница даже между ценой в размере 1 доллара США и свободный огромна, если ни по какой другой причине, чем которая клиент не должен доверять Вам их кредитную карту. Свободный выпуск Вашего продукта не только эффективно уничтожит ограбленное распределение (почему рискуют пиратская версия, когда можно быть законными за ту же цену?), это имеет потенциал для существенного расширения аудитории.

Результат состоит в том, что Вы, возможно, должны увеличить цену выпуска для платы, так, чтобы в конце вместо 2 000 пользователей на уровне 20$ каждый у Вас было 100 000 свободных пользователей, из которых 500 готовы заплатить 99$ за "профессиональный" выпуск. Это зарабатывает для Вас больше денег чем при расходах набора времени, заперев продукт. Больше, чем это, можно привлечь этих свободных пользователей и усилить отношения несколькими важными способами.

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

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

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

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

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

В то время как в психологическом отношении может быть трудно отдать Ваш продукт это очень, надо надеяться, можно понять, как это действительно - лучший способ пойти. Не только, что, это - единственный способ пойти в длительный срок. Я знаю, что кто-то там думает, что они не хотят делать это этот путь. В конце концов, они имеют, очень хорошо продавая их вниз заблокированный продукт за 20$ в течение многих лет. Но это просто слишком плохо, потому что, если Вы не делаете этого этот путь, в конечном счете кто-то еще будет. И их продукт будет так же хорош как Ваш, или достаточно близко им может сойти с рук требование этого. Затем внезапно Ваша оценка выглядит возмутительной, отбрасывание продаж существенно, и нет ничего иного, что можно сделать. Можно выбрать дополнительный средний уровень, если Вы должны, но он вряд ли поможет Вам.

264
ответ дан 22 November 2019 в 22:45
поделиться

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

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

Честно говоря, иногда нам нужно запутать код (например, зарегистрировать классы лицензий и так далее). В этом случае ваш проект платный. ИМО, за хороший обфукатор надо платить.

Dotfuscator скрывает ваш код, а .NET Reflector показывает ошибку при попытке декомпилировать его.

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

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

38
ответ дан 22 November 2019 в 22:45
поделиться

Обфусцируйте код! Есть пример в Обфускация кода C#.

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

Я могу порекомендовать использовать Obfuscator .

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

.NET Reflector может открывать только «управляемый код», что в основном означает «код .NET». Таким образом, вы не можете использовать его для дизассемблирования файлов COM DLL, собственного кода C ++, классического кода Visual Basic 6.0 и т. Д. Структура скомпилированного кода .NET делает его очень удобным, переносимым, обнаруживаемым, проверяемым и т. Д. .NET Reflector использует это преимущество, чтобы вы могли заглядывать в скомпилированные сборки, но декомпиляторы и дизассемблеры никоим образом не специфичны для .NET и существуют с тех пор, как существуют компиляторы.

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

Однако когда дело доходит до обфускации, вы получаете то, за что платите. Так что, если ваш код настолько несвободен, что вы должны пойти на все, чтобы защитить его, вы должны быть готовы вложить деньги в хороший обфускатор.

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

10
ответ дан 22 November 2019 в 22:45
поделиться

Если вы хотите, чтобы люди могли запускать ваш код (а если вы этого не сделаете, то зачем вы его вообще написали?), То их ЦП должен иметь такую ​​возможность. для выполнения вашего кода. Чтобы иметь возможность выполнить код, ЦП должен быть в состоянии понимать его.

Поскольку процессоры глупы, а люди - нет, это означает, что люди также могут понимать код.

Есть только один способ убедиться, что ваши пользователи не получат ваш код: не давайте им свой код.

Этого можно добиться двумя способами: Программное обеспечение как услуга (SaaS), то есть вы запускаете свое программное обеспечение на своем сервере и позволяете только своим пользователям получать к нему удаленный доступ. Это модель, которую использует, например, Stack Overflow. Я почти уверен, что Stack Overflow не запутывает их код, но вы не можете его декомпилировать.

Другой способ - это модель устройства: вместо того, чтобы давать пользователям свой код, вы даете им компьютер, содержащий этот код. Это модель, которую используют игровые приставки, большинство мобильных телефонов и TiVo . Обратите внимание, что это работает только в том случае, если вы «владеете» всем путем выполнения: вам нужно создать свой собственный ЦП, свой собственный компьютер, написать собственную операционную систему и свою собственную реализацию CLI . Тогда и только тогда вы сможете защитить свой код. (Но учтите, что даже самая крошечная ошибка сделает все ваши средства защиты бесполезными. Microsoft, Apple, Sony, музыкальная индустрия и киноиндустрия могут подтвердить это.)

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

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

Помните, что 99% + ваших пользователей не будут заинтересованы в изучении вашего исполняемого файла, чтобы увидеть, как он работает.

Учитывая, что так мало людей даже потрудятся попробовать и что большинство обфускаторов можно обойти, стоит ли это вашего времени и усилий?

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

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

Просто чтобы добавить предупреждение: если вы собираетесь использовать обфускацию, убедитесь, что все по-прежнему работает! Обфускация может изменить такие вещи, как имена классов и методов. Поэтому, если вы используете отражение для вызова определенных методов и / или классов (например, в архитектуре плагина), ваше приложение может выйти из строя после обфускации. Также трассировки стека могут быть бесполезны для отслеживания ошибок.

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

Да. Это правда. Код .NET очень легко подвергается обратной разработке, если код не обфусцирован.

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

Visual Studio включает версию Dotfuscator. Поскольку это поставляемая версия, вы определенно не получите самую сильную обфускацию из возможных. Если вы посмотрите на их списки функций, вы увидите, чего именно вам не хватает (и что именно сделает приложение, чтобы сделать ваш код более безопасным).

Существует еще несколько бесплатных обфускаторов .NET с открытым исходным кодом (но я не могу комментировать их качество или различные методы, которые они используют):

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

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

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

3
ответ дан 22 November 2019 в 22:45
поделиться
Другие вопросы по тегам:

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