*

Desconectado xdedeone

Ingenieria Inversa Para Aplicaiones En Android
« en: Octubre 07, 2016, 10:56:38 pm »
Definiciones Basicas

Este sera un tutorial muy completo, en explicar este tema y mostarles un tutorial sobre este. Este es un punto mas avanzado de android, que todo programador amateur quiere conocer.
No soy el mejor en el tema, pero si tengo un gran conocimiento en este, asi que los guiare en lo mas basico y interesante sobre el tema.

Para comenzar, que es la ingenieria inversa?

Citar
Definición

La ingeniería inversa (en inglés, reverse engineering) es el proceso de descubrir los principios tecnológicos de un objeto, herramienta, dispositivo o sistema, mediante el razonamiento abductivo (haciendo conjeturas) de su estructura, función y operación. En el caso concreto del software, se conoce por ingeniería inversa a la actividad que se ocupa de descubrir cómo funciona un programa, función o característica de cuyo código fuente no se dispone, hasta el punto de poder modificar ese código o generar código propio que cumpla las mismas funciones..

Como aqui se explica, este proceso consiste en ver como funciona algo viendolo por dentro. en este caso, lo haremos con una aplicacion de android.
Que significa esto?   En pocas palabras revertiremos una apk a su estado original (en codigo java) para saber mas acerca de ella, estudiarla, modificarla eh incluso crear la propia nuestra a base en ella.

Citar
La gran mayoría del software de pago incluye en su licencia una prohibición expresa de aplicar ingeniería inversa a su código, con el intento de evitar que se pueda modificar su código y que así los usuarios tengan que pagar si quieren usarlo.
Encarecidamente les pido usar este tutorial con software de libre distribucion.

Este tutorial es con fines educativos, por lo cual no me responsabilizo por mal uso del mismo.

Con este proceso podremos ver el codigo de una aplicacion, pero no sera su codigo limpio y completo. solo sera un codigo donde veremos sus funciones, y de ahi podran basarse en caso de que quieran hacer sus propias aplicaciones (gran apoyo para programadores entuciastas).



Ingenieria inversa para extraer el codigo

En este proceso usaremos 2 aplicaciones. Dex2Jar y JDGui para windows. Encontraran los links en el siguiente post

Para revertir una aplicaciones necesitaremos extraer el classes.dex que viene dentro de la aplicacion, este no es gran problema ya que podemos hacerlo con winrar. seleccionamos con click derecho > abrir con > win rar y extraeremos el classes.dex que veremos.



Para este tuto entraremos al codigo de opciones de desarrollador, que esta dentro el apk de settings

Extraeremos el classes.dex usando win rar y lo copiaremos en la carpeta del Dex2Jar, luego abriremos una ventana de comandos dentro de esa carpeta, para eso mantendremos presionada la tecla shift, y daremos click derecho en un espacio vacio dentro de la carpeta.



Y seleccionaremos Abrir ventana de comandos aqui



luego ejecutaremos el siguiente codigo
Código: [Seleccionar]
d2j-dex2jar.bat classes.dex
Y esperamos hasta que el programa acabe, y nos cree un archivo llamado classes.dex2jar que ya tendra la extencion .jar



Una vez echo esto, nos dirigiremos a la carpeta del JDGui y abriremos el jd-gui.exe, luego abriremos el archivo jar con este programa. Seleccionaremos File > Open File > Ruta y buscaremos la ruta donde se creo nuestro archivo .jar que esta dentro de la carpeta Dex2Jar.



Una vez echo esto buscaremos el .class que queremos ver/extraer. en mi caso, el .class de Opciones de desarrollador. Llamado DevelopmentSettings.class



Despues seleccionamos el class que queremos extraer, y seleccionamos File > Save y elegimos el lugar donde queramos guardar el codigo del class, que quedara en formato .java
Si seleccionamos Save All Sources guardaremos todo el codigo de la aplicacion que viene en el classes ( en este caso el codigo de settings ).

Una vez guardemos el codigo del class, lo abriremos con el Notepad++ seleccionandolo con click derecho > edit whith Notepad++ al abrirlo, tendremos el codigo en java para estudiar/modificar segun sea su necesidad.



Con esto ya abremos extraido el codigo original en su formato nativo java.





« Última modificación: Octubre 08, 2016, 10:18:02 pm por xdedeone »



*

Desconectado ensarman

Re:Ingenieria Inversa Para Aplicaiones En Android
« Respuesta #2 en: Octubre 08, 2016, 04:17:02 pm »
Buenisimo!!! gracias por el aporte
La mente que se abre a una nueva idea, jamas regresa a su estado original

*

Desconectado xdedeone

Re:Ingenieria Inversa Para Aplicaiones En Android
« Respuesta #3 en: Octubre 09, 2016, 12:36:38 am »
Buenisimo!!! gracias por el aporte
Ya esta completo, esta es una gran herramienta para mirar a fondo el código de una app, además de ser útil para quien tenga intenciones de modificar algo en concreto de una app

*

Desconectado ensarman

Re:Ingenieria Inversa Para Aplicaiones En Android
« Respuesta #4 en: Octubre 09, 2016, 01:01:04 am »
Buenísimo, se ve genial, lo maximo que hice en ingenieria inversa fue usar el apktool que de hecho es muy bueno... me gusta, pero veo que con este metodo, se obtiene un código mas legible y facil de editar
La mente que se abre a una nueva idea, jamas regresa a su estado original