Как защитить свой программный код?

Возможные дубликаты:
Как вы защищаете свое программное обеспечение от незаконного распространения?
Лучшие методы предотвращения копия программного обеспечения

Гипотетическая ситуация:

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

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

Если я хочу продать этот продукт, какова гарантия, что кто-то намного умнее меня перепроектирует все это и создаст лучший продукт?

Сейчас я думаю о фрагментации всего кода. Добавление большого количества избыточного кода и тонны комментариев.

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


person Community    schedule 03.03.2010    source источник
comment
Люди одержимы такими вещами.   -  person ChaosPandion    schedule 03.03.2010
comment
Может помочь, если вы укажете, с каким языком вы работаете ...   -  person David Johnstone    schedule 03.03.2010
comment
Я запираю его в ящике комода. рядом с моими носками. Этот путь защищен и теплый.   -  person Sky Sanders    schedule 03.03.2010
comment
Только не спрашивай меня, почему я запираю носки ... Я мог бы тебе сказать, но тогда мне придется убить тебя.   -  person Sky Sanders    schedule 03.03.2010
comment
@Sky - Почему ты закрываешь ноги?   -  person ChaosPandion    schedule 03.03.2010
comment
@ChaosPandion: очевидно, чтобы они не сбежали.   -  person Jimmy    schedule 03.03.2010
comment
Множество дубликатов: stackoverflow.com/questions/109997/, stackoverflow.com/questions/995651/, stackoverflow.com/questions/1473143/, stackoverflow.com/questions/1700567/   -  person gnovice    schedule 03.03.2010
comment
@Sky: ящик для носков? Какой глупый ответ. Все знают, что это ПЕРВОЕ место, куда они будут смотреть. Поместите его в морозильную камеру под поддон для кубиков льда.   -  person Larry Lustig    schedule 05.03.2010
comment
Этот дубликат, похоже, больше не существует: stackoverflow.com/questions/109997/   -  person Serge Rogatch    schedule 03.03.2016


Ответы (13)


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

Так что гораздо более вероятно, что они посмотрят на ваше приложение и подумают: «Я мог бы сделать это», а затем «Это круто, я прочитаю этот код, а затем скопирую его!». Даже если они это поймут, вы все равно будете владеть авторскими правами, вы все равно попадете на рынок первым.

Я рекомендую вам просто забыть об этом.

person John Knoeller    schedule 03.03.2010

как только кто-то взглянет на код, он очень легко поймет его и сможет легко создать его самостоятельно.

Так что не давайте никому исходный код.

Если я хочу продать этот продукт, какова гарантия, что кто-то намного умнее меня перепроектирует все это и создаст лучший продукт?

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

Сейчас я думаю о фрагментации всего кода. Добавление большого количества избыточного кода и тонны комментариев.

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

Есть ли софт ...

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

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

person user207421    schedule 03.03.2010

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

Тот, кто хочет знать ваш код, узнает ваш код.

Если речь идет о денежных потерях, суды - ваша защита.

Вот как это работает.

person Sky Sanders    schedule 03.03.2010
comment
Да, вам придется посвятить всю свою жизнь взлому, чтобы действительно суметь бороться с вуду, которое продолжается. - person ChaosPandion; 03.03.2010

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

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

tl; dr: вы не можете защитить код.

person glasnt    schedule 03.03.2010

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

person Arthur Kalliokoski    schedule 03.03.2010

Я не юрист

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

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

Теперь что касается недостатка, я предполагаю и, вероятно, на 90% прав, что ваш метод:

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

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

Удачи.

person GrayWizardx    schedule 03.03.2010

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

person aefxx    schedule 03.03.2010

Не существует 100% способа защитить ваш код от реверс-инжиниринга. На каком языке мы говорим? Если это C / C ++, то реконструировать его довольно сложно, более того, вы можете удалить его из отладочной информации и т. Д. Но если это, например, Java, то даже если вы запутаете код, есть несколько довольно интересных инструментов (например, JAD), который в любом случае покажет большую часть вашей работы.

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

person pajton    schedule 03.03.2010

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

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

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

person Pekka    schedule 03.03.2010

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

person KPexEA    schedule 03.03.2010

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

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

person Nicole    schedule 03.03.2010

Они собираются перепроектировать ваш код. Ничто не может их остановить ... Единственное, что вы можете сделать, - это усложнить задачу. Это варьируется от обфускации кода, который по наследству "открыт", такого как PHP и Javascript, до засорения вашего кода хренью самомодификаций.

person Earlz    schedule 03.03.2010

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

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

person tychoish    schedule 03.03.2010