2013-02-09 16 views
15

Purtroppo, ho perso il codice sorgente di una delle mie app che ho offuscato usando ProGuard.
ho ancora il file .apk e alcuni file di configurazione che sono stati generati da ProGuard:Come decodificare/decompilare un APK Android che è stato offuscato con ProGuard?

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

Che cosa ho fatto finora ?

  1. file di risorse decodificati con apktool.
    Yay, li ho recuperati!

  2. Estratte .apk di file e convertito il file classes.dex in un file utilizzando .jardex2jar.

Se io ora visualizzare il codice sorgente (file .jar) utilizzando JD-Gui, vedo il mio codice offuscato. Qualcosa del genere:

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

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

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

Anche alcuni anelli sembrano un po 'strani. Non scrivo cicli infiniti:

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

E 'possibile ri-mappare il codice offuscato al mio codice sorgente originale utilizzando uno qualsiasi dei file .txt di Proguard? Mi piacerebbe vedere i miei nomi delle variabili/firme dei metodi.
Oppure questi file possono essere utilizzati solo per seguire le tracce dello stack dei crash report?

risposta

3

Tutto quello che stai cercando è nel file mapping.txt, ma non ho mai visto uno strumento in grado di invertire tutto. Alcune delle offuscamenti che Proguard esegue non sono solo la semplice rinomina dei metodi e delle variabili, quindi è probabile che non sarai in grado di fare ciò che stai cercando di fare. retrace.jar che viene fornito con il download di Proguard potrebbe farti un po 'oltre ma sono abbastanza sicuro che devi usarlo con un file stacktrace.

Problemi correlati