我正在使用一個用於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