Как перепроектировать/декомпилировать Android APK, который был запутан с помощью ProGuard?

К сожалению, я потерял исходный код одного из моих приложений, которое я запутал с помощью ProGuard.
У меня все еще есть файл .apk и некоторые файлы конфигурации, которые были созданы ProGuard:

  • dump.txt
  • mapping.txt
  • seeds.txt
  • usage.txt

Что я сделал до сих пор?

  • Декодированные файлы ресурсов с помощью apktool.
    Да, у меня есть все!

  • Извлечен .apk файл и преобразовал файл classes.dex в файл .jar, используя dex2jar.

Если я теперь просматриваю исходный код (.jar файл) с помощью JD-Gui, я вижу мой запутанный код. Что-то вроде этого:

class c {
  TextView a;
  TextView b;
  TextView c;
  TextView d;
  CheckBox e;
}

protected List a(Uri[] paramArrayOfUri) { ... }

protected void a(List paramList) { ... }

Также некоторые петли выглядят немного странно. Я не пишу бесконечных циклов:

while (true) {
     if (!localIterator.hasNext())
        return localArrayList;
     ProviderInfo[] arrayOfProviderInfo = ((PackageInfo)localIterator.next()).providers;
     if (arrayOfProviderInfo == null)
        continue;
     int i = arrayOfProviderInfo.length;
}

Возможно ли перекомпоновать обфускационный код в исходный исходный код с помощью любого из файлов ProGuard.txt? Я хотел бы видеть мои собственные имена переменных/методов.
Или эти файлы могут использоваться только для отслеживания трассировки стека отчетов?

Ответы

Ответ 1

Все, что вы ищете, находится в файле mapping.txt, но я никогда не видел инструмент, который бы полностью изменил бы все. Некоторые из запутываний, которые выполняет Proguard, - это не просто переименование методов и переменных, так что, скорее всего, вы не сможете делать то, что вы пытаетесь сделать. retrace.jar, который поставляется с загрузкой Proguard, может немного помочь вам, но я уверен, что вы должны использовать это с файлом stacktrace.