Обфускация кода Android с помощью ProGuardКак узнать, что код был запутан?

У меня есть проект Android, который я недавно опубликовал на рынке после того, как запустил его через обфускацию с помощью ProGuard.

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


person dell116    schedule 22.08.2011    source источник


Ответы (3)


Попробуйте реконструировать собственное приложение. Посмотрите, что вы можете прочитать в коде.

Используйте следующие вопросы:

декомпиляция DEX в исходный код Java

http://www.taranfx.com/decompile-reverse-engineer-android-apk

person Pedro Loureiro    schedule 22.08.2011
comment
Спасибо тебе за это. Я декомпилировал два разных приложения, одно запутал, а другое не запутал. Код обоих приложений (не запутанного и запутанного) выглядит одинаково. Имена переменных были изменены, но имена классов и многое другое осталось прежним. Так работает обфускация? Почему в проекте, который я не запутал, изменились имена переменных? - person dell116; 23.08.2011
comment
Это зависит от того, как вы настроите proguard для работы... но у меня нет большого опыта в этом! - person Pedro Loureiro; 23.08.2011

Найдите dump.txt, mapping.txt, seeds.txt и usage.txt. Скорее всего, они будут в папке proguard в каталоге вашего проекта. Они создаются, когда ProGuard запускается в вашем коде.

Они заполнены информацией об обфускации, особенно полезной является mapping.txt, которая показывает, во что ProGuard превратил ваши различные имена участников.

person jakebasile    schedule 22.08.2011
comment
У меня есть папка ProGuard в каталоге проекта, но в ней есть zilch... там ничего нет... могу ли я предположить, что ProGuard не запутал мой код должным образом? Могут ли эти файлы находиться в любом другом каталоге? - person dell116; 23.08.2011
comment
Есть ли где-нибудь папка proguard в вашем проекте? Если нет, я бы сказал, что он, вероятно, работал неправильно. - person jakebasile; 23.08.2011
comment
Да... папка proguard есть... но в ней нет содержимого... я не смог найти ни один из упомянутых вами файлов на моем жестком диске... значит, что-то сломалось, когда я запускал его через proguard. ... ох .... - person dell116; 23.08.2011
comment
Вы можете отменить публикацию своего приложения до тех пор, пока запутывание не заработает правильно, но вам решать, поможет ли это. - person jakebasile; 23.08.2011

ДИСКАЛИМЕР: я не являюсь владельцем decompileandroid.com и мне не платят за его продвижение. Я разработчик, который доволен этим сервисом.

На самом деле есть более простой способ, чем приобретение нескольких разных инструментов и передача результатов одного из них другому (это, конечно, дает вам лучший контроль над тем, что происходит). Вы можете воспользоваться услугой

decompileandroid.com

По сути, вы загружаете файл .apk, и он выполняет все эти шаги за вас. Затем вы можете скачать ZIP-файл, содержащий декомпилированные исходники.

Вы можете сначала загрузить файл .apk, созданный в режиме отладки, а затем загрузить файл .apk, созданный в режиме выпуска. Просто убедитесь, что флаг minifyEnabled установлен на true в вашем файле build.gradle для релизной сборки.

В моем случае разница была довольно очевидной - большинство моих классов были названы a, b, c и т. д. в минимизированной сборке.

person todor.hr    schedule 18.01.2015
comment
Ой! Я имею в виду, я уверен, что вы уже знаете о последствиях загрузки отлаживаемой и незапутанной сборки на веб-сервер. В конце концов, мы говорим об обфускации, чтобы третья сторона не могла прочитать ваш код. Хотя на первый взгляд этот сайт выглядит хорошо, я не уверен, что стал бы ему доверять. - person dell116; 10.02.2015
comment
Да, конечно, в большинстве случаев вы не захотите загружать свои APK на удаленный сервер. Особенно с коммерческими проектами. Я дал это просто как более легкую альтернативу. В моем случае это был тестовый проект, так что мне не о чем было беспокоиться. Конечно, всегда можно загрузить только запутанную версию, если и это не будет проблемой. В этом случае можно было бы просто увидеть, насколько хорошо сработало обфускация. - person todor.hr; 11.02.2015