Je travaille avec un addon serveur pour Minecraft, qui se trouve être obscurci. J'ai toujours pensé que, après l'obfuscation, il est impossible de restaurer les noms de classe d'origine parce qu'ils sont complètement supprimés, et c'est ce que j'ai lu partout. Après avoir bricolé pendant un moment, j'ai remarqué que lorsqu'une exception non saisie apparaît dans la console, elle montre les noms obfusqués des classes (par exemple, à cratereloaded.aT.d), puis entre parenthèses, où elle montre généralement la Le nom de la classe et la ligne fautive, il montre le nom de la classe d'origine, ce qui me porte à croire qu'il peut effectivement être désobfuscated. Mais de tous les outils que j'ai essayés, aucun ne semble capable de restaurer le nom de classe d'origine, même si après un examen hexadécimal, j'ai confirmé que le nom de classe original IS était réellement incorporé dans les fichiers .class compilés.Stacktrace de code obfuscated affiche nom de classe non obtus?
Existe-t-il un outil capable de l'utiliser pour restaurer les noms de classe automatiquement?
Exemple stacktrace:
[03:49:57] [Server thread/ERROR]: Error occurred while disabling CrateReloaded v1.3.97.1 (Is it up to date?)
java.lang.NullPointerException: null
at cratereloaded.aT.d(CrateManager.java:303) ~[?:?]
at cratereloaded.aT.bm(CrateManager.java:298) ~[?:?]
at cratereloaded.aT.cleanup(CrateManager.java:83) ~[?:?]
at cratereloaded.aX.disable(Manager.java:27) ~[?:?]
at cratereloaded.b.cleanup(CrateReloaded.java:122) ~[?:?]
at cratereloaded.b.onDisable(CrateReloaded.java:109) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:266) ~[spigot.jar:git-Spigot-596221b-2c5c611]
at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:361) [spigot.jar:git-Spigot-596221b-2c5c611]
at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:421) [spigot.jar:git-Spigot-596221b-2c5c611]
at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:414) [spigot.jar:git-Spigot-596221b-2c5c611]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.disablePlugins(CraftServer.java:342) [spigot.jar:git-Spigot-596221b-2c5c611]
at net.minecraft.server.v1_12_R1.MinecraftServer.stop(MinecraftServer.java:464) [spigot.jar:git-Spigot-596221b-2c5c611]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:612) [spigot.jar:git-Spigot-596221b-2c5c611]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
L'intention du plugin était certainement de faire partie d'un serveur privé, et au moment de poser cette question, j'avais déjà une solution de travail hacky. J'ai été contacté par l'auteur de CrateReloaded après avoir signalé un problème avec son API, et il a accepté volontiers la tâche d'exposer plus de plugin dans les futures mises à jour. – XXLuigiMario
Excellent. Je suis heureux d'apprendre que l'auteur est prêt à fournir du code, ce qui est conforme à la GPL. – Frelling