Запутывающие классы, которые содержат аннотации - PullRequest
2 голосов
/ 02 февраля 2012

При запутывании файлов .class аннотации удаляются. Есть ли способ запутать эти файлы (файлы, содержащие аннотации), не удаляя их. Есть ли способ обфусцировать не скомпилированные файлы .java для сохранения аннотаций, если это возможно?


Как Java-компилятор обрабатывает аннотации и где они хранятся? почему после запутывания все аннотации удаляются. Не могу ли я, запутав классы, вернуть аннотации и поставить их на место, чтобы работать?

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Я спросил и исследовал аннотации и запутывание, и нашел следующее:

  1. Аннотации хранятся в мета-секции байт-кода класса и ими очень трудно манипулировать. Программы запутывания не имеют дело с такими классами
  2. Я перепробовал много обфускаторов - коммерческих и с открытым исходным кодом. те, но ни один из них не может запутать аннотированные классы, которые имеют все их поля и методы аннотированы
  3. Единственный путь, который я мог придумать, это использовать настроенный xml файлы вместо аннотаций
0 голосов
/ 02 февраля 2012

Мы обычно запутываем уже скомпилированные классы с помощью proguard , и я уверен, что невозможно запутать не скомпилированные файлы .java, поскольку он работает с самим байт-кодом.

Чтобы сохранить свои аннотации, вы можете указать proguard оставить определенные атрибуты, такие как аннотации. Вы можете найти больше информации в их примере главы . Я рекомендую использовать proguardGui для создания собственного файла конфигурации для процесса запутывания.

...