martes, 20 de agosto de 2019

Decompilando Java

Disclaimer: Este post es sin animo de incitar a usos indebidos de las herramientas.

En estos días he tomadoun sistema legado de un cliente, el sistema funciona en tomcat y obviamente esta escrito en java y como la mayoría de las veces pasa no existen las fuentes del proyecto así que me di a la tarea e investigar como hacer para darle mantenimiento.

Después de mucho investigar aquí va la receta por si algún día tienen un problema similar

1. Hacer una copia del proyecto, generalmente es un archivo war
2. Descompilarlo con Java decompiler (http://java-decompiler.github.io)
3. Desde Java decompiler guardar las fuentes de todos los archivos. (esto genera un archivo .zip)
4. Descomprimir el zip en un directorio
5. Limpiar la basura generada por Java decompiler.

Para este paso usaremos las siguientes lineas de código (se asume para este ejercicio una consola de linux)

find . -type f -exec sed -i 's/\/\*\s*[0-9]*\s*\*\///g' {} \;
find . -type f -exec perl -i -0pe 's/\/\*\s*Location.*\n\s*\*\s*\Java compiler version.*\n\s*\*\s*JD-Core Version.*\n.*\*\///gm' {} \;

Estos archivo, supongo pueden cambiar de acuerdo a la versión de Java decompiler, este ejercicio se realizo con JD-Core Version:       1.0.7

6. Importar el proyecto en el IDE de su preferencia.