Reversing Android Crackmes for Fun

[Español] Hace tiempo que quería escribir sobre crackme en Android, ya que son un magnífico ejercicio para aprender técnicas de ingeniería inversa para Apps que luego podemos aplicar para analizar malware o buscar vulnerabilidades 😉

Para este post he pensado que sería interesante comentar algunas herramientas que podemos usar y por desgracia los pocos crackmes que existen para Android. No es mi intención escribir un tutorial de ingeniería inversa, eso lo dejo para el lector!

[English] I have been waiting to write about Android crackmes for a while since they are a wonderful exercise to learn reverse engineering techniques for Apps that we can later apply to analyze malware or to find vulnerabilities 😉

For this post I thought it would be interesting to comment on some tools you can use and unfortunately the few crackmes that exist for Android. It is not my intention to write a tutorial on reverse engineering, that I leave to the reader!

Herramientas / Tools

Como Android es la plataforma de moda para los hackers se han desarrollado diversas herramientas que podemos utilizar y que voy a comentar a continuación.

  • Android SDK: el kit oficial de Google para desarrollar Apps, donde podemos encontrar utilidades como el Emulador para crear imágenes Android con las que jugar, el ADB, una potente utilidad que nos permite comunicarnos con Android y realizar diversas tareas, así como las herramientas de desarrollo.
  • Androguard: estupendo kit para realizar ingeniería inversa, está escrito en python por lo que es ideal para escribir scripts
  • Dex2jar: convierte los binarios de Android (.dex) en ficheros java (.class) para facilitar su análisis
  • JAD: decompilador java
  • Smali: ensamblador / desensamblador del formato Dex
  • Jd-gui: decompilador java

Existen más herramientas pero éstas son un buen comienzo. Aparte en mi caso también utilizo varias herramientas que he desarrollado para esta tarea y que algún día publicaré 🙂

As Android has become hacker’s playground various tools have been developed that we can use and we will comment below.

  • Android SDK: the official kit from Google to develop Apps, where you can find utilities as the emulator to create Android images to play with, the ADB, a powerful utility that allows us to communicate with Android and perform various tasks, as well as the development tools.
  • Androguard: super kit for reverse engineering, is written in python so it’s ideal for writing scripts
  • Dex2jar: convert Android binaries (.dex) to Java (.class) files to facilitate analysis
  • JAD: java decompiler
  • Smali: assembler / disassembler of the Dex format
  • Jd-gui: java decompiler

There are more tools but the discussed here are a good start point. In my case I also use several tools that I have developed myself for this task, which someday I will publish 🙂

Crackmes

Como mencioné anteriormente existen muy pocos crackmes de Android, en la actualidad yo sólo conozco 4. Comentaré 2 de los crackmes aunque no daré ninguna solución al reto, y los otros 2 para que el lector se entretenga.

As mentioned previously there are very few Android crackme, I only know 4. I will comment on two crackmes although I will not give any solution to the challenge, and the other two crackmes for the reader’s entertainment.

Crackme1hpys / Crackme1hpys

Los chicos de Hack Players publicaron un reto crackme en diciembre 2010 que consistía en averiguar la contraseña de la aplicación. Aunque superé el reto llegué tarde 😉

En la Fig. 1 podemos ver que al ejecutar el crackme se nos pide un usuario y contraseña que a priori no conocemos. Utilizando las herramientas antes descritas comenzamos el análisis del crackme.

The guys from Hack Players published a crackme challenge in December 2010 which consisted in finding out the username and password for the application. Although I did overcome the challenge I did arrive late 😉

In the Fig. 1 we can see that when you run the crackme it is asking for a username and password that we don’t know. Using the tools described above we start analyzing the crackme.


Fig .1 – Pantalla de inicio / Main screen

En la Fig.2 introducimos un usuario y contraseña al azar para ver qué mensajes nos proporciona el crackme. Muchas veces con los mensajes de error podemos obtener información interesante. 

In the Fig.2 we enter a username and password at random to see what messages crackme provides us with. Many times error messages provide interesting information.


Fig. 2 – Contraseña inválida / Invalid password

En este punto hemos analizado el crackme y hemos obtenido el usuario y contraseña correctos como se puede ver en la Fig. 3. Lo cierto es que es un reto fácil aunque entretenido.

Estrategias de análisis: para estos crackmes o incluso cualquier App tenemos dos estrategias principales: análisis estático del código o análisis dinámico manipulando el App.  

At this point we have analyzed the crackme and obtained the correct username and password as you can see in the figure 3. It is true this is an easy challenge but entertaining as well.

Analysis strategies: for these crackmes or even any App we have two main strategies: static code analysis or dynamic analysis by manipulating the App.


Fig. 3 – Hemos superado el reto! / Challenge  overcome!

Aquí podréis encontrar la solución.

Here you will find the solution.

Serie crackme0X! / Crackme0X! series

Deurus, el alias del autor, publicó 3 crackmes (crackme01, crackme02 y crackme03) aunque por desgracia la página que los alberga y que era un magnífico portal de crackmes ya no está disponible y desde aquí esperamos que vuelva algún día.

Para estos crackmes seguimos el procedimiento del anterior crackme y en la Fig. 4 podemos ver cómo hemos obtenido un valor válido.

Los crackme02 y crackme03 los dejo para que el lector se entretenga 🙂

Deurus, author alias, published 3 crackmes (crackme01, crackme02 and crackme03) but unfortunately the page containing them that was a magnificent portal of crackmes is no longer available and from here we hope it returns someday.

For these crackmes we follow the procedure earlier described with the above crackme and in the Fig. 4 we can see how we have obtained a valid value.

We leave crackme02 and crackme03 to the reader for his amusement 🙂


Fig. 4 – Jugando con Crackme01 / Playing with crackme01

Los crackmes han sido siempre un buen ejercicio para aprender ingeniería inversa, análisis de aplicaciones, buscar vulnerabilidades y para algunos quitar protecciones. Hoy en día existen crackmes de todas clases y lenguajes.

Yo sólo conozco estos 4 crackmes para Android por lo que si el lector conoce alguno más le agradeceré que me envíe un email, por favor 🙂

Qué crackmes recomiendas?

Crackmes have always been a good exercise to learn reverse engineering, applications analysis, how to look for vulnerabilities, and for some remove protections. Today there are crackmes of all classes and languages.

I only know these 4 crackmes for Android so if the reader knows some more send me an email, please 🙂

What crackmes do you recommend?

— Simon Roses Femerling

This entry was posted in Hacking, Pentest, Security, Technology and tagged , , , , , , , . Bookmark the permalink.

One Response to Reversing Android Crackmes for Fun

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.