В конечном счете встроенная защита приложений в Android очень плохая. Вот ваши лучшие практики.
1) Да. Рекомендация Google использовать обфускацию кода, подписанное кодирование и сервер проверки лицензии предназначена для предотвращения кражи программного обеспечения. Однако их реализация имеет серьезные недостатки. Единственное требование к APK - это его подпись. Неважно, кто подписал это все же. Нет никаких проверок, что ваша подпись является той, с которой она подписана. Таким образом, чтобы взломать его, вы просто удалите проверку лицензии и заново подпишите с любым сертификатом, который вы хотите. Затем пользователь может загрузить его на свой телефон с установленным флажком «разрешить нерыночные приложения».
Не используйте лицензирование Google как есть. Модифицировать код сильно. Добавьте несколько новых параметров для использования при генерации ключей. Переместите код вокруг / перестройте его. Не включайте библиотеку лицензирования Google в качестве библиотечного проекта. Поместите это прямо в ваш код. Сделайте код максимально тонким и хитрым. Добавьте функции, которые ничего не делают, но изменяют значения на лету. Сделайте другие функции позже, которые преобразуют их обратно. Распространите проверку лицензии по всей вашей кодовой базе.
Если вы не выполните эти шаги, то код может быть взломан автоматически. Делая эти шаги, по крайней мере, взломщик должен найти время, чтобы взломать его. Это, вероятно, займет не более нескольких часов. Но несколько часов - это гораздо больше, чем мгновенный взлом стандартного уровня лицензирования Google. Существуют инструменты для взлома, которые на самом деле просто автоматически загружают недавно выпущенные пакеты для Android и, если они используют стандартное лицензирование для Android, взламывают их и загружают взломанные APK на эти типы веб-сайтов. Делая вашу реализацию, а не ванильную, вы делаете все намного сложнее, затрачивая на это всего несколько часов.
2) Это распространенная техника предотвращения взлома. Вы можете сделать это на Android, если хотите. Но его можно взломать примерно за 5 минут. Если вы Google, есть учебники о том, как взломать эту конкретную технику. По сути, вы просто просматриваете вызов CRC в коде и удаляете проверку после возвращения CRC.
Android не имеет внутренней безопасности. Вы можете получить root права на любой телефон и скачать APK. Вы можете легко взломать APK для включения отладки и просто пошагово выполнить код, чтобы увидеть все ключи, которые вы сохранили в коде. В итоге я бы не стал тратить на это слишком много времени. Невозможно обеспечить приложение для Android. Я бы просто занялся здравым смыслом из приведенного выше списка и пошел бы дальше.
3) Если вы действительно параноик, вы можете реализовать свое собственное лицензирование на своем собственном сервере лицензирования. Я выбрал этот подход, но не столько для защиты приложения от кражи, сколько для того, чтобы дать мне механизм для продажи приложений непосредственно с моего веб-сайта, чтобы пользователи, у которых нет Google Play, могли по-прежнему покупать мои приложения. *