Как обезопасить мое приложение от пиратства - PullRequest
36 голосов
/ 26 марта 2012

Я занимаюсь разработкой приложения для Android и планирую опубликовать его (платное приложение). Я слышал, что пиратские приложения для Android очень легко (намного проще, чем iphone). Мне было интересно из вашего опыта или из того, что вы знаете, как можно повысить безопасность моего приложения? Я знаю, что никогда не смогу получить его на 100%, но я хочу, чтобы людям было сложнее его пиратствовать или распространять незаконно Любые идеи, опыт, комментарии, которыми вы можете поделиться?

Ответы [ 3 ]

67 голосов
/ 26 марта 2012

Я выпустил бесплатное приложение для защиты от вредоносных программ для Android, и убедился, что никто не взломал его, что было важно для его успеха.Самыми большими угрозами для приложения на Android Market являются утечка исходного кода, копирование / распространение платных приложений и повторный набор ключей.Ниже я объясню каждое из них и способы их решения.

Во-первых, В этом документе описывается, как выполнить обратное проектирование приложения Android путем распаковки скомпилированного кода и просмотра исходного кода.Вы не сможете заблокировать это от вашего приложения.Период.Кто-то с завещанием всегда может просмотреть ваш исходный код, если он получит копию вашего apk (легко доступно на рутированном телефоне).Хорошая новость заключается в том, что вы можете запутать важные части вашего кода, что затруднит его реинжиниринг. Proguard - это инструмент, предоставляемый Android, который позволяет вам запутывать (затруднять чтение) ваш код во время упаковки.Однако, чтобы предотвратить чтение важного кода, вам нужно переместить все уязвимые методы или переменные в файл, который не является Activity, Service или BroadcastReceiver.Для получения полной информации ознакомьтесь с документацией.

Для защиты от незаконного копирования и распространения вашего приложения Google Play предоставляет некоторые варианты лицензирования .К сожалению, LVL также не совсем безопасен.Подробное руководство о том, как взломать его (до Google Play), доступно здесь .

Наконец, ссылка на статью выше, а также многочисленные научные статьи и онлайн-блоги описывают, какпосле утечки исходного кода (или даже обфусцированного исходного кода) один раз может просто добавить свой собственный вредоносный код, отказаться от приложения и опубликовать его в Android Market.Хорошая новость заключается в том, что, если ваш пароль лицензионного ключа Android не может быть легко угадан, или если вы передадите его кому-то другому, злоумышленник не сможет опубликовать приложение с тем же лицензионным ключом.Это не только защищает вас от вины, но и делает так, чтобы вредоносное приложение не могло получить доступ к данным, доступным через ваше исходное приложение (например, SharedPreferences).

В общем, лучший способ действительно защитить ваше приложение от пиратства - правильно настроить и использовать Proguard , Google Play Licensure и подписать окончательный вариант apkс очень безопасным лицензионным ключом.

8 голосов
/ 19 марта 2014

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

Тамперная проверка

  • Приложение установщика - используйте менеджер пакетов, чтобы убедиться, что приложение для установки является магазином приложений play / amazon
  • Проверка эмулятора - проверка системных свойств на наличие контрольных признаков того, что приложение запускается на эмуляторе, что вне dev может указывать на атаку / фальсификацию
  • Проверка отладки - используйте менеджер пакетов, чтобы проверить флаг отладки, он должен быть отключен в продукте, что может указывать на атаку / фальсификацию
  • Проверка подписи сертификата - используйте менеджер пакетов, чтобы убедиться, что приложение подписано вашим сертификатом разработчика (это может быть нарушено, если кто-то распакует и перепакует / откажется от приложения)

обновление: С тех пор, как я ответил на этот вопрос, я написал подробную статью об обнаружении несанкционированного доступа.

6 голосов
/ 26 марта 2012

взгляните на систему лицензирования Google Play.

http://developer.android.com/guide/market/licensing/index.html

это ваш лучший выбор.

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

...