Todo
desarrollador en alguna oportunidad ha tenido la necesidad o la curiosidad de
realizar la "Ingeniería Inversa" a un programa para verle las
tripas.
En mi caso
lo he realizado alguna vez para investigar el código de algo que me llamaba la
atención, en particular lo hice muchas veces con la gxclassr.zip de GeneXus
hasta que publicaron el código fuente.
En la
actualidad me encuentro investigando Android por lo que me puse a buscar
herramientas que a partir de un ".apk" me permitieran ver el
código fuente. En internet encontré un documento PDF que explica muy claramente
como realizar Ingeniería inversa básica en Android, de todas
formas hago un resumen para los que no les gusta leer mucho.
En otro post
explique que son los APK por lo que voy directo al grano:
a)
Descomprimir el APK con cualquier herramienta que tengan a mano, en mi caso
winrar
b) Tomar el
classes.dex (Dalvik Executable) y usar el dex2jar
para convertirlo a jar
c) Tomar el
JAR y pasarlo por el JD-GUI
Siguiendo
estos pasos podemos tener el código fuente de un apk, siempre nos podemos topar
con algún código "ofuscado" o protegido con proGuard pero siempre
existe forma por lo que usa google y tendrás resultados.