ProGuard - вопрос по деобфускации кода

Я только что начал знакомится с ProGuard, и мне стало интересно, а как вообще код который был обфусцирован ProGuard можно деобфусцировать? В интернете почитал, говорится, что там нужны маппинги(map.txt), но

  1. Откуда их брать?
  2. Если их нету, то можно ли еще как то деобфусцировать? Вопрос именно про обычные Java приложения, не android

Ответы (1 шт):

Автор решения: Спицко Дмитрий

Сначала немного снобизма. ProGuard - не обфускатор. По функционалу он ближе к минимайзеру чем к обфускатору. Она тупо заменяет названия классов, методов и переменных на максимально возможно короткие, и только. Глядя на код все равно понятно что происходит. А вот обфусцированный код выглядит как месиво из команд, не имеющих никакого смысла.

А теперь по делу. В процессе работы proGuard создает файл mapping.map, где сохраняет информацию о том как что изначально именовалось. Находите куда он у вас сохраняется, забираете

Теперь нужен софт, чтобы этот мап-файл приминить для ренейминга. У меня в android SDK нужное приложение лежит в C:\Users\User\AppData\Local\Android\Sdk\tools\proguard\lib\proguardgui.jar Запускаете, выбираете пункт retrace и вперед

Рядом с этой gui лежит retrace.jar, вдруг разберетесь как ей пользоваться и сделаете себе автоматически весь проект "деобфусцирующий" инструмент

→ Ссылка