Запутывание является одним из способов, но оно не может защитить от нарушения защиты приложения от пиратства. Как мне убедиться, что приложение не подделано, и как я могу убедиться, что механизм регистрации не может быть восстановлен?
Также возможно преобразовать приложение C # в собственный код, и Xenocode слишком дорог .
C # предоставляет множество функций и является идеальным языком для моего кода, поэтому о повторном написании всей базы кода на C ++ не может быть и речи.
Безопасные сертификаты можно легко удалить из подписанных сборок в .NET.
c#
.net
obfuscation
reverse-engineering
Peter Mortensen
источник
источник
Ответы:
Ты не можешь
Есть шаги, которые вы можете предпринять, чтобы сделать это немного сложнее, но в конечном итоге любой исполняемый файл на локальной машине можно взломать. В конечном итоге этот код необходимо преобразовать в машинный код, и каждое работоспособное приложение уязвимо.
То, что вы хотите сделать, это просто сделать его достаточно трудным для взлома, чтобы оно не стоило проблем людям.
Вот несколько советов, которые помогут вам защитить ваше приложение:
В конечном счете, если люди захотят взломать ваше приложение, они это сделают. Посмотрите на все коммерческое программное обеспечение, которое имеет огромное количество ресурсов для защиты своих приложений, и все же они взломаны еще до того, как приложения будут опубликованы.
Опытный реверс-инженер может запустить IDA-Pro и прорезать ваше приложение, как масло, независимо от того, что вы делаете. Упакованное приложение можно распаковать, а запутывание мешает ему прогуляться по парку. Вся ваша тяжелая работа со сложным лицензионным кодом может быть отменена с помощью одного байта патча.
Вам просто нужно принять тот факт, что есть очень реальный шанс, что люди собираются пиратствовать на вашем программном обеспечении. Есть некоторые люди, которые никогда не собираются платить за ваше заявление, несмотря ни на что, и это люди, о которых вам не нужно беспокоиться.
Тем не менее, существует множество компаний, которые никогда не рискнули бы судебным иском и не с удовольствием купили бы лицензии на программное обеспечение, и многие пользователи компьютеров, которые либо не хотят рисковать, либо ошибаются, либо недостаточно разбираются в технологиях для пиратства. Это ваши настоящие клиенты, и вы должны сосредоточить свои усилия на предоставлении им хорошего пользовательского опыта и не обращать внимания на тех, кто взламывает ваше программное обеспечение.
У меня раньше было пиратское заявление, и я воспринял это как личное оскорбление. Здесь я был маленьким разработчиком, вкладывающим мое сердце и душу в приложение, и эти люди имели право на пиратство от меня ?! Они брали деньги прямо из моего кармана!
Я немедленно добавил кучу драконовского кода DRM и попытался саботировать любого человека, используя незаконную или взломанную копию. Конечно, я должен был работать над улучшением своего приложения, а не пытаться остановить неизбежное. И не только это, но я причинял боль своим истинным клиентам, получая все эти дополнительные средства защиты, которые я использовал.
После долгой битвы я понял, что борюсь с потоками, и все это время было потрачено впустую. Я вытащил весь код телефона-дома, за исключением функций лицензии barebones, и никогда не оглядывался назад.
источник
Вы не можете полностью защитить любое приложение (управляемое или нет). Если такие системы, как Playstation и iPad, могут быть взломаны - где поставщик даже контролирует оборудование - на что надеется ваше приложение? К счастью, вы действительно не хотите. На мой взгляд, вам нужно защитить свое приложение настолько, чтобы кто-то не мог случайно украсть ваш продукт, и не более того.
Например, если вы используете лицензию для каждой машины, она не должна работать только при установке ее на новую вторую машину. Вам понадобится хорошее сообщение об ошибке, чтобы предотвратить дополнительные звонки в службу поддержки, но не тратьте дополнительное время на то, чтобы сделать его слишком сложным для обхода, и не ударяйте пользователей по этому поводу.
Другой пример - ограниченное по времени испытание. Даже не беспокойтесь о простых вещах, например, могут ли пользователи просто откатить системные часы. Кто-то, кто делает это, знает, что он нарушает вашу лицензию, и пока пользователь знает, когда он нарушает, вы сделали достаточно.
Вы должны сделать это много, потому что пользователи не заботятся о вашей лицензии. Лицензии - это выдуманные вещи, о которых никто не заботится, пока им это не нужно. Никто не читает их, и они действительно не должны. Поэтому лучший способ сообщить пользователю, где находятся границы, - это если стандартное поведение вашего приложения соответствует лицензии. В этом первом случае это означает, что не удалось установить или установить в режиме пробной версии во второй раз. В последнем случае это может означать проверку простой текстовой даты в файле конфигурации. В любом случае, убедитесь, что вы справляетесь с этим элегантно, полезно и с уважением.
Так что это объясняет, что это значит, просто так много. Но почему бы не пойти дальше? Почему бы не закрыть каждую маленькую дырочку, которую вы можете найти? Ответ состоит из двух частей. Во-первых, если кто-то преодолеет этический порог сознательного нарушения условий вашей лицензии - даже простым способом - он также захочет сделать что-то более сложное или опасное, например вытащить ваше приложение из потокасайт - и при запуске приложений, загружаемых из ненадежных источников, существует определенная опасность. Сложность усложняет работу этих пользователей и создает проблемы с вашими платящими клиентами. Проще говоря, это может помешать кому-то копаться в вашем приложении и выпустить более полный взлом. Во-вторых, у вас мало глаз, чтобы искать недостатки; у хакеров их много, и у них больше практики их поиска. Вам нужно пропустить только один маленький недостаток, и ваше приложение будет иметь такой же дистрибутив на пиратских сайтах, как если бы вы ничего не делали. Вы должны быть правы каждый раз; им только повезет один раз. Таким образом, требуемые усилия очень высоки, а вероятность любого показателя успеха очень низка.
В конечном счете, если кто-то хочет пиратствовать в вашем приложении (а не просто использовать его), и это является его главной целью, он это сделает. Вы ничего не можете сделать, чтобы остановить их. Это природа программного обеспечения; после того , как файлы , которые составляют ваш продукт находятся на компьютере пользователя, они будут иметь возможность делать с ними , как они хотят. Это особенно актуально в управляемых средах, таких как Java или .NET , но определенно относится и к нативному коду. Время на их стороне, и при наличии достаточного количества времени любая цифровая защита может быть взломана.
Поскольку вы не можете остановить пользователей от пиратства вашего продукта, лучше всего привлекать этот класс пользователей таким образом, чтобы он использовал их в ваших интересах. Часто можно заставить их работать на вас, а не против вас. Имея это в виду, независимо от того, какое у вас приложение, вероятно, стоит сохранить бесплатную версию, которая почти полностью функциональна и не имеет срока действия. Разница между ценой даже в 1 доллар США и бесплатной огромна, если только по той причине, что клиент не должен доверять вам свою кредитную карту. Бесплатная версия вашего продукта не только эффективно убьет пиратскую дистрибуцию (зачем рисковать пиратской версией, если вы можете быть легитимной по той же цене?), Но и может значительно расширить вашу аудиторию.
В результате вам может потребоваться увеличить цену за платную версию, так что в итоге вместо 2000 пользователей по 20 долларов у вас будет 100 000 бесплатных пользователей, из которых 500 готовы заплатить 99 долларов за «профессиональную» версию. , Это зарабатывает вам больше денег, чем если бы вы потратили кучу времени, запирая свой продукт. Более того, вы можете привлечь этих бесплатных пользователей и использовать отношения несколькими важными способами.
Одним из них является поддержка. Пессимист воспользовался бы этой возможностью, чтобы пожаловаться на возросшую стоимость поддержки 100 000 бесплатных пользователей, но вместо этого происходит нечто удивительное: ваш продукт становится в значительной степени самостоятельным. Вы видите это все время с большими проектами с открытым исходным кодом, у которых нет денег на расходы на поддержку. Пользователи подойдут и сделают это.
Как правило, бесплатные пользователи имеют заниженные ожидания от поддержки, и на то есть веские причины. Все, что вам нужно сделать, - пометить бесплатную версию как подходящую для поддержки сообщества и создать для этой цели модерируемый пользователем онлайн-форум. Ваша база знаний службы поддержки генерируется самостоятельно, и опытные пользователи будут помогать тем, кто нуждается в дополнительной поддержке от вашего имени. Что еще более важно, это позволит вам быстрее выявлять и исправлять ошибки, в конечном итоге улучшая качество вашего продукта и снижая общие расходы на поддержку. Раньше это было невозможно, потому что ваша база пользователей была недостаточно велика, но когда вы относитесь к бесплатным пользователям как к клиентам, это может работать очень хорошо.
Еще один отзыв. Наблюдая за своим форумом, вы узнаете важные идеи по улучшению, которые вы никогда не рассматривали иначе. Это может позволить вам в конечном итоге превратить больше ваших бесплатных пользователей в платных и создать более привлекательный продукт, который привлечет еще большую аудиторию.
Наконец, вам нужно рассмотреть маркетинг. Все эти бесплатные пользователи теперь являются поклонниками, а не противниками, и они будут действовать соответственно. Не только это, но когда придет время выпустить вашу следующую версию, все эти пользователи пройдут через ваш одобренный канал распространения, а не какой-то другой неизвестный механизм. Это означает, что для вашей следующей версии вы начнете общаться с более широкой, очень заинтересованной и поддерживающей аудиторией.
Лучшие функции, которые можно зарезервировать для профессиональной версии, - это инструменты, упрощающие корпоративное развертывание и управление. Взломщик не будет рассматривать их как достаточно вескую причину, чтобы взломать его для собственного использования, но для бизнеса, желающего купить 300 лицензий и распространить его по всей компании, это просто необходимо. Конечно, профессиональное издание в любом случае будет пиратским, но опять же: не волнуйтесь, потому что вы, вероятно, не сможете продать продукт тем пиратам, что бы вы ни делали, так что это не будет стоить вам никакого дохода.
Хотя психологически может быть трудно отдать свой продукт так много, надеюсь, вы сможете понять, как это действительно лучший путь. Мало того, это единственный путь в долгосрочной перспективе. Я знаю, что кто-то там думает, что он не хочет делать это таким образом. В конце концов, они просто отлично продавали свой заблокированный продукт за 20 долларов в течение многих лет. Но это очень плохо, потому что, если вы не сделаете это таким образом, в конечном итоге это сделает кто-то другой . И их продукт будет таким же хорошим, как ваш, или достаточно близким, чтобы они могли с этим смириться. Внезапно ваши цены выглядят возмутительно, продажи резко падают, и вы ничего не можете сделать. Вы можете выбрать дополнительный средний уровень, если это необходимо, но вряд ли это вам поможет.
источник
По моему опыту, усложнение взлома вашего приложения или библиотеки наносит вред вашим честным клиентам, в то время как лишь немного задерживает нечестных. Сконцентрируйтесь на создании отличного продукта с низким коэффициентом трения, вместо того, чтобы прикладывать немало усилий, чтобы отложить неизбежное.
источник
Секрет, которым вы делитесь со многими людьми, не является секретом. Если у вас есть секретный материал в вашем коде, запутывание его не является защитой; это должно быть только один раз . Если у вас есть секрет, которым вы не хотите делиться со своими клиентами, не делитесь им со своими клиентами . Напишите свой код в виде веб-службы и храните свой суперсекретный код на своем собственном сервере, где только вы можете его увидеть.
источник
Вообще говоря, есть три группы людей.
Те, кто не будет покупать ваше программное обеспечение и прибегать к взломам, или если они не найдут его, вообще не будут использовать ваше программное обеспечение. Не ожидайте, чтобы заработать деньги из этой группы. Они полагаются либо на свои собственные навыки, либо на взломщиков (которые, как правило, расставляют приоритеты по времени, в зависимости от того, насколько вы полезны и насколько велика ваша аудитория. Чем полезнее, тем скорее будет доступен кряк).
Группа законных пользователей, которые будут покупать (оплачивать) ваше программное обеспечение независимо от того, какой механизм защиты вы используете. Не усложняйте жизнь своим законным пользователям, используя сложный механизм защиты, поскольку они в любом случае будут платить за него. Сложный механизм защиты может легко испортить пользовательский опыт, и вы не хотите, чтобы это случилось с этой группой. Лично я бы проголосовал против любого аппаратного решения, которое увеличивает стоимость вашего программного обеспечения.
Меньшинство, которое прибегнет к «неэтичному» взлому и заплатит только за ваше программное обеспечение, потому что его функции защищены механизмом лицензирования. Вы, вероятно, не хотите, чтобы эта группа очень легко обходила вашу защиту. Однако все ваши усилия по защите программного обеспечения окупятся в зависимости от того, насколько велика эта группа людей. Это полностью зависит от типа программного обеспечения, которое вы создаете.
Учитывая то, что вы сказали, если вы думаете, что существует достаточно большое меньшинство, которое может быть подтолкнуто к покупке вашего программного обеспечения, продолжайте внедрять некоторую форму защиты. Подумайте о том, сколько денег вы можете заработать на этом меньшинстве по сравнению с тем временем, которое вы тратите на работу по защите, или суммой, которую вы тратите на сторонний API / инструмент защиты.
Если вам нравится реализовывать собственное решение, использование криптографии с открытым ключом является хорошим способом (в отличие от симметричных алгоритмов) для предотвращения легких взломов. Например, вы можете подписать свою цифровую подпись (серийный номер или файл лицензии). Единственный способ обойти это тогда - декомпилировать, изменять и перекомпилировать код (что можно усложнить, используя методы, подобные тем, которые предложены в ответе Симукала).
источник
Вы не можете помешать людям взломать ваше программное обеспечение.
Тем не менее, вы можете заставить их создавать трещины, которые меньше повредят вашим продажам. Генераторы ключей, которые могут выдать действительный регистрационный код для вашего программного обеспечения, намного хуже, чем простые исправления, которые удаляют стимулы регистрации из вашего программного обеспечения. Это потому, что кряк будет работать только для одной версии программного обеспечения и перестанет работать со следующим выпущенным вами обновлением программного обеспечения. Генератор ключей будет продолжать работать до тех пор, пока вы не измените алгоритм регистрации ключа, и вам не стоит часто этим заниматься, потому что это отпугнет ваших честных клиентов.
Итак, если вы ищете способ борьбы с нелегальными генераторами ключей для своего программного обеспечения и не хотите использовать ассиметричное шифрование из-за длинных кодов регистрации, которые это генерирует, вы можете взглянуть на проверку частичного ключа.
Частичная проверка ключа гарантирует, что каждый нелегальный генератор ключей работает только для одной конкретной версии вашего программного обеспечения. По сути, вы должны убедиться, что каждый выпуск вашего программного обеспечения связан только с кодом для проверки НЕКОТОРЫХ цифр регистрационного кода. Какие цифры являются случайными, поэтому взломщикам придется перепроектировать много разных версий вашего программного обеспечения и объединить все это в один генератор ключей, чтобы выпустить генератор ключей, который работает для всех версий вашего программного обеспечения.
Если вы выпускаете новые версии программного обеспечения на регулярной основе, это приводит к тому, что многочисленные генераторы ключей распространяются на все виды пиратских архивов программного обеспечения, которые больше не работают. Потенциальные пираты программного обеспечения обычно ищут кряк или кейген для последней версии, поэтому они, вероятно, попробуют некоторые из них и в конце концов сдадутся.
Я использовал Partial Key Verification в моих новых (C ++) новых условно-бесплатных играх, и это было очень эффективно. Раньше у нас было много проблем с генераторами ключей, с которыми мы не могли бороться. После этого было много кряков и несколько генераторов ключей, которые работали только для этой конкретной версии игры, но не было генератора ключей, который работал бы со всеми версиями. Мы регулярно выпускаем очень незначительные обновления игры и делаем все ранее существующие кряки бесполезными.
Кажется, есть .NET Framework с открытым исходным кодом для частичной проверки ключа , хотя я не пробовал.
источник
Используйте онлайн-обновление, чтобы заблокировать эти нелицензионные копии.
Проверьте серийный номер из разных модулей вашего приложения и не используйте один вызов функции для выполнения проверки (чтобы взломщики не могли легко обойти проверку).
Не только проверять серийный номер при запуске, выполнять проверку при сохранении данных, делать это каждую пятницу вечером, делать это, когда пользователь простаивает ...
Проверьте контрольную сумму файла приложения, сохраните контрольную сумму в разных местах.
Не заходите слишком далеко на такие уловки, убедитесь, что ваше приложение никогда не дает сбой / сбой при проверке регистрационного кода.
Создать полезное приложение для пользователей гораздо важнее, чем сделать
неразрывный бинарный файл для взломщиков.
источник
Вы можете..
Службы Microsoft SLPПрограммный потенциал InishTech позволяет защитить код без ущерба для функциональности ваших приложений.UPDATE: (Раскрытие информации: Я работаю на Eazfuscator.NET) Что делает
Microsoft SLP ServicesSoftware Потенциальный отличается способность виртуализировать код, так что вы определенно можете . Прошло несколько лет с тех пор, как вопрос был задан изначально; сегодня доступно больше продуктов, которые также работают на аналогичной основе, например:источник
.NET Reflector может открывать только «управляемый код», что в основном означает «код .NET». Таким образом, вы не можете использовать его для дизассемблирования файлов COM DLL, собственного C ++, классического кода Visual Basic 6.0 и т. Д. Структура скомпилированного кода .NET делает его очень удобным, переносимым, обнаруживаемым, проверяемым и т. Д. В .NET Reflector используются преимущества это позволяет вам вглядываться в скомпилированные сборки, но декомпиляторы и дизассемблеры ни в коем случае не являются специфическими для .NET и существуют до тех пор, пока существуют компиляторы.
Вы можете использовать обфускаторы, чтобы сделать код более трудным для чтения, но вы не можете точно предотвратить его декомпиляцию, не сделав его нечитаемым для .NET. Есть несколько продуктов (обычно дорогих), которые утверждают, что «связывают» ваше приложение с управляемым кодом в приложение с собственным кодом, но даже если они действительно работают, определенный человек всегда найдет способ.
Однако, когда дело доходит до запутывания, вы получаете то, за что платите. Поэтому, если ваш код настолько запатентован, что вы должны приложить немало усилий, чтобы защитить его, вы должны быть готовы вкладывать деньги в хороший обфускатор.
Однако за 15 лет своего написания кода я понял, что чрезмерная защита исходного кода - пустая трата времени и мало пользы. Просто попытка прочитать оригинальный исходный код без поддержки документации, комментариев и т. Д. Может быть очень трудной для понимания. Добавьте к этому бессмысленные имена переменных, которые придумывают декомпиляторы, и код спагетти, который создают современные обфускаторы - вам, вероятно, не нужно слишком беспокоиться о людях, крадущих вашу интеллектуальную собственность.
источник
Это действительно того стоит? Каждый защитный механизм может быть сломан с достаточной решимостью. Учитывайте свой рынок, цену товара, количество покупателей и т. Д.
Если вы хотите что-то более надежное, тогда идите по пути аппаратных ключей, но это довольно хлопотно (для пользователя) и дороже. Программные решения, вероятно, будут пустой тратой времени и ресурсов, и единственное, что они вам дадут, - это ложное чувство «безопасности».
Еще несколько идей (ни одна не идеальна, поскольку нет идеальной).
И не тратьте на это слишком много времени, потому что взломщики имеют большой опыт работы с типичными методами и на несколько шагов впереди вас. Если вы не хотите использовать много ресурсов, возможно, поменяйте язык программирования (сделайте это по Skype).
источник
Если вы хотите, чтобы люди могли выполнять ваш код (а если нет, то почему вы написали его в первую очередь?), То их ЦП должен иметь возможность выполнять ваш код. Чтобы иметь возможность выполнять код, процессор должен уметь его понимать .
Поскольку процессоры тупые, а люди нет, это означает, что люди также могут понимать код.
Есть только один способ убедиться, что ваши пользователи не получают ваш код: не давайте им свой код.
Это может быть достигнуто двумя способами: Программное обеспечение как услуга (SaaS), то есть вы запускаете свое программное обеспечение на своем сервере и разрешаете своим пользователям только удаленный доступ к нему. Это модель, которую использует переполнение стека, например. Я уверен, что Stack Overflow не запутывает их код, но вы не можете его декомпилировать.
Другой способ - модель устройства: вместо того, чтобы предоставлять пользователям свой код, вы предоставляете им компьютер, содержащий код. Это модель, которую используют игровые приставки, большинство мобильных телефонов и TiVo . Обратите внимание, что это работает, только если вы «владеете» всем путем выполнения: вам нужно создать свой собственный ЦП, свой компьютер, написать собственную операционную систему и свою собственную реализацию CLI . Тогда и только тогда вы сможете защитить свой код. (Но учтите, что даже небольшая ошибка сделает все ваши средства защиты бесполезными. Microsoft, Apple, Sony, музыкальная индустрия и киноиндустрия могут это подтвердить.)
Или вы можете просто ничего не делать, а это означает, что ваш код будет автоматически защищен законом об авторском праве.
источник
К сожалению, от этого не убежишь. Лучше всего написать код на C и P / Invoke .
Есть небольшая ловушка-22, кто-то может просто декомпилировать ваше приложение в CIL и уничтожить любой код проверки / активации (например, вызов вашей библиотеки C). Помните, что приложения, написанные на C, также подвергаются обратному проектированию со стороны более настойчивых хакеров (просто посмотрите, как быстро игры взламываются в наши дни). Ничто не защитит ваше приложение.
В конце концов, он работает так же, как ваш дом, достаточно хорошо защищает его, чтобы на него не затрачивались слишком много усилий (здесь помог бы спагетти-код), и чтобы нападавший просто перешел к ближайшему соседу (соревнование :)). Посмотрите на Windows Vista, должно быть 10 различных способов взломать ее.
Существуют пакеты, которые будут зашифровывать ваш EXE-файл и расшифровывать его, когда пользователю разрешено его использовать, но, опять же, это использует универсальное решение, которое, без сомнения, было взломано.
Механизмы активации и регистрации нацелены на «среднего Джо»: людей, у которых недостаточно технических знаний, чтобы обойти это (или в этом отношении знают, что они могут обойти это). Не беспокойтесь о крекерах, у них слишком много времени.
источник
Помимо защиты покупок вы (или ваши разработчики) можете научиться защищать от копирования.
Это идеи:
Сначала попробуйте написать программу, которая записывает себя в консоль. Это известная проблема. Основная цель этой задачи - попрактиковаться в написании кода, ссылающегося на себя.
Во-вторых, вам нужно разработать технологию, которая будет переписывать некоторый код так, чтобы он зависел от CIL других методов .
Вы можете написать виртуальную машину (пока в .NET ). И поместите туда немного кода. В конечном счете, виртуальная машина запускает другую виртуальную машину, которая выполняет код. Это для части редко вызываемых функций, чтобы не слишком сильно снижать производительность.
Перепишите некоторую логику в C ++ / CLI и смешайте управляемый код с неуправляемым. Это укрепит разборку. В этом случае не забудьте также предоставить двоичные файлы x64 .
источник
Да. Это правда. Код .NET чрезвычайно легко перепроектировать, если код не запутан.
Запутывание добавит слой раздражения людям, пытающимся перепроектировать ваше программное обеспечение. В зависимости от того, какую версию вы получите, вы получите разные уровни защиты.
Visual Studio включает в себя версию Dotfuscator . Так как это пакетная версия, вы точно не получите самое сильное запутывание. Если вы посмотрите на их списки функций, вы увидите, что именно вам не хватает (и что именно сделает приложение, чтобы сделать ваш код более безопасным).
Есть несколько других бесплатных или открытых источников .NET обфускаторов (но я не могу комментировать качество или различные методы, которые они используют):
В конце концов, нет ничего идеального. Если кто-то действительно хочет увидеть, как работает ваше программное обеспечение, он увидит.
источник
Ну, вы не можете ПОЛНОСТЬЮ защитить ваш продукт от взлома, но вы можете максимизировать / повысить уровень безопасности и сделать его слишком сложным для взлома новичками и промежуточными взломщиками.
Но имейте в виду, что нет ничего взломанного, только программное обеспечение на стороне сервера хорошо защищено и не может быть взломано. В любом случае, чтобы повысить уровень безопасности в вашем приложении, вы можете сделать несколько простых шагов, чтобы предотвратить взлом ваших приложений не всеми взломщиками. Эти шаги приведут в замешательство этих взломщиков и, возможно, приведут в отчаяние:
Это всего лишь простые способы предотвратить взлом вашего приложения новичками и промежуточными взломщиками. Если у вас есть больше идей для защиты вашего приложения, просто не стесняйтесь их реализовывать. Это просто усложнит жизнь взломщикам, и они будут разочарованы, и в конечном итоге они покинут ваше приложение, потому что это просто не стоит их времени.
Наконец, вам также нужно подумать о том, чтобы тратить время на написание хороших и качественных приложений. Не тратьте свое время на кодирование сложных уровней безопасности. Если хороший взломщик хочет взломать ваше приложение, он / она будет делать, что бы вы ни делали ...
А теперь иди и реализуй игрушки для крекеров ...
источник
Есть Salamander , который является родным компилятором .NET и компоновщиком от Remotesoft, который может развертывать приложения без .NET Framework. Я не знаю, насколько хорошо это соответствует его требованиям.
источник
Если Microsoft сможет найти решение, у нас не будет пиратских версий Windows, поэтому нет ничего особо безопасного. Вот несколько похожих вопросов из Stack Overflow, и вы можете реализовать свой собственный способ их защиты. Если вы выпускаете разные версии, вы можете использовать разные методы для разных версий, так что к тому времени, когда первая из них взломана, вторая может вступить во владение.
Управление функциями на основе лицензии для приложения C ++
Защитите файл DLL с помощью файла лицензии
Лицензирование / защита программного обеспечения?
источник
.NET Reactor
Обновить
Джаред отметил, что de4dot утверждает, что может его декомпилировать.
источник
Вот одна из идей: у вас может быть сервер, размещенный вашей компанией, к которому должны подключаться все экземпляры вашего программного обеспечения. Недостаточно просто подключить их и подтвердить регистрационный ключ - они просто снимают чек. В дополнение к проверке ключа необходимо также, чтобы сервер выполнял некоторые важные задачи, которые клиент не может выполнить сам, поэтому его невозможно удалить. Это, конечно, вероятно, будет означать много тяжелой обработки со стороны вашего сервера, но это будет затруднять кражу вашего программного обеспечения, и если у вас есть хорошая схема ключей (проверка владения и т. Д.), Ключи также будет трудно украсть. Это, вероятно, более инвазивно, чем вы хотите, так как это потребует подключения ваших пользователей к Интернету для использования вашего программного обеспечения.
источник
Все, что работает на клиенте, может быть декомпилировано и взломано. Обфусификация только усложняет. Я не знаю ваше заявление, но в 99% случаев я просто не думаю, что оно того стоит.
источник
Извините, невозможно полностью защитить приложение.
источник
Запутать код! В Обфусцирующем коде C # есть пример .
источник
Имейте в виду, что 99% ваших пользователей не будут заинтересованы в изучении вашего исполняемого файла, чтобы увидеть, как он работает.
Учитывая, что очень немногие люди даже потрудятся попробовать и что с большинством обфускаторов можно обойтись, стоит ли это вашего времени и усилий?
Вы бы лучше потратили время на улучшение своего продукта, чтобы больше людей захотело им пользоваться.
источник
Просто добавьте предупреждение: если вы собираетесь использовать запутывание, проверьте, что все еще работает! Запутывание может изменить такие вещи, как имена классов и методов. Поэтому, если вы используете рефлексию для вызова определенных методов и / или классов (как в плагин-архитектуре), ваше приложение может потерпеть неудачу после запутывания. Также трассировки стека могут быть бесполезны для отслеживания ошибок.
источник
Если он написан на .NET и скомпилирован в CIL , это может быть отражено. Если безопасность является проблемой, и следует избегать запутывания, то я рекомендую написать ваше приложение с использованием неуправляемого языка, который по своей природе труднее реконструировать.
источник
У обоих одинаковый очень простой ответ: не передавайте объектный код ненадежным сторонам, таким как (очевидно) вашим клиентам. Возможно ли разместить приложение на ваших машинах, зависит только от того, что оно делает.
Если это не веб-приложение , возможно, вы можете разрешить вход в SSH с пересылкой X на сервер приложений (или , как мне кажется, для подключения к удаленному рабочему столу для Windows).
Если вы дадите объектный код людям типа «всезнайка», и они думают, что ваша программа может быть забавной, она будет взломана. Обойти это невозможно.
Если вы мне не верите, обратите внимание на громкое приложение, которое не было взломано и пиратским.
Если вы используете аппаратные ключи, это сделает производство более дорогим, и ваши пользователи будут ненавидеть вас за это. Это настоящая сука, ползущая по полу, подключающая и отключающая ваши 27 разных USB-фишек, потому что производители программного обеспечения не доверяют вам (я полагаю).
Конечно, можно обойти тест «can-I-use-it», чтобы он всегда возвращал значение true.
Гадкий трюк может заключаться в том, чтобы использовать байтовые значения кодов операций, которые выполняют тест в другом месте программы, грязным способом, который приведет к аварийному завершению программы, если только это значение не является правильным. Это делает вас связанным с определенной архитектурой, хотя :-(
источник
Просто сделайте хорошее приложение и закодируйте простую систему защиты. Неважно, какую защиту вы выберете, она будет полностью изменена ... Так что не тратьте слишком много времени / денег.
источник
Когда дело доходит до .NET, если вы выпускаете приложение Windows Forms (или любое приложение, в котором у клиента есть файл Portable Executable), оно может быть взломано.
Если вы хотите придерживаться .NET и минимизировать вероятность получения исходного кода, то вы можете рассмотреть возможность его развертывания в качестве приложения ASP.NET на веб-сервере вместо создания приложения Windows Forms.
источник
Честно говоря, иногда нам нужно запутывать код (например, регистрировать классы лицензий и так далее). В этом случае ваш проект не является бесплатным. ИМО, ты должен заплатить за хороший обфукатор.
Dotfuscator скрывает ваш код, а .NET Reflector выдает ошибку при попытке декомпиляции.
источник
Я могу рекомендовать использовать Обфускатор .
источник