Proguard - средство против реверс-инжиниринга

Утилита ProGuard предназначена для решения разных задач, одна из которых заключается в противодействии обратной разработке и защите приложений. Это популярное средство среди разработчиков Android, хотя к нему и нет однозначного отношения среди них.

Как ProGuard защищает разработки

Разработка мобильных приложений — это та область, где актуальны вопросы авторского права. Действительно, если компания разрабатывает инновационное мобильное приложение и планирует получить с него солидный доход, этой компании нисколько не выгодно прямое копирование и распространение аналогичного продукта, поэтому она заявляет свои права на него. Поскольку прямое копирование в этом случае запрещено, некоторые разработчики прибегают к реверс-инжинирингу, то есть к так называемой обратной разработке, подразумевающей исследование программы с целью воспроизвести аналогичный продукт с такими же возможностями. Учитывая, сколько стоит разработка мобильного приложения в ряде случаев, иногда это действительно приносит свои плоды.

Сколько стоит разработка мобильного приложения
Разработчикам необходимо средство защиты своего труда от посторонних

Утилита ProGuard выполняет несколько основных функций:

  • Удаление неиспользуемых классов и членов классов. Когда утилита проверяет код, она оставляет только используемые классы, переменные, константы и методы, удаляя неиспользуемые. Это не влияет на возможность реверс-инжиниринга, но позволяет уменьшить итоговый размер файла.
  • Оптимизация кода. Теоретически это полезная функция, однако в ходе реализации часто случается так, что изменение кода не в лучшую сторону влияет на то, как работает приложение. К счастью, оптимизацию можно и не использовать.
  • Обфускация. Ключевой момент в противодействии обратной разработке. Здесь ProGuard работает следующим образом: утилита изменяет имена классов, не являющихся точками входа. В итоге при попытке произвести декомпиляцию возникают куда большие затруднения, чем если бы код остался в исходном положении.

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

После работы ProGuard сложнее будет исследовать код мобильного приложения

Что касается обфускации, проверка может заключаться в том, чтобы декомпилировать код мобильного приложения и попробовать скомпилировать его повторно. Если все сработало правильно, компиляция будет неудачной. Наконец, работу утилиты можно оценить, открыв один из четырех файлов отчетов, которые ProGuard формирует в процессе своей работы.

Сложности при работе с ProGuard

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

Очень многое в том, как пользоваться утилитой и как решать возможные проблемы в ходе ее использования отражено в руководстве. Рекомендуется изучить его перед тем, как применять ProGuard для оптимизации и обфускации кода.