Android ProGuard — только обфускация

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


person Vinoth    schedule 09.07.2011    source источник
comment
Proguard не предотвращает реверс-инжиниринг.   -  person dcow    schedule 21.11.2014
comment
@dcow Но это усложняет задачу. Обфусцированный код затрудняет обратный инжиниринг вашего APK в соответствии с документами для разработчиков Android.   -  person Johnathan Logan    schedule 24.08.2017
comment
@JohnathanLogan уверен, но это принципиально не меняет модель доверия. Если у пользователя есть ваш клиент, он может делать все, что может делать ваш клиент. Никакие ухищрения этому не помешают. Попробуйте запустить приложение для Android через jdgui или что-то подобное. Довольно легко увидеть, что делает приложение, даже с proguard. Вы просто не получаете всех причудливых длинных имен корпоративных java для классов, которые обычно просто делают вещи менее читаемыми XD. Если бы я действительно хотел защитить какой-то проприетарный алгоритм, я бы не стал полагаться на proguard. Есть обфускаторы лучше, хотя и дороже.   -  person dcow    schedule 25.08.2017


Ответы (1)


Да, указав

-dontshrink
-dontoptimize

Подробную информацию обо всех параметрах конфигурации можно найти в руководстве по ProGuard.

Обратите внимание, что сжатие и оптимизация могут немного помочь предотвратить обратный инжиниринг.

person Eric Lafortune    schedule 09.07.2011
comment
Спасибо. Я пробовал -dontoptimze раньше, но он все еще удалял файлы классов. Когда я пробовал и -donthrink, и -dontoptimize, все работало. - person Vinoth; 11.07.2011
comment
Здравствуйте, это 2015 год, и все изменилось. Например, мир андроидов переходит на Gradle. Это все еще должно работать? С Грейдлом? - person Vinay W; 21.05.2015
comment
Почему оптимизация сокращения помогает предотвратить реверс-инжиниринг? - person arnt; 26.07.2015
comment
@Eric Lafortune Как запутать код. Я также хочу только переименовывать классы, чтобы декомпилированный код был нечитаемым. Если я ничего не напишу в Proguard.pro то он переименует все классы - person Ankesh kumar Jaisansaria; 24.04.2016
comment
Это то, что мне нужно, чтобы заставить его работать? # Добавьте сюда правила ProGuard для конкретного проекта. -не уменьшать { *; } -dontoptimize { *; } - person NukeouT; 31.12.2016
comment
Нет, это не работает, быстрый эксперимент — хранить все (**) в банке. Выходная банка все еще намного меньше (размером около 3/4) - person tribbloid; 06.06.2017