Вопросы о Proguard - PullRequest
       7

Вопросы о Proguard

0 голосов
/ 08 марта 2012

Я запутал свое приложение с помощью ProGuard 4.7.После этого я распаковал свое приложение, используя Dex2Jar.И я не был доволен результатом запутывания.И у меня есть следующие вопросы:

1 .. Как замаскировать строковую константу?

(Возможно, используется эта опция: строковая константа загружается с сервераЯ знаю, что это повлияет на производительность, но защита в первую очередь)

2 .. Как переименовать стандартные имена классов?

Например: после обфускации стандартного классаимена остаются без изменений.(может делать копии всех стандартных классов, а затем ProGuard переименует их)

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.telephony.TelephonyManager;

3 .. ProGuard создал много новых пакетов, но все рабочие классы находятся водин из них. Как разместить их в разных упаковках?

a.a
b.a
my.package.name // here all working classes of my app
b.b
c.c

4 .. Почему некоторые названия моих классов не изменились?

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

Я могу помочь с несколькими из них.

  1. Получение строки с вашего сервера - это мягкая защита, но затем злоумышленник увидит этот URL-адрес и заберет его содержимое (или переместит его). Вы замедлили работу приложения и привязали пользователя к доступу в интернет практически без выгоды. Proguard не может сделать это из коробки, если вы действительно хотите запутать ваши строки, закодируйте их в Base64. Это не сильно замедлит кого-то, но по крайней мере это не очевидно. Дополнительная информация: скрытие строк в обфусцированном коде

  2. Незнайка

  3. Незнайка

  4. Существует ряд классов и интерфейсов, которые должны иметь общедоступные имена. Службы, действия, определения AIDL - это лишь некоторые из них, но если вы хотите получить лучшую идею, опубликуйте имя класса / интерфейса и классы, которые он получил из / реализаций.

1 голос
/ 08 марта 2012

Вопрос 2. Вы не можете заставить ProGuard переименовывать их, поскольку они являются частью телефона.Вы не теряете никакой защиты от запутывания, если не скрыты внешние классы.Попытка сделать локальные копии, которые вы включили в свое приложение, приведет вас к гибельному пути, вам нужны версии, которые есть на телефоне.

Вопрос 3. Это ожидается и относится к вопросу 4.Любая часть пакета, содержащая ваши действия (или другие общедоступные точки входа), должна поддерживать этот путь.

Поэтому, если у вас есть пакеты:

com.mycompany.myapp.activities

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

Похоже, ProGuard работает так, как должно быть в ваших настройках.

...