Ingeniería inversa en aplicaciones Android


   Resulta muy fácil decompilar una aplicación android para ver el código en el que está realizada. Por eso os voy a explicar como hacerlo en unos sencillos pasos.

   Lo primero de todo es saber a qué nos referimos con ingeniería inversa. Según la wikipedia, la ingeniería inversa es:

"Obtener información o un diseño a partir de un producto, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado."

   En nuestro caso significa que tenemos un programa ya compilado (.apk) para Android, y queremos ver el código de la aplicación, para obtener información de cómo se ha desarrollado.

   Para realizar esta tarea vamos a contar con dos aplicaciones para decompilar y ver el código, más la aplicación que queremos decompilar.


   Nos sirve para convertir un archivo .dex a un archivo .jar


   Con esta aplicación podemos ver los ficheros .class que son los que contienen el código de la aplicación.


   PASO 1   

   Cogemos nuestra apk de android y lo renombramos cambiando la extensión por .zip. Ahora tenemos un fichero que podemos descomprimir. Lo descomprimimos y vemos que en los ficheros hay un fichero con extensión .dex






   PASO 2   

   Abrimos una consola y nos situamos en el directorio de Dex2jar (previamente lo hemos tenido que descomprimir) y ejecutamos el comando:

d2j-dex2jar.bat "ruta fichero .dex"



   El fichero .dex está en la carpeta que hemos descomprimido en el PASO 1.




   PASO 3   

   Nos ha creado un fichero llamado classes-dex2jar. Abrimos el programa jd-gui y abrimos ese fichero. Podemos ver y acceder a las clases que componen el programa.




21 comentarios: Deja tu comentario

  1. hola me gustaría que me ayuden con una aplicacion para ciegos que lamentablemente bale muy cara se llama mobile accessibility existe también versiones gratis demo pero vencen a los 30 días y también existe una versión que funciona solo si tenemos una linea de at&t me gustaria que pudieran ayudarme a modificar esta aplicacion mi correo es discapacidad5@gmail.com

    ResponderEliminar
  2. Hey! Que lindo y funcional tema! Me parece interesantísimo ya que Android es mi sistema operativo favorito en cel. Y Aplicar ahí la ingeniería inversa me parece genial! Gracias! Les aporto este artículo https://zarza.com/ingenieria-inversa-la-gallina-o-el-huevo/ para aquellos que desean saber que es ingeniería inversa. Recomendado!
    Gracias!

    ResponderEliminar
    Respuestas
    1. Hola! Muchas gracias por tu comentario :) Y un buen artículo el que has puesto. Gracias.

      Eliminar
  3. Hola Sandra que tal? estuve viendo tu video y haciendo todo tal cual lo indicas pero cuando abro el .jar resultante, es un archivo sin nada dentro (estoy intentando ver el codigo de un juego online)

    ResponderEliminar
    Respuestas
    1. Hola, gracias por el comentario. Pues algunas aplicaciones tienen protección, o no necesariamente están hechas en nativo. Si quieres escribeme por google+ o al correo y me lo pasas y lo miro yo. Un saludo.

      Eliminar
  4. Me sirvió mucho. Gracias

    ResponderEliminar
  5. Muchas gracias.. una pregunta... vez que vemos las clases en el JavaDecompiler, como lo exporto o lo convierto a un proyecto android? con copy-paste? O_o

    ResponderEliminar
    Respuestas
    1. Esto te sirve para ver algo de código, no para exportarlo todo porque ten en cuenta que algunas clases o funciones no salen. Hacer un copy-paste como poder puedes pero si te fijas los nombres de las variables y funciones han sido sustituidos en muchos casos. Un saludo.

      Eliminar
  6. una pregunta me aparece un mensaje de error cuando entro a la consola cmd como lo soluciono

    ResponderEliminar
  7. Pregunta si tengo una apk la cual necesito modificar. ¿Puedo aplicar este opcion, o que opciones tengo?

    ResponderEliminar
    Respuestas
    1. Claro, necesitas tener una apk. Si puedes me pones un pantallazo o algo.
      Saludos.

      Eliminar
  8. disculpa pero me sale esto en el cdm : "d2j-dex2jar.bat" no se reconoce como un comando interno o externo,
    programa o archivo por lotes ejecutable. me podrías orientar para solucionarlo gracias saludos ;)

    ResponderEliminar
    Respuestas
    1. Tienes que ponerte dentro del directorio donde esté ese fichero, sino no te deja ejecutarlo.

      Eliminar
    2. Sandra saludos, estoy en el mismo caso C:\Users\SOLOTEL\Desktop\dex2jar-2.0>d2j-dex2jar.bat c: \users\solotel\desktop\mantenimiento solotel\classes.dex
      "java" no se reconoce como un comando interno o externo,
      programa o archivo por lotes ejecutable.

      C:\Users\SOLOTEL\Desktop\dex2jar-2.0>
      que podria hacer?

      Eliminar
  9. sandrita, muchísimas gracias por tus vídeos y aportes, un gran abrazo desde cucuta Colombia

    ResponderEliminar
  10. me gustaria saber si puedo editar un codigo para controlar un dron

    ResponderEliminar