Деобфускация ProGuard в Sentry с чистой Java - PullRequest
0 голосов
/ 05 декабря 2018

Context

Мы стремимся запутать наше Java-приложение ProGuard , однако мы также используем Sentry для выявления проблем, особенно в производственных клиентах.

Я создал простой Gradle конвейер, чтобы включить Sentry в проект песочницы, скомпилировать его, запустить его, собрать JAR, а затем запутать указанный JAR.

Как и ожидалось Sentry получает журналы от запутанных классов, поэтому все, что приходит из моего JAR-файла, не читается.Ошибки во внешних зависимостях по-прежнему читаются нормально.Пример-stacktrace:

a.e in actionPerformed
javax.swing.AbstractButton in fireActionPerformed
javax.swing.AbstractButton$Handler in actionPerformed
javax.swing.DefaultButtonModel in fireActionPerformed

Обратите внимание на a.e in actionPerformed, где a.e - это мой класс, а actionPerformed происходит от Swing , , т.е. , от зависимости.

Вопрос

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

https://docs.sentry.io/cli/dif/proguard/

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

Доступно для меня:

  • My build.gradle, что является возможной точкой входа для достижения этой цели.
  • proguard_config.pro, конфигурация ProGuard , определяющая процесс запутывания.
  • sentry.properties файл, в котором установлен DSN.
  • proguard_mapping файл, который, как я полагаю, долженбыть предоставленным серверу под управлением Sentry .

Как мне решить эту проблему?Если ничего не поможет, наше решение будет заключаться в уменьшении степени запутывания, пока сообщения, переданные Sentry , не станут достаточно читабельными, чтобы быть полезными для нас.Однако оптимальным решением является полное запутывание JAR, а затем деобфусцировка классов и методов непосредственно в Sentry .

До сих пор я потратил много времени на изучение Gradle с нуляи затем загружаем ProGuard и Sentry с моим Gradle конвейером.Как показывает трассировка стека, это уже работает, но я наткнулся на стену с отображением.Кто-нибудь может указать мне правильное направление?

...