2013-11-27 3 views
1

Я включил Proguard раскомментировав следующую строку в файл project.properties:Android Proguard: Классы и ресурсы извлекаемые даже после использования Proguard

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 

Когда я попытался извлечь классы и ресурсы с использованием dex2jar, я был в состоянии извлечь их как есть. Должен ли я изменить некоторые другие файлы/свойства/конфигурации в моем проекте, чтобы предотвратить прямое извлечение классов? Должен ли я добавить некоторые параметры конфигурации в project.properties (расположение корневого сайта проекта) или файл proguard.android (местоположение SDK)?

ответ

0

Это произошло после того, как вы создали приложение в режиме выпуска и экспортировали его с использованием действительного сертификата и мастера экспорта в Eclipse? Если нет - выполните следующие действия: щелкните правой кнопкой мыши на своем проекте, выберите «Экспорт», введите «Экспорт приложения для Android», затем «Затем выберите« Использовать существующее хранилище ключей »или« Создать новое хранилище ключей », завершите работу мастера. ProGuard запускается только при создании приложения в режиме выпуска.

+0

Да. Это произошло после того, как я построил приложение в режиме освобождения (используя хранилище ключей). –

2

Кажется, вы используете «стандартный» файл свойств obfuscator Proguard. Попробуйте использовать «расширенный» файл свойств obfuscator Proguard. Он находится здесь:

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt 

Ваши коды будут запутаны немного дальше, но не все. Например, действия, службы, классы Java, которые вы объявили в файле манифеста, или объявленные с помощью директив -keep в Proguard, не будут полностью запутаны.

На стороне примечания: Даже если вы используете коммерческий DexGuard, вы все еще не защищены от декомпиляции на 100%. Опытные хакеры могут использовать smali/baksmali техники для обратного проектирования ваших кодов, чтения, модификации по желанию. Помните, что если коды можно считать 0s и 1s, их можно взломать.

0

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

+0

Мое намерение состоит в том, чтобы не допустить, чтобы мой apk был полностью реконструирован. Я знаю, что невозможно полностью избежать извлечения кода. Я просто хочу убедиться, что код недоступен, так как он есть. В настоящее время, когда я пытаюсь перепроектировать мой apk, я могу получить все классы и ресурсы, как есть (с теми же классами, именами переменных). это даже после того, как я раскоментил свойство proguard –

Смежные вопросы