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

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

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

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

Ответы [ 19 ]

1 голос
/ 26 ноября 2009

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

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

1 голос
/ 26 ноября 2009

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

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

1 голос
/ 26 ноября 2009

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

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

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

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

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

1 голос
/ 26 ноября 2009

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

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

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

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

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

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

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

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

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

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

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

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

Например. см. этот исследовательский проект об обфускации кода Java.

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

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

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

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

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

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

...