我使用 jad 已经很多年了,其中大部分都带有 Jadclipse 插件来 Eclipse,这使得它非常有用。尤其是“对齐代码以进行调试”,它允许您查看堆栈跟踪中任何行的反编译代码。非常好。
不幸的是,我越来越多地看到 <- MISALIGNED -> 注释潜入,这很可能是因为 jad 期望类文件是有序的,而 Java 6 运行时库显然不是这种情况。因此,在写入文件时,一条指令说“这是第 100 行”,然后写入 99 个空行,如果下一条指令说“这是用于第 10 行”,那么 jad 不能倒带将该输出放在那里,而只是打印发表评论说这是在错误的地方。
这是 HttpURLConnection 的示例:
protected HttpURLConnection(URL url, Proxy proxy, Handler handler1)
{
/* <-MISALIGNED-> */ /* 603*/ super(url);
/* <-MISALIGNED-> */ /* 192*/ ps = null;
/* <-MISALIGNED-> */ /* 196*/ errorStream = null;
/* <-MISALIGNED-> */ /* 199*/ setUserCookies = true;
/* <-MISALIGNED-> */ /* 200*/ userCookies = null;
/* <-MISALIGNED-> */ /* 220*/ currentProxyCredentials = null;
/* <-MISALIGNED-> */ /* 221*/ currentServerCredentials = null;
/* <-MISALIGNED-> */ /* 222*/ needToCheck = true;
/* <-MISALIGNED-> */ /* 223*/ doingNTLM2ndStage = false;
/* <-MISALIGNED-> */ /* 224*/ doingNTLMp2ndStage = false;
/* <-MISALIGNED-> */ /* 226*/ tryTransparentNTLMServer = NTLMAuthentication.supportsTransparentAuth();
/* <-MISALIGNED-> */ /* 227*/ tryTransparentNTLMProxy = NTLMAuthentication.supportsTransparentAuth();
/
现在的问题是是否有另一个反编译器可以逐行生成更准确的输出。实际的反编译不需要非常好或任何东西,但我真的很喜欢它位于 Java Stack Trace 视图所期望的位置。如果它与 Jadclipse 配合得很好,那就更好了。