2011-06-22 5 views
8

Je travaille sur une plateforme qui exécute des applications Java. Ces applications sont souvent obscurcies, la plupart d'entre elles utilisant ProGuard, ce qui rend les problèmes de débogage avec notre plate-forme très difficiles.Décompilation byfecode java bytecode

Actuellement j'utilise JD (http://java.decompiler.free.fr/) pour le décompiler ces applications. JD fait un travail décent, mais parfois le code généré est trop difficile à comprendre. Cela semble se produire principalement parce que les outils d'obfuscation exploitent la spécification moins contrainte de JVM Bytecode pour produire un bytecode valide qui ne correspond pas au code Java valide (exemple: surcharge agressive). Donc, ma question est la suivante: y a-t-il un décompilateur spécialement conçu pour gérer le bytecode obscurci?

+0

Avez-vous essayé http://members.fortunecity.com/neshkov/dj.html –

+0

@ anirudh4444 il ne fonctionne que sur Windows. J'ai besoin de quelque chose qui fonctionne sur Ubuntu. – JoaoHornburg

+0

Vous pouvez utiliser wine/mono pour l'exécuter sur ubuntu. –

Répondre

5

Je doute que les décompilateurs le fassent. Cependant, vous pouvez implémenter la transformation bytecode personnalisée et renommer la méthode surchargée et les noms de variables en utilisant quelque chose comme ASM.

5

Il existe un décompilateur connu sous le nom de Fernflower développé par un membre ici. Il se vante d'être un décompilateur spécialement conçu pour le code décompilé, mais vous voudrez peut-être prendre sa revendication avec un grain de sel. Il est téléchargé ici: https://github.com/Zidonuke/Bukkit-MinecraftServer/blob/master/tools/fernflower.jar?raw=true

+0

Fernflower n'est plus officiellement disponible, et il peut encore être vaincu par des transformations de flux de contrôle assez simples. – Antimony

+0

@Antimony soin d'expliquer quelles transformations? AFAIK il peut gérer même l'insertion de prédicat opaque de ZKM, ce qui arrive (est arrivé?) Pour être la meilleure obfuscation de flux dans le jeu. – oldrinb

+0

Fernflower est de retour, les enfants! – thomas