Una de las partes fundamentales a la hora del estudio de
aplicaciones móviles es controlar el reversing de las mismas, con APKTool y
Dex2Jar se puede hacer de forma muy sencilla.
Dex2Jar para hacer el reversing a archivos. Jar que seguro
os suenan o resultan más familiares de leer.
APKTool es la herramienta que “aglutina” varias herramientas
la que nos interesa para este caso es backsmali, hace un reversing de la
aplicación a código SMALI, este es el código que entiende la DVM, por decirlo
de otro modo, el código que entiende internamente la máquina virtual de
Android.
Lo habitual es hacer reversing con el Dex2Jar, abrir los
archivos con JD-GUI y después desde la misma se guardan de forma que, ya son
más o menos legibles desde tu editor de códigoi habitual (eclipse, Androdi
Studio…).
Existe la forma de que, con paciencia, hacer el árbol de
directorios de la aplicación Android y meter estos jar en su correspondiente
carpeta dando la falsa ilusión de que se podría modificar ese código Java y
volver a compilar.
Pues esto es erróneo, no se puede volver a compilar este
código. El compilador cuando realiza el compilado (menudo trabalenguas) de las
aplicaciones modifica el código optimizándolo y variándolo a su necesidad. El
resultado de ello es que cuando estas revisando el código con JD-GUI puede ver
casos en que devuelve un error y no muestra el código:
Esto es porque no ha podido hacer el reversing completo de
ese archivo, en cuanto tengas en el resto del programa alguna referencia al
mismo éste devolvería un error. Además de que no tienes la certeza de que el
100% de código Java obtenido por reingeniería es el auténtico. Como os digo el
compilador realiza muchos trabajo sobre el mismo.
¿Existe alguna manera entonces de modificar el código fuente
de una APK?
Si, tal y como hemos mencionado al principio APKTool incluye
BackSmali. El código Smali sí se puede tocar, modificar y volver a compilar.
Para ser un código más cercano al hardware que Java es
bastante legible por lo que os invito a que hagáis la prueba, en Smali cambios
básicos no son excesivamente complicados de hacer y rápidamente te orientas en
el código.
Os dejo un par de enlaces para quienes quieran quieran
aprender más sobre Smali:
No hay comentarios:
Publicar un comentario
Esperando tu comentario...