Первая остановка для меня - оптимизировать и запутать код с помощью ProGuard , который, как известно, работает с байтовым кодом, предназначенным для виртуальной машины Android Dalvik (через Dex). Это действительно отличный инструмент, и он может увеличить сложность «перевернуть» ваш код, уменьшая при этом его площадь (в некоторых случаях резко: мой недавний апплет уменьшился с примерно 600 КБ до примерно 50 КБ).
Как говорят другие, вы никогда не получите 100% -ную безопасность деталей вашего алгоритма, пока его реализация распространяется среди клиентов. Для этого вам нужно хранить код только на своих серверах. Попытки обеспечить почти 100% -ную защиту клиентского кода фактически составляют DRM и могут сделать ваш клиентский код хрупким перед лицом перебоев в работе сети и просто в целом расстроить (законных) пользователей.
В блоге разработчиков Android есть полезных статей по вопросу о «защищенных от несанкционированного доступа» приложениях Android (и они рекомендуют использовать ProGuard как часть общего подхода).
Что касается «креативных» подходов: некоторые разработчики используют методы обнаружения отладчика , чтобы предотвратить анализ во время выполнения и объединить это с шифрованием частей двоичного кода (для предотвращения статического анализа), но, честно говоря, достаточно решительный злоумышленник может обойти , в то время как это может вызвать законное недовольство пользователя, как показано в статье Windows KB Игры: сообщение об ошибке: Обнаружен отладчик: выгрузите отладчик и Попробуйте еще раз . По этой причине DVD-диск моей подруги «Учись водить» не будет работать под VirtualBox , но она, конечно, винит Linux!
OpenRCE и Статья Википедии о запутанном коде может быть хорошей отправной точкой, если вы захотите разобраться в этом подробнее. Но будьте осторожны, вы можете потерять больше из-за усердного использования этих методов, расстраивающих ваших пользователей, чем вы потеряли бы коммерческие секреты из-за обратного инжиниринга. Как Антон С. говорит , возможно, самый «творческий» подход заключается в настройке бизнес-модели, а не технологии.
Последнее обновление Android SDK от 6 декабря 2010 г. (совпадает с выпуском Android 2.3 Gingerbread):
Интегрированная поддержка ProGuard: ProGuard теперь поставляется с SDK Tools. Разработчики теперь могут запутывать свой код как интегрированную часть сборки релиза.