2009-11-25 4 views
4

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

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

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

+27

При всем уважении, в то время как я понимаю ваше желание для защиты, я не думаю, что это будет работать. Люди, которые взломают программное обеспечение, разобрали его и выяснили, где положить крючки, которые нарушают вашу систему регистрации. Если они смогут сделать это с большими именами, которые инвестируют миллионы в меры по борьбе с пиратством, к сожалению, они смогут это сделать с вами. Не говоря, что мне нравится эта ситуация, заметьте, но это то, что есть. :( –

+6

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

+1

Если это возможно, сделайте свое программное обеспечение веб-сайтом. Зарабатывайте платежеспособных клиентов, предоставляя отличный сервис по разумной цене. И не бойтесь предлагать бесплатную версию, чтобы привлечь внимание. Компьютеры упрощают копирование контента, что, в свою очередь, повышает ценность отдельных копий ближе и ближе к нулю. Стоимость копий находится на рекордно низком уровне - глупо было бы заниматься продажей копий. – leepowers

ответ

21

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

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

+0

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

+2

Maciek: вам нужно управлять оборудованием, как iPhone, Xbox, .... и TPM - это аппаратная штука. Для этого вам нужно полагаться на такие функции процессора, как ARM TrustZone. –

7

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

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

+0

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

+1

Вы не можете запретить умным людям расшифровывать инструкции, на некотором уровне «умные люди» смогут увидеть набор команд, если они смогут увидеть набор команд, которые они могут изменить. Если они могут изменить его, они могут изменить способ его работы, например, в обход безопасности. –

4

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

+2

На самом деле, они не захотят декомпилировать его, поскольку машинный код raw hex гораздо читабельнее, чем несколько языков, которые я мог бы назвать. Собственно, если вы закодировали это на языке, таком как Intercal, он автоматически был бы запутан. –

+0

Мех, попытался наполнить какую-нибудь комедию: p –

0

Весь код можно прочитать в сборке. Кто-то может перепроектировать ваше приложение и посмотреть, что делает машина.

0

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

Или используйте C/C++. Их можно разобрать, но это все.

Конечно, этого достаточно, чтобы не допустить, чтобы недостаточно компетентные люди понимали и перепроектировали код.

0

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

Например. см. this research project о запуске Java-кода.

+0

Ссылка была удалена. – User

1

Как сказал Доминик, если вы можете его запустить, его можно декомпилировать.

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

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

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

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

+0

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

+0

Правда, но это начинает становиться очень философским - вы можете спросить, почему кто-то покупает MP3-файлы из iTunes, когда они могут просто получить их бесплатно (замок уже сломан) и т. Д. Как говорится в старой поговорке, блокировки на самом деле не сохраняют воры, они держат честных людей честными :) – Chirael

+0

Я подозреваю, что единственная причина, по которой люди из MP3 из iTunes - это то, что им промыли мозги, думая, что война распространения СМИ не выиграла открытое сообщество. «Derrr, я думаю, музыкальная индустрия владеет Интернетом ..» –

0

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

Например, я не слышал о каких-либо успешных попытках отменить разработку Skype.

+3

Есть ли определенный аспект Skype, о котором вы говорите? Несколько месяцев назад я редактировал Skype exe, чтобы позволить мне запускать сразу несколько экземпляров клиента. – marco0009

+0

Кто-нибудь обратный инженерный протокол skype? –

+0

http://www1.cs.columbia.edu/~salman/skype/ - Выбивай себя :) – marco0009

1

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

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

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

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

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

19

Я предлагаю язык и экономика может защитить вашу программу.

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

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

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

+3

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

3

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

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

+0

Если вы напишете его на ассемблере, мой опыт в том, что ваши намерения легче понять. Скомпилированный код сложнее понять. –

8

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

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

+1

Поскольку все алгоритмы шифрования в конечном итоге должны будут генерировать код, который может быть выполнен в памяти, все, что они делают для «защиты», - это дать крекерам больше лица, когда они взломают его. ** КОГДА ** они взламывают его, заметьте, а не **, если **. –

31

Delphi не умирает, это жив здоров.

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

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

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

1

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

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

11
  1. Как говорили другие, Delphi NOT умирает.
  2. Как говорили другие, есть нет пуленепробиваемый способ.
  3. Как говорили другие, есть инструменты, чтобы сделать жизнь крекера намного сложнее.

Но то, что другие не сказать:

  1. Java, .NET (и т.д.) запутывания скорее игрушка по сравнению с запутывания игрушками, например. Delphi и другие собственные решения. (конечно, YMMV)
  2. Очень хорошая технология для относительно защита вашего исполняемого файла может быть найдена here.
+0

«Дельфи не умирает» Я ненавижу быть носителем плохих новостей: http://pypl.github.io/PYPL.html – Alexander

1

Очень просто:

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

12

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

(я обманываю, я обманываю! Опусти вилы!)

0

Вы всегда можете написать его в APL. Вы можете доставить источник, и никто не сможет его понять.

+0

Современный подход - использовать J. –

Смежные вопросы