Какао-приложение - проблема безопасности - PullRequest
3 голосов
/ 05 августа 2009

У меня вопрос о хорошем способе немного защитить мое приложение от какао от пиратства. Я знаю, что это невозможно!

Итак, в моем приложении есть метод isRegistered(), который запускается каждый раз, когда пользователь запускает приложение. Это вызывается из applicationDidFinishLaunching: делегата приложения. Поэтому, если этот метод возвращает значение true, приложение продолжает выполнять код, в противном случае появляется предупреждение о том, что приложение не зарегистрировано, и есть xx день для покупки лицензии.

Это хороший способ? Потому что у меня нет опыта в этом.

Заранее благодарю за помощь!


решаемые

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

Ответы [ 4 ]

7 голосов
/ 05 августа 2009

Решение, которое вы описываете, почти не требует опыта, чтобы взломать. Изменить isRegistered() функцию тривиально, чтобы всегда возвращать true. Таким образом, усилия, необходимые для обхода вашей защиты, представляют собой небольшую часть усилий, которые вам придется потратить на внедрение всей инфраструктуры для поддержки пользователей, приобретающих регистрационные коды.

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

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

4 голосов
/ 05 августа 2009

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

Также имейте в виду, что около 10% никогда не будут воровать, а остальные 10% всегда будут пытаться. Просто убедитесь, что эти 80% могут купить ваш продукт без каких-либо других препятствий для мэра. Чем ты мог игнорировать эти мерзкие 10%. На самом деле это цитата из Джоэл Спольски IHMO.

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

2 голосов
/ 05 августа 2009

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

Платформа для подписи кода на Leopard и более поздних версиях позволяет вам подписывать ваш код так, что если он когда-либо будет изменен, он откажется запускаться - см. Документацию по опции kill на странице man *

0 голосов
/ 05 августа 2009

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

По сути, любая система защиты от копирования в конечном итоге будет выглядеть примерно так:

if (program is registered)
    let the program continue
else
    nagging message
end

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

Идеального решения этой проблемы не существует, но нужно помнить две основные вещи:

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