Как удалить файл JAR с помощью mapping.txt, сгенерированного Proguard?

Это может показаться подозрительным, но мне нужно отключить собственное приложение. Некоторое время назад я опубликовал свое приложение, которое я запутал в Proguard. К сожалению, я не сохранил эту версию приложения и сильно изменил код.

Теперь мне нужен код этой старой версии. У меня все еще есть файл mapping.txt, сгенерированный Proguard.

Я преобразовал файл classes.dex в jar (с помощью инструмента dex2jar), теперь мне нужно деобфусцировать его в соответствии с mapping.txt. Есть ли инструменты, которые могут мне помочь? Может, сам Proguard?

UPD. Мне нужен инструмент, который может автоматически переименовывать все классы, функции и т. Д., Поэтому мне не нужно делать это вручную. Спасибо

2 ответа

Решение

Если у вас есть сопоставления, то вы можете получить обратно каждый класс, поле и имя метода. Вы можете использовать java-asm (библиотека изменения байт-кода), чтобы переназначить имена классов и членов. Большая часть работы будет обновлять дескрипторы членов.

Я сделал один для себя, и потребовалось около дня, чтобы все заработало надежно.

Изменить: Это не идеально, но это чертовски близко. Ссылка Снимок экрана с графическим интерфейсом Дайте ему защищенный файл jar, сопоставления, и он переименует все, что сможет найти. Есть несколько проблем, но если вы просто посмотрите на источник, он должен выполнить свою работу. Просто скопируйте созданный jar (FileName + "-Re.jar") в декомпилятор, такой как Luyten/JD-GUI. Также файловые входы изменяются только с помощью кнопок. Текстовые поля предназначены только для визуальной обратной связи / подтверждения.

Редактировать 2: Исправлено NPE, возникающее, когда запись класса в отображениях не существует в данном банке.

Редактировать 3: Исправлено множество проблем, из-за которых методы не переименовывались.

Редактировать 4: Выгрузил скомпилированный jar в github (выпуски, в zip-файле он находится в утилите картирования), добавлена ​​поддержка нескольких типов картирования.

Я предлагаю использовать инструмент Proguard, как предложено в ответе выше, вместе с Enigma. Решение вашей проблемы не может быть очень простым, и вам нужно использовать комбинацию доступных инструментов для ее решения.

Другие вопросы по тегам