2011-06-22 14 views
8

Trabajo en una plataforma que ejecuta aplicaciones Java. Esas aplicaciones a menudo se ofuscan, la mayoría de ellas usan ProGuard, lo que hace que los problemas de depuración con nuestra plataforma sean muy difíciles.Descompilación de código de byte ofuscado java

Actualmente estoy usando JD (http://java.decompiler.free.fr/) para descompilar esas aplicaciones. JD hace un trabajo decente, pero a veces el código generado es demasiado difícil de entender.

Esto parece suceder principalmente porque las herramientas de ofuscación explotan la especificación menos restringida de Bytecode JVM para producir bytecode válido que no se correlaciona con código Java válido (ejemplo: sobrecarga agresiva).

Entonces, mi pregunta es: ¿existe un descompilador creado especialmente para tratar con bytecode ofuscado?

+0

Ha intentado http://members.fortunecity.com/neshkov/dj.html –

+0

@ anirudh4444 que sólo funciona en Windows. Necesito algo que se ejecute en Ubuntu. – JoaoHornburg

+0

Puede usar wine/mono para ejecutarlo en ubuntu. –

Respuesta

5

Dudo que ningún decompilador lo haga. Sin embargo, podría implementar transformaciones de bytecode personalizadas y renombrar nombres de variables y métodos sobrecargados usando algo como ASM.

5

Hay un descompilador conocido como Fernflower desarrollado por un miembro aquí. Se jacta de ser un descompilador hecho específicamente para código decompilado, sin embargo, es posible que desee tomar su reclamación con un grano de sal. Ha subido aquí: https://github.com/Zidonuke/Bukkit-MinecraftServer/blob/master/tools/fernflower.jar?raw=true

+0

Fernflower ya no está disponible oficialmente, y aún puede ser derrotado por transformaciones de flujo de control bastante simples. – Antimony

+0

@Antimony cuidado para explicar qué transformaciones? AFAIK puede manejar incluso la inserción de predicados opacos de ZKM, lo que sucede (¿sucedió?) Para ser la mejor ofuscación de flujo en el juego. – oldrinb

+0

Fernflower ha vuelto, niños! – thomas