2010-07-28 6 views
3

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

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

Очевидно, что obfuscater, такой как ProGuard, является хорошим первым шагом, но как вы могли бы защитить свое приложение от выпуска в дикую природу?

Во-вторых, кроме шифрования содержимого (что сложно, так как ключ дешифрования должен быть сохранен и в программе), как бы вы помешали кому-то просто сбросить содержимое базы данных sqlite3?

ответ

2

Похоже, у вас есть две проблемы безопасности:

  1. Пользователей копирования и распространение приложения без оплаты
  2. Разработчиков декомпиляции исходного кода и кражи его для своих собственных приложений

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

Концерн № 2: Это проблема разработки Java-приложений в целом и на самом деле не характерна для Android. Как вы сказали, использование obfuscater - хорошее начало. Тем не менее, вы всегда будете в состоянии декомпилировать Java-код, и на самом деле нет такого простого способа обойти это, о котором я знаю.

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

+0

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

+2

Я предпочитаю думать об этом, полагаясь на то, что большая часть нашей целевой демографии честна;) – dbyrne

+0

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

0
  1. Не используйте sqlite. Используйте свой собственный формат. Это не является нерушимым, но определенно затруднит извлечение данных.
  2. Просто не храните свои конфиденциальные данные на клиентском устройстве. Храните его в Интернете на своем собственном сервере. И сделайте свое приложение так же, как «тонкий» клиент для своих серверных данных/приложений.

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

+0

Хм, не уверен, как сделать собственный собственный формат ... у DB есть десяток таблиц, и несколько тысяч записей ... Сохранение его отзывчивости при поиске по плоским файлам было бы грубым. Я рассмотрел номер 2, и, хотя это не плохая идея, кажется, что скорость снова может быть проблемой, esp, если сверлить несколько уровней, и ждать каждую секунду для ответа. – AndyD273

+0

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

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