2014-10-23 2 views
1

Я использую DexGuard для обработки приложений для Android. На домашней странице DexGuard говорят, что это особенности: обтекание XML-ресурсовКак я могу обфускать файлы ресурсов XML с помощью DexGuard?

Я уже протестировал DexGuard и декомпилировал выходные данные .apks с apktool. Проблема заключается в том, что ВСЕ файлы ресурсов декомпилируются успешно, поэтому они, по-видимому, не были запутаны.

Теперь, мой вопрос заключается в том, что DexGuard автоматически обфускает ресурсы XML или мне нужно каким-то образом активировать его в файле dexguard-project.txt? Можно ли обфускать ресурсы XML, такие как strings.xml, или я не понимаю эту функцию?

+0

Вы открыли один из файлов XML и посмотрели на него? 'Больше обфускации XML-файлов ресурсов. DexGuard теперь делает файлы еще менее удобочитаемыми и затвердевает их от несанкционированного доступа. «Похоже, что он мешает им внутренне, а не переименовывает сам файл. – Blundell

+0

Да, я открыл их и сравнил их с моими фактическими файлами ресурсов.Они полностью равны выходам dexguard. (Другие функции, такие как шифрование активов/классов/строк, действительно работали.) – user2350644

+0

То же самое произошло со мной, ресурсы xml декомпилируются успешно, но не исходный код. У вас есть решение @ user2350644 – abh22ishek

ответ

1

я получил следующее заявление от DexGuard:

ресурсы файлы XML являются затемненными автоматически в версии сборки, хотя различия может быть тонкими. Вы можете сравнить различия , например, с aapt d xmltree application.apk AndroidManifest.xml. Мы работаем над более запутыванием ресурсов для будущих версий.

После выполнения предлагаемой команды aapt d xmltree application.apk (где application.apk является простым HelloWorld приложений) я наконец-то смог увидеть, что на самом деле DexGuard запутывает в файлах XML:

Каждый атрибут в файле XML ресурсов идентифицируются имя, но часто также с помощью числового идентификатора. В AndroidManifest.xml, например:

android:versionName(0x010102lc) = "1.0"

На стадии запутывания, DexGuard может удалить имя атрибута, но только если этот атрибут также имеет числовой идентификатор.

После DexGuard запутывания выше атрибута будет выглядеть следующим образом:

:(0x010102lc) = "1.0"

Как XML элементов strings.xml, например, только имя и не числовой идентификатор, не будет каких-либо различий в декомпилированный XML-файл.

3

Почему вы хотите обфускать strings.xml? это потому, что у вас есть ключи api или тайны oauth? Если это так, то лучше, чтобы переместить их активов файл/config.properties и нагрузки на java.util.Properties объекта, как это ...

Properties appConfigProperties = new Properties(); 
appConfigProperties.load(context.getAssets().open("config.properties")) 
String myApiKey = appConfigProperties.get("my_api_key"); 

(для краткости я удалил обработку исключений)

Не забудьте включить шифрование активов в вашем DexGuard конфигурационного файла:

-encryptassetfiles assets/**