2013-02-09 22 views
15

Niestety, zgubiłem kod źródłowy jednej z moich aplikacji, które zaciemniłem za pomocą ProGuard.
Nadal mam plik .apk i niektóre pliki konfiguracyjne, które zostały wygenerowane przez PROGUARD:Jak wykonać inżynierię wsteczną/dekompilować plik APK systemu Android, który został zaciemniony przy użyciu ProGuard?

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

Co zrobiłem do tej pory ?

  1. pliki dekodowany z wykorzystaniem zasobów apktool.
    Yay, mam je z powrotem!

  2. Wyekstrahowane .apk plików i przekonwertowane classes.dex do pliku .jar stosując dex2jar.

Gdybym teraz zobaczyć kod źródłowy (plik .jar) używając JD-Gui, widzę pogmatwanego kod. Coś takiego:

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

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

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

Również niektóre pętle wyglądają nieco dziwnie. Nie piszę nieskończone pętle:

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

Czy możliwe jest ponowne mapowanie zaciemniony kod do mojego oryginalnego kodu źródłowego przy użyciu dowolnej z plików .txt PROGUARD za? Chciałbym zobaczyć własne podpisy nazw zmiennych/metod.
Czy te pliki mogą być używane tylko do śledzenia śladów stosu raportu awarii?

Odpowiedz

3

Wszystko, czego szukasz, znajduje się w pliku mapping.txt, ale nigdy nie widziałem narzędzia, które odwróci to wszystko. Niektóre z obfuscacji, które wykonuje Proguard, to nie tylko proste zmienianie nazw metod i zmiennych, więc są szanse, że nie będziesz w stanie zrobić tego, co próbujesz zrobić. plik retrace.jar, który jest dostarczany wraz z programem Proguard, może Ci trochę pomóc, ale jestem pewien, że musisz go użyć z plikiem stacktrace.