Cómo deobfuscate jar archivo utilizando mapping.txt generado por Proguard?

Esto puede sonar sospechoso, pero necesito deobfuscate mi propia aplicación . Hace algún tiempo he publicado mi aplicación que he ofuscado con Proguard. Desafortunadamente no he guardado esa versión de la aplicación y he cambiado mucho el código.

Ahora necesito el código de esa versión anterior. Todavía tengo el archivo mapping.txt generado por Proguard.

He convertido el archivo classes.dex a jar (usando la herramienta dex2jar), ahora necesito desobfuscatelo de acuerdo a mapping.txt. ¿Hay alguna herramienta que me pueda ayudar? Tal vez Proguard en sí?

UPD. Necesito una herramienta que puede renombrar automáticamente todas las clases, funciones etc, así que no tengo que hacerlo manualmente. Gracias

2 Solutions collect form web for “Cómo deobfuscate jar archivo utilizando mapping.txt generado por Proguard?”

Si tiene las asignaciones, puede recuperar todas las clases, campos y nombres de métodos. Puede usar java-asm (una biblioteca de modificaciones de bytecode) para reasignar los nombres de clase y miembro. La mayor parte del trabajo será la actualización de los descriptores de los miembros.

Hice uno para mí y tomó sobre un día para conseguirlo que trabaja confiablemente.

Edit: No es perfecto, pero es muy cerca. Enlace . Captura de pantalla de la GUI Darle un archivo jar proguarded, las asignaciones y renombrar todo lo que puede encontrar. Hay algunos problemas, pero por sólo mirar la fuente debe hacer el trabajo. Simplemente descargue el tarro que hace (FileName + "-Re.jar") en un descompilador como Luyten / JD-GUI. También las entradas de archivo sólo se cambian a través de los botones. Los cuadros de texto son sólo para la retroalimentación visual / confirmación.

Edición 2: NPE fijo que ocurre cuando la entrada de clase en asignaciones no existe en el tarro dado.

Edición 3: Corregido un montón de problemas que resultan en los métodos que no se renombró.

Edit 4: Cargado jar compilado a github (lanzamientos, en el archivo zip que está en la utilidad de mapeo) , añadió soporte para múltiples tipos de asignación.

Sugiero utilizar la herramienta proguard como se sugiere en la respuesta anterior junto con Enigma . La solución para su problema no puede ser muy sencilla y necesita usar una combinación de herramientas disponibles para resolverlo.

  • Anular correctamente las opciones de proguard
  • Kotlin, Proguard y lambdas
  • Proguard no advierte y dontnote que no toma efecto
  • Proguard Retrace no funciona con información de tiempo de ejecución de stacktrace como E / AndroidRuntime (10237):
  • Proguard Android, mantener la clase interna
  • Eliminación de cadenas no utilizadas durante la optimización de ProGuard
  • Error Proguard Número de versión de clase no admitido
  • Advertencias de Proguard "no se puede escribir recurso (entrada de zip duplicado)"
  • ProGuard causa error de handshake SSL en Android
  • ¿Debo mantener android.support.v4.app.Fragment y sus clases derivadas al crear una versión de lanzamiento de mi aplicación?
  • Generación de un archivo de configuración de Pro Guard con Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.