2012-03-15 18 views
5

De acuerdo con este enlace: http://developer.android.com/guide/developing/tools/proguard.html, afirman:Proguard no ofuscar aplicaciones Android

ProGuard hace que su aplicación más difícil de realizar ingeniería inversa, es importante que lo utilice cuando su aplicación utiliza características que son sensibles a las seguridad como cuando está licenciando sus aplicaciones.

¡Pero eso no es cierto! Estoy usando el Proguard más reciente (4.7) incluido en ADT 17 vista previa 4. Yo uso Proguard al exportar mi aplicación mediante la adición de

proguard.config=proguard-android.txt 

En mis project.properties (Proguard-android.txt es sólo la configuración por defecto incluido en ADT 17).

Pero puedo revertir fácilmente Ingeniero mi apk, devolviéndola a su código original mediante estos pasos:

  1. Uso apk-herramienta para extraer el apk.

  2. Uso smali para convertir los archivos en un .smali .dex (apuntar a la carpeta que contiene los archivos .smali, normalmente en el interior/src/com/[companyname]/[nombreaplic] smali)

  3. uso dex2jar para convertir el archivo resultante en un .dex .jar

  4. uso JD-GUI para ver el archivo .jar resultante

Así que mi pregunta es: ¿Estoy haciendo algo mal? ¿O es proguard solo completamente inútil para ofuscar el código?

+0

Simplemente dice que es más difícil realizar ingeniería inversa, pero no es imposible hacerlo exactamente como lo que has hecho. Veo que la gente lo usa principalmente para reducir el tamaño del código. –

+0

jaja Me encantaría saber su definición de "fácil" entonces. ¡Cualquier aplicación se puede diseñar de forma inversa en 4 comandos! Podría entrenar a un mono para que haga eso. –

+0

Solo para aclarar, ¿qué es lo que estás viendo en 'jd-gui', y qué esperas ver? ¿Ves el código original como, más o menos, cómo lo compiló? ¿Estás viendo los nombres de las variables originales en tus métodos, etc.? –

Respuesta

1

Si está utilizando las bibliotecas de compatibilidad android.support. * Esto puede ser la raíz de un problema. Añadir las siguientes líneas a su archivo de configuración Proguard:

-dontwarn android.support.** 
-keep class android.support.** { *; } 

La forma más fácil de diagnosticar problemas Proguard es la construcción de una aplicación con la hormiga de Apache. Verás todas las advertencias y errores en stderr.

Esto es aplicable a todas las bibliotecas que usan carga dinámica de clase, reflexión y múltiples implementaciones de la misma clase que dependen de la versión API.

Cuestiones relacionadas