2012-04-02 3 views
0

Я разрабатываю приложение для Android, которое выйдет в ближайшее время. Некоторые из моих классов содержат очень важную информацию. Используя Proguard, я запутал весь исходный код, но позже я встретил большое количество ошибок. Теперь я планирую обфускацию кода один за другим. Как обфускать определенный класс и пропустить большую часть класса? Спасибо.Как обфускать определенный класс на Android?

+2

Возможно полезно: http://stackoverflow.com/questions/4458909/how-to-use-java-annotations-to-guide-androids-proguard – Thilo

+0

Вы понимаете, это не имеет никакого смысла, потому что .class и .dex файлы разные. Dex - это все классы в одном файле, невозможно просто изменить один класс, потому что вам также придется изменить все ссылки на него в другом месте вашего кода. –

+1

Мое объяснение может немного странно. Я намерен запутать класс и найти некоторые ошибки, которые могут возникнуть. Если это безопасно, я включу другой класс в следующий процесс обфускации и снова найду некоторые ошибки. Я повторю этот шаг, пока не почувствую, что выйдет на рынок. – KnightCavalry

ответ

0

У меня было много проблем с запутанными Java-классами. На самом деле yGuard (yGuard! = Proguard, я знаю) генерировал файлы * .class, которые не могли конвертироваться в * .dex.

Если ваш код содержит важные данные, это звучит как «security by obscurity». Возможно, вы должны хранить конфиденциальные данные не в вашем файле * .class, а не в зашифрованном файле свойств.

+0

Но тогда можно декомпилировать файлы .class и получить ключ дешифрования. Неважно, что вы делаете, если вы полагаетесь на безопасность безвестности, всегда будет возможность ее разбить. – Marcelo

+0

Jes, конечно. Вот почему я упомянул не хранить секреты в * .class-файлах. Если вы храните секретный секрет в своем коде, его можно украсть. –

+0

Да, я рассмотрю ваш совет @ckuetbach. Но мне все еще нужно запутывать код. Я знаю, что это не сильно поможет супер-гениальному хакеру. Но это должно предотвратить любую очевидную попытку обратной инженерии. – KnightCavalry

0

Попробуйте использовать как этот

Если вы хотите, чтобы сделать процесс запутывания в конкретном классе, вы можете использовать следующие строки кода.

Синтаксис:

-keep public class yourPackageName.youClassname { *; } 

Пример:

-keep общественного класса com.facebook.katana.MainClass {*; }

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