2013-02-09 1 views
15

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

  1. dump.txt
  2. mapping.txt
  3. seeds.txt
  4. usage.txt

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

  1. Декодированных файлы ресурсы с использованием apktool.
    Yay, у меня есть все это!

  2. Извлеченные .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; 
} 

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

ответ

3

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