Какой язык защитит мой исходный код? - PullRequest
4 голосов
/ 26 ноября 2009

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

Какие у меня варианты?

Редактировать: Я ищу что-то, что можно декомпилировать только в сборку. Например, Delphi нельзя декомпилировать как C # или Java, но, как я слышал, Delphi умирает.

Ответы [ 19 ]

30 голосов
/ 26 ноября 2009

Дельфи не умирает, он жив и здоров.

Как и сообщество, на delphifeeds .
Вы также можете увидеть больше Delphi проектов, бесплатных, условно-бесплатных и коммерческих на Delphi Wikia .

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

Обновление: 1 сентября 2011 года Embarcadero выпустила Rad Studio XE2 . Этот релиз добавляет 64-битную компиляцию, Livebindings, компиляцию в Native Mac OSX, IOS (через XCode) и многое другое в и без того мощную среду разработки Delphi.

22 голосов
/ 26 ноября 2009

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

Однако вы можете усложнить его, пропустив код через обфускатор.

19 голосов
/ 26 ноября 2009

Я бы предложил язык business и economics , чтобы защитить вашу программу.

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

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

Наконец, каковы затраты / выгоды защиты вашего кода? Если вы пишете свою программу в сборке вместо C #, у вас могут быть гораздо более высокие производственные затраты при одновременном снижении вероятности обратного проектирования. Однако перевешивает ли эта стоимость потенциальные потери продаж? Может ли это время быть лучше потрачено на добавленную стоимость для людей, которые будут покупать продукт? Как правило, попытка продать свой продукт людям, которые никогда не платят за программное обеспечение, не является экономической стратегией.

13 голосов
/ 26 ноября 2009

Вы можете написать это на Perl.

(Я шучу, я шучу! Положи вилы!)

12 голосов
/ 26 ноября 2009
  1. Как говорили другие, Delphi НЕ умирает.
  2. Как говорили другие, существует нет пуленепробиваемый метод.
  3. Как говорили другие, существуют инструменты, которые значительно усложняют жизнь взломщику.

Но другие не сказали:

  1. Обфускация Java, .NET (и т. Д.) - это скорее игрушка по сравнению с игрушками для запутывания, например. Delphi и другие нативные решения. (конечно же YMMV) * ​​1016 *
  2. Очень хорошая технология для относительно защиты вашего исполняемого файла может быть найдена здесь .
8 голосов
/ 26 ноября 2009

Повторяйте за мной: «Непрозрачность - это не безопасность».

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

7 голосов
/ 26 ноября 2009

Разве это не логически невозможно?

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

4 голосов
/ 26 ноября 2009

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

3 голосов
/ 26 ноября 2009

«Я ищу что-то, что можно декомпилировать только в сборку».

Попробуйте написать свою программу на ассемблере. Это лучшее из возможных решений.

2 голосов
/ 04 июля 2010

если вы действительно беспокоитесь о том, что люди разбирают ваше программное обеспечение, сделайте ваше программное обеспечение сервисом (SaaS) http://en.wikipedia.org/wiki/Software_as_a_service

...