¿Cómo invertir el ingeniero / descompilar un APK Android que se ofuscó con ProGuard?

Por desgracia, he perdido el código fuente de una de mis aplicaciones que he ofuscado con ProGuard.
Todavía tengo el archivo .apk y algunos archivos de configuración que fueron generados por ProGuard:

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

¿Qué he hecho hasta ahora?

  1. Archivos de recursos decodificados utilizando apktool .
    Yay, tengo los de vuelta!

  2. .apk archivo .apk y convirtió el archivo classes.dex en un archivo .jar usando dex2jar .

Si ahora veo el código fuente (archivo .jar) usando JD-Gui , veo mi código ofuscado. Algo como esto:

 class c { TextView a; TextView b; TextView c; TextView d; CheckBox e; } protected List a(Uri[] paramArrayOfUri) { ... } protected void a(List paramList) { ... } 

También algunos bucles se ven un poco extraño. No escribo bucles infinitos:

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

¿Es posible volver a asignar el código ofuscado a mi código fuente original utilizando cualquiera de los archivos .txt de ProGuard? Me gustaría ver mis propios nombres de variables / firmas de métodos.
¿O estos archivos sólo se pueden utilizar para seguir huellas de pila de informe de fallo?

Todo lo que estás buscando está en el archivo mapping.txt, pero nunca he visto una herramienta que lo invierta todo. Algunas de las ofuscaciones que realiza Proguard no son simplemente cambiar el nombre de los métodos y variables, por lo que es probable que no pueda hacer lo que está intentando hacer. retrace.jar que viene con la descarga de Proguard podría llegar un poco más, pero estoy bastante seguro de que tiene que usar eso con un archivo stacktrace.

  • ¿Se recomienda la combinación de clases con ProGuard en Android / Dalvik?
  • ProGuard para Android y Retrofit2 Converter Gson?
  • Proyecto de la biblioteca de Android: Obfuscate and keep resources
  • FileNotFoundException en el archivo proguard-rules.pro
  • Archivo proguard obsoleto; Usar -contienen a los miembros en vez de -contemplarlosconmiembros
  • Android-Studio-1.2.RC Advertencias de Proguard en la referencia de la biblioteca de Square Okio
  • Problemas con la ofuscación del proyecto de la biblioteca de Android con Proguard
  • Proguard dando "Warning: org.msgpack. *"
  • No se puede obtener jar biblioteca para trabajar con Android y Proguard
  • Proguard rompe el archivo de audio en activos o en bruto
  • Proguard no puede encontrar el método referenciado 'void allowCoreThreadTimeOut (boolean)'
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.