Deobfuscation d'un .class

Résolu/Fermé
Wolffe99 Messages postés 27 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 27 août 2014 - Modifié par Wolffe99 le 24/07/2014 à 19:40
Wolffe99 Messages postés 27 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 27 août 2014 - 24 juil. 2014 à 21:39
Bonjour,

Je voudrai savoir si il y aurait un moyen de déobfusquer un fichier .class car comme j'ai perdu le fichier source java. J'avais essayé de le décompiler a première vue tout semblait correct mais j'ai constaté que certaines fonctions etaient devenues des fonctions du type "public void func_78088_a" qui n'existent pas (je pense qu'il a été obfusqué par le compilateur). Je précise que le fichier source avait été généré en .java par le logiciel de modelling pour modding Minecraft "Techne". Je l'aivais ensuite modifié pour l'inclure dans un package mais suite à un changement de version je souaiterai réobtenir la source que j'ai perdu pour y effectuer des changements...

Ma question est donc : Y a-t-il des moyens de déobfusquer ou autre pour réobtenir des fonctions lisibles dans un fichier java et si oui lesquels ?

2 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
24 juil. 2014 à 19:22
Bonjour,

Il n'y a aucun moyen de revenir au code source original.
La décompilation peut fonctionner dans certains cas, mais tous les outils ne se valent pas (en plus un binaire .class ne signifie pas que le code d'origine était du Java).
Quant à l'obfuscation c'est une modification du code source avant compilation. Donc à partir du binaire compilé tu ne peux que remonter au code source (obfusqué), jamais au code source original, et c'est bien pour ça qu'on les utilise.

Cependant si c'est ton code je doute qu'il soit vraiment obfusqué (ce n'est pas fait par défaut), c'est peut être juste ton decompilateur qui est mauvais, essayes jd-gui.
1
Wolffe99 Messages postés 27 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 27 août 2014 9
24 juil. 2014 à 19:39
Ok merci pour tes explications. Dans ce cas je suis absolument sur que c'était du java. Justement j'utilisai déja jd-gui pour décomplier mais je pense que le compilateur spécial de MCP (Pack de modding pour Minecraft) a réobfusquer le code java en le compilant. Je vais peut etre essayer de redécompiler avec MCP en intégrant le .class avec les fichiers du Jeu, je sais pas trop comment je verrai si sa marche.
0
Wolffe99 Messages postés 27 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 27 août 2014 9
Modifié par Wolffe99 le 24/07/2014 à 20:53
C'est bon j'ai trouvé une autre solution je sais pas si c'était en rapport avec l'obfuscation finalement mais j'ai trouvé la signification de ces fonctions inexistantes avec un tableau qui les associent à des fonctions existantes :
https://github.com/MinecraftForge/FML/blob/master/conf/methods.csv#L1
https://github.com/keepcalm/BukkitForge/blob/master/porting/mappings/v1_5_R2/mcp/fields.csv
0
Wolffe99 Messages postés 27 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 27 août 2014 9
24 juil. 2014 à 21:39
Liste complètes des fonctions de Minecraft FML : https://github.com/MinecraftForge/MCPData/blob/master/data/methods.csv
https://github.com/MinecraftForge/MCPData/blob/master/data/fields.csv
0