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

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

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

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

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

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

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

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

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

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

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

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

Intereting Posts
Классы модели Realm должны либо расширить RealmObject, либо реализовать RealmModel, чтобы считаться допустимым классом модели Android: загрузка пользовательских файлов Midi Instruments DLS в Sonivox EAS Панорамная анимация фона в Android Что такое AudioFlinger и почему он не работает TONE_PROP_ACK? Android Fragment – переход от одного вида к другому? Как бороться с DeadObjectException при убитой службе? Иконка Android Text ниже (кнопка) Не удалось получить неизвестное свойство 'processReleaseGoogleServices' Android Studio: сбой поддержки синхронизации с поддержкой -v4-24.1.1.jar Android Syncadapter не позволяет пользователю выбирать синхронизацию или не синхронизацию Является ли руководство по дизайну иконописи android действительным для Android 5 / Дизайн материалов В ScrollView нет импульса выпуска Регулярное выражение, подтверждающее номер карты PAN Есть ли способ отменить onCompletionListener? Как я могу получить результаты из AlertDialog?