Soluci贸n al reto 9 del crackme#1 para Android [1 de 2]

A finales del mes pasado tuvimos el placer de presentaros nuestro primer crackme para sistemas Android. A continuaci贸n a mostraremos la soluci贸n al reto pero, c贸mo de momento s贸lo ha sido superado por unas pocas personas, vamos a dividir el solucionario en dos partes: la primera introduciendo unos conceptos b谩sicos y preparando un emulador para probar la aplicaci贸n, y la segunda que publicaremos un poco m谩s tarde y que contendr谩 la ingenier铆a inversa del apk del reto.

¡Esperamos que con este primer post os anim茅is todos los que todav铆a no lo hab茅is hecho! };)

Introducci贸n

Lo primero que tenemos que tener claro antes de jugar con nuestro apk es el proceso de desarrollo de una aplicaci贸n Android. El lenguaje de programaci贸n de sus aplicaciones es Java y la gran diferencia es que el sistema de Google utiliza una m谩quina virtual llamada Dalvik, que se encarga de optimizar el bytecode compilado para su ejecuci贸n en tel茅fonos inteligentes o smartphones, es decir, sistemas con recursos m谩s limitados.

A prop贸sito de la relaci贸n entre Java y Android os recomiendo echar un vistazo a este excelente art铆culo de RevistaLiNUX.net. En 茅l, podr茅is observar que Dalvik principalmente es una m谩quina basada en registros y no en pila, lo cual le permite utilizar una cantidad baja de memoria, y est谩 dise帽ada para ejecutar cada aplicaci贸n aislada una m谩quina virtual diferente.



Resumiendo el proceso, Android primero compilar谩 una clase escrita en Java y generar谩 un fichero .class con el bytecode. Luego a su vez, el bytecode ser谩 transformado en el formato binario propio de la m谩quina Dalvik: .dex (Dalvik EXecutable):


Finalmente el fichero .dex ser谩 empaquetado en un 煤nico paquete .apk (Android application package) junto con resources, assets y el fichero manifest.

Si descomprimimos el paquete apk del reto lo veremos claramente:


Preparando el entorno

Es evidente que lo primero que necesitamos es un entorno de Java funcionando en nuestro equipo. Al menos JRE (Java Runtime Environment), aunque es recomendable JDK (Java Development Kit) porque incluye un jarsigner.

Una vez instalado procederemos a comprobar que java est谩 incluido en la variable PATH y funcionando:

C:\Users\vmotos>java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

A continuaci贸n necesitamos el SDK de Android que contiene, entre otras herramientas, ADB (Android Debug Bridge) que nos permitir谩 mover ficheros, instalar aplicaciones o conectarnos al shell o int茅rprete de comandos de un tel茅fono (necesitaremos el driver USB) o un emulador (el SDK tambi茅n incluye emuladores de Android).

Para instalarlo primero debemos descargarlo desde http://developer.android.com/sdk/index.html y seguir las instrucciones.

En Windows, b谩sicamente s贸lo hay que instalar el ejecutable o descomprimir el zip:


Y a帽adir al menos una plataforma y los componentes mediante el SDK y AVD Manager (SDK Manager.exe):


Como nota adicional, os recomendamos instalar Eclipse con el plugin ADT (Android Development Tools) para realizar pruebas y disponer de un entorno de desarrollo muy vers谩til.


Una vez instalado el SDK de Android y para probar el crackme del reto, procederemos tambi茅n a levantar un emulador virtual con la versi贸n Froyo actual (Android 2.2).

A continuaci贸n ver茅is que el proceso de creaci贸n es muy sencillo:

1.- En ‘Virtual devices’ del Manager pulsaremos el bot贸n ‘New’:


2.- Posteriormente seleccionaremos el nombre del emulador, el tipo de plataforma (target), el tama帽o de la SD Card virtual, el tema y el hardware emulado:



3.- Finalmente pulsaremos el bot贸n ‘start’ para que arranque el emulador:




Ahora que ya tenemos el emulador levantando, procederemos a instalar el paquete del crackme mediante ADB. Su instalaci贸n tambi茅n es muy sencilla: descargamos el apk y ejecutamos lo siguiente:

D:\android-sdk-windows\platform-tools>adb.exe devices
List of devices attached
emulator-5554 device

D:\android-sdk-windows\platform-tools>adb.exe install crackme1hpys.apk
112 KB/s (11836 bytes in 0.102s)
pkg: /data/local/tmp/crackme1hpys.apk
Success

Despu茅s de la instalaci贸n del apk, podremos ver el icono del crackme en el men煤 de aplicaciones:


Haremos clic en el icono y entraremos en la pantalla principal del crackme:


Ya est谩, ahora s贸lo falta averiguar el usuario y la contrase帽a... ¡el verdadero desaf铆o!

Soluci贸n al reto del crackme#1 para Android
- Parte 1 de 2
- Parte 2 de 2

Comentarios

  1. Es la primera vez que posteo en vuestro blog y s贸lo es para decirles que me encanta y me tiene enganchadisimo. Saludos y hasta pronto.

    ResponderEliminar
  2. Muchas gracias y excelente nick, creo que todos somos o deber铆amos ser eternos aprendices!

    ResponderEliminar
  3. Gracias por la informaci贸n, una pregunta ¿Como se llama el art铆culo que mencionas en la parte de arriba?

    ResponderEliminar
  4. hola @chuche,

    ya no est谩 el art铆culo, parace que el dominio Revistalinux.net ha "volado" :(

    ResponderEliminar

Publicar un comentario