我正在使用一个用于Minecraft的服务器插件,它恰好被混淆了。 我一直认为,在混淆后,不可能恢复原来的类名,因为它们被完全删除了,这就是我到处读的东西。 经过一段时间的修改之后,我注意到当控制台中出现未捕获的异常时,它会显示类的混淆名称(例如。at cratereloaded.aT.d),然后在括号内,通常显示该类的名称和有问题的行,它显示了原来的类名,这使我相信它实际上可以被反混淆。 但是我尝试过的所有工具似乎都没有能够恢复原始类名,即使经过一些十六进制检查后,我已经确认原始类名实际上嵌入了已编译的'.class'文件中。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]
该插件的意图当然是一个私人服务器的一部分,虽然在提出这个问题时,我已经有一个工作,虽然哈克解决方案。 CrateReloaded的作者在指出其API的问题后与我联系,他很高兴地同意在未来的更新中公开更多插件的任务。 – XXLuigiMario
优秀。我很高兴听到作者愿意提供符合GPL的代码。 – Frelling