Как защитить свой программный код?
Возможные дубликаты:
Как вы защищаете свое программное обеспечение от нелегального распространения?
Лучшая практика для предотвращения копирования программного обеспечения
Гипотетическая ситуация:
Допустим, я создал программный продукт с нуля, и он делает замечательные вещи. Единственная проблема заключается в том, что, как только кто-то взглянет на код, он очень легко поймет его и сможет легко создать его самостоятельно.
Дело в том, что я создал код с нуля на 100% и использовал смесь вызовов API. Никто другой не участвует в разработке кода.
Если я хочу продать этот продукт, какова гарантия того, что кто-то намного умнее меня перепроектирует все это и создаст лучший продукт?
Прямо сейчас я думаю о фрагментации всего кода. Добавление большого количества избыточного кода и тонны комментариев.
Существует ли какое-либо программное обеспечение, шифрующее программный код, которое сделает отладку, устранение неполадок и понимание того, как код работает практически невозможно? и все же работает как обычно? чтобы у разработчика было душевное спокойствие?
13 ответов
Очень немногие вещи в программе действительно новы. Почти все, что вы, вероятно, вставите в свой код, кто-то другой может придумать самостоятельно. Как правило, легче, чем они могли бы изучить это, читая ваш код. Читать код сложнее, чем писать, и большинству программистов все равно не нравится это делать.
Поэтому гораздо более вероятно, что они посмотрят на ваше приложение и подумают "Я мог бы это сделать", а затем "Это круто, я собираюсь прочитать этот код, а затем скопировать его!". Даже если они это понимают, вы все равно будете обладать авторскими правами, но вы все равно сначала выйдете на рынок.
Я рекомендую вам просто забыть об этом.
как только кто-то взглянет на код, он очень легко поймет его и сможет легко создать его самостоятельно.
Так что не давайте никому исходный код.
Если я хочу продать этот продукт, какова гарантия того, что кто-то намного умнее меня перепроектирует все это и создаст лучший продукт?
(а) Итак, начните продавать его сейчас и захватите рынок. Обратный инжиниринг требует времени, в течение которого вы овладеваете рынком и делитесь разумом. (б) Добавьте в ваше лицензионное соглашение положение, запрещающее реверс-инжиниринг. (c) Убедитесь, что все, кто получает продукт, подписывают соглашение.
Прямо сейчас я думаю о фрагментации всего кода. Добавление большого количества избыточного кода и тонны комментариев.
Это имеет смысл, только если вы собираетесь распространять исходный код. В этом случае никому даже не нужно перепроектировать. У них есть ваш исходный код. Не дайте им это.
Есть ли программное обеспечение...
Есть много программного обеспечения, которое претендует на эту работу. Однако это техническое решение бизнес-проблемы. Все программное обеспечение может быть перепроектировано, потому что в тот или иной момент все это должно быть дешифровано и де-запутано до такой степени, что процессор его поймет. На тот момент это по сути открытый текст. Так что никакое техническое решение формально не представляется возможным (если не считать что-то вроде кода, который выполняется в защищенном от несанкционированного доступа HSM).
Я добавлю, что есть еще один бизнес-механизм, который вы можете использовать для защиты от потери бизнеса, и это все, что вам нужно: цена. Сделайте цену настолько высокой, что лицензиаты будут ценить свою копию, и не разрешайте ее осматривать, или сделайте ее настолько низкой, чтобы обратное проектирование стало невыгодным; или сделайте это бесплатно и сделайте свои деньги на контракте поддержки.
Если у вас действительно есть знания и опыт для написания такой кодовой базы, вам станет ясно, что обфускация предназначена для предотвращения случайного нарушения прав ИС.
Кто-то, кто хочет знать ваш код, узнает ваш код.
Если это становится проблемой денежных потерь, суды - ваша защита.
Вот как это работает.
Кто-то всегда сможет понять и обработать ваш код. Черт возьми, если у вас было 0 способов добраться до кода, даже простого использования системы достаточно, чтобы кто-то мог повторить процесс.
Пример: я беру кувшин с водой и выливаю его в чашку, пока моя спина обращена к другому человеку. Этот другой человек знает, что вода и гравитация потрясающе заставляют вещи падать в другие контейнеры, поэтому они могут затем отработать процесс подъема кувшина, чтобы гравитация (вызов API) работала в их пользу. Они могут не знать точно, под каким углом вы использовали свое предплечье и какие бы то ни было сверхсложные методы удержания чашки, но они могут повторить тот же процесс и улучшить его с течением времени.
tl; dr: Вы не можете защитить код.
Нужно изобрести еще больше замечательных вещей, в то время как соревнование реверсирует ваши текущие вещи. Это называется конкуренция через инновации.
Я не юрист
если вы действительно беспокоитесь об этом, то, что вы готовы вкладывать в него деньги, не защищайте свой код (кроме чего-то разумного, такого как запутывание или шифрование), а скорее запатентовайте свою идею и свое искусство. Тогда, если кто-то возьмется за это, перепроектирует его и сделает лучший процесс, основанный на вашем, у вас есть законные основания для получения ваших денег.
Есть множество вещей, которые вы должны будете сделать, включая доказательство того, что они поняли вашу идею (что нелегко), но если это решение мирового голода и всех гуманитарных проблем, то это то, что нужно сделать.
Теперь об обратной стороне, я думаю, и, вероятно, на 90% верно, что ваш метод:
- По различным причинам не патентуемо (я был поражен количеством уже запатентованных идей и тем, насколько сложно было идентифицировать оригинальное искусство)
- Не новое или не уникальное (то есть для него уже создано искусство)
- Не стоит патентовать, потому что расходы значительно превышают выгоды
Юрист по вопросам ИС может сказать вам наверняка, и расходы на консультацию не так уж и велики. В общем, дешевле будет посоветоваться с ними, чем тратить много времени на сокрытие кода.
Удачи.
Даже не беспокойся. Если ваш код действительно "делает замечательные вещи", будьте уверены, что он будет взломан. И быть просто ради любопытства.
Не существует 100% способа защитить ваш код от обратного инжиниринга. На каком языке мы говорим? Если это C/C++, то его довольно сложно перепроектировать, больше вы можете лишить его отладочной информации и т. Д. Но если это, например, Java, то даже если вы запутываете код, есть несколько довольно крутых инструментов (таких как JAD) это покажет большую часть вашей работы.
Несмотря на все это, я думаю, вы должны попытаться изменить свое отношение. Крупные компании платят много денег за простые решения, и кажется, что в наши дни обслуживание - это самое важное, а не программное обеспечение (отсюда и успех компаний, основанных на открытом программном обеспечении). Поэтому, если у вас есть отличное программное обеспечение, не пугайтесь, что кто-то может его украсть, лучше подумайте, как его продать.
Существует ли какое-либо программное обеспечение, шифрующее программный код, которое сделает отладку, устранение неполадок и понимание того, как код работает практически невозможно? и все же работает как обычно? чтобы у разработчика было душевное спокойствие?
Это абсолютно неправильное мышление ИМО. Что произойдет, если вас сбьет автобус? Ваша компания обанкротилась? Все ваши данные уничтожаются при пожаре? Для каждого из ваших клиентов стоимость их инвестиций в ваше программное обеспечение упадет и в конечном итоге достигнет нуля, потому что программное обеспечение не может быть разработано или устранено неисправностями без вас. Я видел, как так много денег тратится впустую, я думаю, что это ужасная бизнес-модель.
Я зарабатываю свой хлеб на создании программного обеспечения самостоятельно, поэтому я знаю трудности зарабатывать на жизнь этим. Тем не менее, запутывание не может быть способом пойти в наши дни. Навязывайте своим клиентам строгие лицензионные соглашения, чертовски напугайте их, чтобы они даже не думали о перераспределении программного обеспечения, а оставляли его открытым.
Обычно кто-то достаточно умен, чтобы взломать ваш код и использовать его осмысленно, достаточно умен, чтобы сделать это самостоятельно, и, вероятно, думает, что может сделать это лучше, чем вы, поэтому он не будет мешать украсть ваши вещи.
Не беспокойтесь о людях, которые могут взломать ваш код, но не использовать его осмысленно. Если вы хорошо поработали, это может только повысить качество выполненной работы (подумайте обо всех дрянных имитаторах сенсорных телефонов).
Они собираются перепроектировать ваш код. Ничто не может остановить их... Единственное, что вы можете сделать, это сделать это сложнее. Это варьируется от обфусцирующего кода, который унаследованно "открыт", такого как PHP и Javascript, вплоть до засорения вашего кода хламом само-модификации.
Это бесполезно. Всегда найдется кто-то умнее вас, и поэтому он сможет реконструировать ваше запутывание.
Я думаю, что во многих отношениях ценность программного обеспечения делает его не сумасшедшим технологическим достижением, а скорее вещами, которые, по нашему мнению, могут быть третичными по отношению к самой части программного обеспечения. Как тот факт, что вы будете там, чтобы поддержать его. Или что он предоставляется в виде веб-службы, и вы будете там, чтобы убедиться, что сервер работает. Или что это сообщество, и вы будете там, чтобы модерировать и строить сообщество.
Хотя вы можете продавать код, ценность, которую он имеет в вашем коде, не присуща самому коду, а скорее зависит от особенностей и экосистемы, которая окружает ваш код.