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:
Uso apk-herramienta para extraer el apk.
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)
uso dex2jar para convertir el archivo resultante en un .dex .jar
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?
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. –
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. –
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.? –