El es Todopoderoso, al cual no alcanzamos, grande en poder; Y en juicio y en multitud de justicia no afligirá. Lo temerán por tanto los hombres; El no estima a ninguno que cree en su propio corazón ser sabio. (Job 37:23-24)
Hoy voy a hablaros de como obtener el código fuente (o como se conoce más comúnmente, el source code) de una .apk. A veces, yo, como desarrollador de aplicaciones, me gusta "espiar" (sí queréis el término que yo uso, es "mirar el trabajo de los otros para aprender y aplicarlo al mío propio", pero que vamos, viene a ser lo mismo) el trabajo de los demás. Pero hay una barrera, que se llama .apk. Que yo sepa, no existe ningún editor de código que pueda leer los .apk y abrirlos como si fuera un source code, para poder leerlos, y por eso, tenemos que usar técnicas un poco más "oscuras" y deshacer esos .apk para convertirlos en source code.
Bien, demasiada explicación aburrida, vayamos manos a la obra.
¿Qué vamos a necesitar?
- Un programa que se llama apktool (¿original, eh?). La copia que os doy es una preparada por mí :).
- Otro programa para leer el source code (Yo usaré Eclipse configurado con el ADT de Android (o si queréis ahorraros todo el paso de intalar el JDK, y las ADT y todo, usad el ADT-Bundle de Android)). Vosotros podéis usar Netbeans o lo que queráis.
- Descargar el .apk que queramos descomprimir.
- Otro programa para leer .jar y descomprimir las clases. Yo uso el JD-GUI.
- Nos descargamos el archivo que he preparado (este).
- Lo descomprimimos y ponemos la carpeta en C:\Windows.
- Y ya está. No era tan complicado, ¿eh? ;).
- Ejecutamos el cmd.lnk como administradores (Click derecho -> Ejecutar como administrador).
- Os debería salir una línea de código que ponga C:\Windows\apktool1.5.2>. Si no os sale, escribís "cd C:\Windows\apktool1.5.2" y le dais a enter.
- Una vez aquí, es útil copiar y pegar el archivo que queremos descomprimir dentro de la misma carpeta del apktool. Cuando lo tenemos dentro, escribimos apktool d NombreDelArchivo.apk. Como ya os he dicho, en mi caso estoy usando una app que se llama DramaButton.apk, así que se vería así:
CMD en el paso 3. - Ejecutamos y obtenemos una carpeta:
- Ahora vamos a ejecutar el siguiente comando para obtener las clases de la app. Escribimos jar xvf NombreDelArchivo.apk classes.dex y se nos creará un archivo que se llamará classes.dex
CMD y classes.dex en el paso 5 - Es raro que alguien conozca que es el archivo .dex, así que vamos a pasarlo a .jar para poder pasarlo al JD-GUI y poder leer las clases. Escribimos dex2jar classes.dex y se nos crea un archivo que se llama classes_dex2jar.jar.
CMD y classes_dex2jar.jar en el paso 6 - Abrimos el JD-GUI y arrastramos el archivo classes_dex2jar.jar al programa. Veremos esto:
JD-GUI - Damos doble click en "MainActivity" y se nos abre. Ahora si queremos llevarlo a Eclipse para unirlo con los res, le damos a "File->Save All Souces" y lo guardamos cómo y donde queramos. Lo descomprimimos y vamos a la carpeta que se nos ha creado en el paso 4 (C:\Windows\apktool1.5.2\NombreDelArchivo) y creamos una carpeta que se llame src. Copiamos y pegamos las carpetas del zip que nos ha creado el JD-GUI.
- Ahora simplemente, abrimos Eclipse, le damos a "File->Import" y se nos abre una ventana. Vamos a la carpeta Android y le damos a "Existing Android Code Into Workspace". Clicamos en next, y como root directory pondremos el de la aplicación extraída, es decir: C:\Windows\apktool1.5.2\NombreDelArchivo. Se nos creará un project nuevo y tendremos ahí los res y el código.
- Nota final: Muchas veces hay errores de compatibilidad o de archivos que faltan o lo que sea. El apktool no es perfecto. Yo recomiendo leer los archivos de java desde el JD-GUI, ya que es lo mismo y es más cómodo. Pero esto ya, a vuestra elección.
CMD y Carpeta nueva en el paso 4 |
No hay comentarios.:
Publicar un comentario