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