La ingeniería inversa es una técnica aplicada desde la Segunda Guerra Mundial, cuando los miembros de algún bando obtenía la maquinaria o equipo de guerra del otro bando para analizarlo a detalle y de esa manera encontrar alguna falla o punto débil que permitiera darle ventaja al  equipo.

En términos informáticos, se aplica la ingeniería inversa en software para comprobar la seguridad de un sistema, analizar cómo se desarrolla y realizar cambios, en hardware con la intención de investigar el funcionamiento de algún producto si es que no se cuenta con los detalles técnicos.

Software

La inseguridad en aplicaciones android es un tema bastante común, aunque los desarrolladores ofuscan, firman y registran como “limpio” el código de estas en Google Play algunas veces en la verificación pueden filtrarse alguna aplicación maliciosa con intenciones fijas de recopilar información del dispositivo, como un RAT (remote access trojan), botnets que lo deja poco funcional o inservible, adware para estar todo el tiempo enviando publicidad o en extremos un ransomware que cifra la información y para liberarla se requiere un pago.

Si de alguna manera queremos analizar el código de una aplicación, verificar si está limpia o… modificarla pero no contamos con la suficiente experiencia en esta actividad, entonces Apktool es la herramienta. Apktool es una herramienta para aplicar la ingeniería inversa en aplicaciones del sistema Android. Cuenta con muchas ventajas y es muy fácil de usar, se puede “deshacer” una aplicación sin dañarla, si quieres realizar modificaciones al código sin problema se puede volver a compilar y firmar, otra de las cosas más interesantes es que se puede depurar código smali paso a paso.

 

Sus características:

  • La organización y el manejo de APK’s depende de los recursos del framework.
  • Permite la reconstrucción de los recursos decodificados a JAR o APK binario.
  • Depuración de smali.
  • Decompilar el APK completamente.

 

Aquí puedes descargar la última versión de la herramienta: 

https://ibotpeaches.github.io/Apktool/

Y aquí las instrucciones de instalación según el sistema operativo:

https://ibotpeaches.github.io/Apktool/install/

 

¿Cómo lo uso?

Las instrucciones más comunes son las siguientes:

Para decompilar cualquier aplicación

$ apktool d foo.jar

// decodifica foo.jar en la carpeta foo.jar.out

$ apktool decode foo.jar

// decodifica foo.jar a la carpeta foo.jar.out

$ apktool d bar.apk

// decodifica bar.apk a la carpeta bar

$ apktool decode bar.apk

// decodifica bar.apk a la carpeta bar

$ apktool d bar.apk -o baz

// decodifica bar.apk a la carpeta baz

 

 

Decompilando un apk.

 

Directorio con el mismo nombre del apk, donde se encuentran los archivos que componen la aplicación.

 

 

Para compilar una aplicación modificada/analizada:

 

$ apktool b foo.jar.out

// compila foo.jar.out en la carpeta foo.jar.out/dist/foo.jar file

$ apktool build foo.jar.out

// compila foo.jar.out en la carpeta foo.jar.out/dist/foo.jar file

$ apktool b bar

// compila bar en la carpeta bar/dist/bar.apk file

$ apktool b .

// crea la carpeta actual en el directorio ./dist

$ apktool b bar -o new_bar.apk

// crea una nueva carpeta into new_bar.apk

$ apktool b bar.apk

// WRONG: brut.androlib.AndrolibException: brut.directory.PathNotExist: apktool.yml
// el error se debe a que se debe usar la carpeta y no el archivo apk

 

Compilando la aplicación modificada, usando el directorio e indicando la salida de apk con otro nombre de versión.

 

 

Nota: El presente contenido es únicamente con fines informativos, el autor no se hace responsable del uso o información que pudiese ser alterada con las técnicas mostradas.

 

 

 

Deja un comentario