Comments 26
Очень обрадовало появление такого функционала в SDK, но пока не могу испытать его испытать. И в связи с этим появилось два вопроса:
— На основании чего может быть создан файл seeds.txt
— Как будет выглядеть обфусцированный код после реверсинга?
— На основании чего может быть создан файл seeds.txt
— Как будет выглядеть обфусцированный код после реверсинга?
по поводу второго пункта — сам нашел, проглядел наличие примеров
>На основании чего может быть создан файл seeds.txt
— Хороший вопрос, подозреваю, что сюда попадают методы суперклассов типа onCreate(), onReceive(), которые Вы переопределяете.
Точно не знаю, на developer.android.com об этом ни слова.
— Хороший вопрос, подозреваю, что сюда попадают методы суперклассов типа onCreate(), onReceive(), которые Вы переопределяете.
Точно не знаю, на developer.android.com об этом ни слова.
seeds создается на базе списка классов, к которым вы и система обращаетесь по имени (рефлексия и т.д.) и на базе списка методов, которые привязаны к вызовам изнутри системы, к примеру для андроида:
# вызываются путем объявления в манифесте -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider # динамическое поведение -keep public class * extends View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(...); } # Also keep - Enumerations. Keep the special static methods that are required in enumeration classes. -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } и т.д.
как то вяло очень и бестолково. оригинал сего тут:
— ProGuard and Android.
— ProGuard and Android.
За статью спасибо — тему как-то подзабыли :)
Для своего проекта прикричивали его в build-impl для netBeans.
Важно помнить, что при использовании функционала PtoGuard возникает ряд важных ограничений. Например, при использовании ACRA(crash-репорты), заметно ограничивается уровень обфускации. Надо много чего сохранять. Эта же проблема и с обычной java, естественно, есть.
И эти ограничения могут хорошо подпортить жизнь при отладке :)
Для своего проекта прикричивали его в build-impl для netBeans.
Важно помнить, что при использовании функционала PtoGuard возникает ряд важных ограничений. Например, при использовании ACRA(crash-репорты), заметно ограничивается уровень обфускации. Надо много чего сохранять. Эта же проблема и с обычной java, естественно, есть.
И эти ограничения могут хорошо подпортить жизнь при отладке :)
нет смысла уменьшать уровень обфускации с целью сохранения читабельности crash репортов, достаточно для каждой выпущенно версии сохранять mapping и потом восстанавливать код уже при исправлении багов. версия приложения приходит к креш-репорте. и глупо по этому параметру снижать уровень обфускации.
отладка на обфусцированно коде — это при реверс-инжиринге? или вы это такая новая техника отладки?
отладка на обфусцированно коде — это при реверс-инжиринге? или вы это такая новая техника отладки?
Говорим о разных вещах.
Начну с конца :)
— Если приложение работало без ProGuard — оно может с ним не работать. И искать причины можно долго.
— Есть вот такой док. code.google.com/p/acra/wiki/ACRAProGuardHowTo Для нашего прилоежния он не помог. Пришлось оставлять еще часть классов, ввиду нашей архитектуры.
Проблема кроется в использовании вами или сторонними библиотеками Reflection. Например, аналогичная проблема есть во floggy с ProGuard (для J2ME).
Начну с конца :)
— Если приложение работало без ProGuard — оно может с ним не работать. И искать причины можно долго.
— Есть вот такой док. code.google.com/p/acra/wiki/ACRAProGuardHowTo Для нашего прилоежния он не помог. Пришлось оставлять еще часть классов, ввиду нашей архитектуры.
Проблема кроется в использовании вами или сторонними библиотеками Reflection. Например, аналогичная проблема есть во floggy с ProGuard (для J2ME).
по моему, говорим об одном и том же.
знаю архитектуру приложения, которое пишешь — нет никаких проблем при составлении правильного seeds. безусловно, это займет некоторое время, но отладка приложения, которые падает после обфускации, всегда выдает конкретное место, конкретный класс и конкретную проблему из-за которой выполнение программы прерывается. это вполне закономерно и предсказуемо, я бы даже не рискнул называть это проблемой, ибо это цена обфускации.
знаю архитектуру приложения, которое пишешь — нет никаких проблем при составлении правильного seeds. безусловно, это займет некоторое время, но отладка приложения, которые падает после обфускации, всегда выдает конкретное место, конкретный класс и конкретную проблему из-за которой выполнение программы прерывается. это вполне закономерно и предсказуемо, я бы даже не рискнул называть это проблемой, ибо это цена обфускации.
Руками можно все :)
Мы нормально-ленивые. Если при падении мне выдадут строку кода я буду более счастлив, чем некий ID и коммент.
Это вопрос скорее не к стилю и принципов обфускации, а к стоимости ПО/наработок vs стоимость/желание рефакторить приложение.
падает действительно в конкретном месте… если не учесть try-catch NullReference возникет явно не том месте, где кроется причина падения. А поиск исходного места зависит от фантазии разработчика, писавшего оный код. :)
Мы нормально-ленивые. Если при падении мне выдадут строку кода я буду более счастлив, чем некий ID и коммент.
Это вопрос скорее не к стилю и принципов обфускации, а к стоимости ПО/наработок vs стоимость/желание рефакторить приложение.
падает действительно в конкретном месте… если не учесть try-catch NullReference возникет явно не том месте, где кроется причина падения. А поиск исходного места зависит от фантазии разработчика, писавшего оный код. :)
это я как раз понимаю, все ленивые, а многие еще и корявые. но это никак не соотносится с предупреждением о:
просто я немного растерян. корявый перевод половины страницы из официальной документации по андройду, несколько невнятных комментариев, а люди всё радуются, а потом удивляются, что в жизни всё немного не так, как тут «понаписали».
Важно помнить, что при использовании функционала PtoGuard возникает ряд важных ограничений. Например, при использовании ACRA(crash-репорты), заметно ограничивается уровень обфускации. Надо много чего сохранять. Эта же проблема и с обычной java, естественно, есть.
просто я немного растерян. корявый перевод половины страницы из официальной документации по андройду, несколько невнятных комментариев, а люди всё радуются, а потом удивляются, что в жизни всё немного не так, как тут «понаписали».
Согласись, иногда плюс поста не в решении проблемы, а хотябы в ее упоминании, imho.
Уверен — трафик на страничку ProGuard пополнился российским, а уж сильные андроид-девелоперы сделают расширенный пост, если лень поборют и не найдут что-нибудь поинтересней :)
Уверен — трафик на страничку ProGuard пополнился российским, а уж сильные андроид-девелоперы сделают расширенный пост, если лень поборют и не найдут что-нибудь поинтересней :)
возможно. только что же это за девелоперы такие, которые даже не прочитали release notes к sdk tools.
Более подробная информация по вопросам настройки proguard, без привязки к версии SDK и готовый пример
www.androidengineer.com/2010/07/optimizing-obfuscating-and-shrinking.html (английский)
Ничего сложного в подключении нет. Главное, как было сказано выше, не забыть указать -keep public class для нужных activity, view и прочего.
www.androidengineer.com/2010/07/optimizing-obfuscating-and-shrinking.html (английский)
Ничего сложного в подключении нет. Главное, как было сказано выше, не забыть указать -keep public class для нужных activity, view и прочего.
Зачем вообще защищать приложения от реверс-инжиниринга? Все приложения должны идти по open source лицензии, а авторы должны жить на donations и концертах, встречах с фанатами…
Почему считается что работа разработчика андроид важнее, чем того же автора книги или музыканта, не способного на «обфускацию кода»…
Почему считается что работа разработчика андроид важнее, чем того же автора книги или музыканта, не способного на «обфускацию кода»…
потому что приложения воруют, а donation'ы делают всё же нечастно
или это вы тролите так?
или это вы тролите так?
Я просто удивляюсь сколько среди читателей лицемеров, которые минусуют в случае, если я выступаю протип новостей о новом начинании piratbay распространять музыку, и в то же время рассуждают, как защитить приложение андроид. Печально просто это. Надеюсь, кто-то задумается.
я думаю что те, кто минусуют вас за музыку и те кто рассуждают, как защитить приложение под андроид, разные люди.
а вообще были и наверно есть до сих пор сообщения, когда бесплатные приложения с рекламой воровали — просто меняли в них id для рекламной площадки и выкладывали снова в маркет. В результате деньги за рекламу шли не автору приложения.
а вообще были и наверно есть до сих пор сообщения, когда бесплатные приложения с рекламой воровали — просто меняли в них id для рекламной площадки и выкладывали снова в маркет. В результате деньги за рекламу шли не автору приложения.
скажите, а вот вы сами и ваши знакомые много делаете donation'ов?
А вы перестаньте передёргивать, глядишь и не будут люди казаться лицемерными там, где этого нет и в помине. Скажите ещё, что _прослушивание_ музыки без отчислений равносильно убийству… Копирасты — такие копирасты :(
ЗЫ. Да, на случай, если вы совершенно искренне проводите эту параллель, поясняю — рассматриваемая защита — это не защита от копирования, это защита от плагиата. Где вы видели в начинании пиратбея призывы, пособничество, помощь плагиату той же музыки???
ЗЗЫ. Впрочем, таки не думаю, что вы настолько… хм… недалёки, что не понимаете этого. Скорее всего сознательно передёргиваете. Вопрос — зачем вам так нагло и злонамеренно врать?
ЗЫ. Да, на случай, если вы совершенно искренне проводите эту параллель, поясняю — рассматриваемая защита — это не защита от копирования, это защита от плагиата. Где вы видели в начинании пиратбея призывы, пособничество, помощь плагиату той же музыки???
ЗЗЫ. Впрочем, таки не думаю, что вы настолько… хм… недалёки, что не понимаете этого. Скорее всего сознательно передёргиваете. Вопрос — зачем вам так нагло и злонамеренно врать?
Найти бы способ, как заюзать ProGuard при экспорте в IntelliJIDEA, а то кодить в Идее, а релизить в Эклипсе не комильфо :)
Sign up to leave a comment.
Защита Android приложений от реверс-инжиниринга — ProGuard