¿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:
-
dump.txt
-
mapping.txt
-
seeds.txt
-
usage.txt
¿Qué he hecho hasta ahora?
- Quitar la biblioteca externa de clases obfuscated.jar (en Android Studio / Gradle)
- transformClassesAndResourcesWithProguardForRelease 'en Android
- El uso de ProGuard causa NoSuchFieldError para ACRA
- Android Proguard java.io.IOException: No se puede leer [proguard.ClassPathEntry
- Reducir la biblioteca de Google Play Services para usarla únicamente con Google Analytics
-
Archivos de recursos decodificados utilizando apktool .
Yay, tengo los de vuelta! -
.apk
archivo.apk
y convirtió el archivoclasses.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?
- Hora de Joda y error de ProGuard al exportar .apk
- Android Proguard - sólo ofuscación
- Cómo corregir la advertencia proguard 'no se puede encontrar el método de referencia' para los métodos existentes 'clonar' y 'finalizar' de la clase java.lang.Object
- Android Proguard - ¿es la mejor práctica mantener todas las librerías de terceros?
- ¿Por qué Butterknife @Bind falla en la compilación de liberación (después de proguard)
- ¿Dexguard evita grietas simples de LVL?
- ProGuard: ¿duplicado definición de biblioteca clase?
- Ofuscación de clases de modelo ORMLite con Proguard
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.
- No se puede encontrar la clase de símbolo en Android Studio
- Gradle no funciona: Error de ejecución para la tarea ': MyApp: compileDebug'