Главная » Кодинг » Обфускация с помощью ProGuard
Обфускация с ProGuard

Обфускация с помощью ProGuard

Improving ProGuard Name Obfuscation — статья о том, как сделать обфускацию с помощью ProGuard более запутанной. Утилита ProGuard входит в комплект Android Studio и представляет собой систему оптимизации Java-классов. Она удаляет неиспользуемый код, а также сокращает имена классов, методов и переменных, делая исполняемый файл меньше. Побочным эффектом этого является обфускация, когда из-за изменения имен код становится более трудным для понимания.

Еще по теме: Деобфускация приложения с Dex-Oracle

По умолчанию ProGuard переименовывает классы, методы и поля, используя английский алфавит: первый переименовывается в a, второй в b, двадцать седьмой — в aa и так далее. Проблема такого подхода в том, что он очень предсказуем; взломщику придется разобраться в твоем коде только один раз, и он легко найдет нужный участок кода в другой версии приложения: его имя, скорее всего, будет таким же.

Эту проблему можно побороть, используя разные словари. В интернете даже нашелся словарь, содержащий запрещенные для использования в Windows имена файлов, что должно помешать распаковке исполняемого файла в Windows, но на деле почти не работает. Применяя разные словари к каждой новой версии приложения, можно сделать порядок генерирования имен непредсказуемым и запутать взломщика.

Загружается такой словарь с помощью следующих инструкций в файле proguard-rules.pro внутри проекта:

Также автор рекомендует использовать следующую опцию:

Она переместит все классы в пакет o, что в теории должно еще сильнее запутать взломщика.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *