Как перепроектировать/декомпилировать 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.