Обфускация Android для кода и ресурсов

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

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


person advantej    schedule 14.04.2011    source источник
comment
Обфускация на самом деле защищает только что-либо в частном мире, ссылающемся на себя, внутри программы, где определение того, что делает некий блок обфусцированного кода, является проблемой, уникальной для изучения этого приложения. Интерфейсы для платформы Android являются стандартными, поэтому, даже если они будут запутаны, кто-то быстро напишет инструмент, чтобы отменить это (посмотрите на оптимизированный DEX для параллельного примера). Вы можете зашифровать свои ресурсы, но вам придется расшифровать все, что вы хотите. отобразить или воспроизвести, после чего модифицированная платформа может получить расшифрованную версию.   -  person Chris Stratton    schedule 14.04.2011


Ответы (2)


Для первой части я предлагаю вам проверить этот вопрос: Android-игру продолжают взламывать . Он не касается напрямую ProGuard, но дает вам некоторые идеи о том, как уменьшить пиратство.

Что касается второй части, боюсь, что нет, это невозможно, поскольку это простые файлы xml. Что вы можете сделать, так это сократить использование ресурсов и создать логику прямо в java. Это снизит уязвимость вашего кода тремя способами:

(1) очевидное, он показывает менее удобный для чтения xml-код

(2) он создает гораздо более длинные файлы smali, за которыми нелегко начать: учтите, что переменные в файле smali не имеют имен, а имеют числа и используются повторно несколько раз, что усложняет их понимание. V1 может быть сначала TextView, затем int, а затем частным статическим методом.

(3) сокращается использование шестнадцатеричных идентификаторов, которые очень легко найти в файле smali с использованием таблицы из public.xml.

Когда я переносил фреймворк TouchWiz на некоторые пользовательские ПЗУ, я даже сделал небольшое Java-приложение для автоматизации распознавания идентификаторов (сообщение xda-developers: здесь), так что вы можете представить, насколько легко им следовать.

person Aleadam    schedule 14.04.2011

Теперь вы можете использовать новый плагин + библиотеку gradle для эффективного обфускации строк в классе, пожалуйста, проверьте это здесь

https://github.com/MichaelRocks/paranoid

Также теперь есть новый плагин, который также может скрывать ресурсы, пожалуйста, проверьте его ниже

https://github.com/shwenzhang/AndResGuard

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

person Vaishakh    schedule 05.06.2018