La entrada que hoy os traemos, es fruto de una demostración vista en una charla sobre informática a la que asistí el otro día. En la charla se veía lo simple que era realizar ingeniería inversa a cualquier programa Java realizado.
Tabla de contenidos
Para la realización de la demostración, vamos a utilizar un proyecto más o menos complejo, escrito en java que he encontrado en github. El método es válido para cualquier proyecto.
Lo normal cuando nos envían un proyecto java, es que nos manden el .jar para que lo ejecutemos, pero qué pasa si queremos ver cómo esta hecho. Pues que no tenemos el código fuente.
Una de las cosas más curiosas, es que los .jar son un archivo empaquetado, que podemos desempaquetar.
Así que lo que hacemos es cambiar la extensión del archivo de .jar a .zip
Descomprimimos el archivo y tenemos una carpeta con el proyecto. En este caso por ejemplo tenemos acceso a la música del juego, a las librerías que ha usado etc.
Entre las distintas carpetas que encontramos, debemos ir a com/redomar/game y ahí encontramos todos los archivos del proyecto.
Pero todavía no tenemos la información accesible, por ejemplo si accedemos a Game.class y analizamos el contenido del archivo, vemos que no tenemos el código:
En el última paso debemos recuperar la información original del .class, es decir el código fuente escrito en Java.
Para ello nos vamos a esta pagina y subimos el archivo y obtenemos el código fuente:
Lo bueno de que el proyecto sea Open Source es que podemos comparar el código extraído por nosotros mismos, con el propio generado por el autor. Aunque el código no está ordenado de igual manera y algunas inicializaciones se han movido de sitio (por las optimizaciones del compilador). Obtenemos un código que seguramente es prácticamente igual al original.
Por ejemplo (a la izquierda el código extraído, a la derecha el original):
Como nos indica Java Decompiler que realiza todo este proceso de una forma más automatizada y sencilla, consiguiendo extraer una mayor cantidad de información:
en su comentario, hay una interesante herramienta que desconocida, denominadaEspero que este tutorial os haya gustado y si tenéis alguna duda, dejamos los comentario abiertos.
Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite…
Cada vez estamos más acostumbrados a usar código para generar la infraestructura (IaC), documentar nuestro…
Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es…
Uno de los problemas que solemos tener los programadores, es que nos gusta estar a…
Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en…
Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin…