我已经使用JAD多年了,其中大多数带有Jadclipse插件来蚀,这使其非常有用。尤其是使用“调试的对齐代码”,它使您可以在堆栈跟踪中查看任何行的反编译代码。非常好。

不幸的是,我已经看到越来越多的< - 错位 - >评论偷偷摸摸,这很可能是因为Jad期望ClassFile是按顺序进行的,这显然不是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堆栈跟踪视图所期望的。如果与Jadclipse配合得很好,那就更好了。

有帮助吗?

解决方案

格式调试的问题来自 jadclipse 而不是来自 jad. jad 没有这种功能。

jadclipse 插件在类名中有一个小代码部分 DebugAlignWriter 这样做的是:

if((align = getAlignTarget(aLine)) != -1)
{
   if(align < curLine)
   {
      if(curLine != 0)
      {
          out.write(10);
      }
      out.write("/* <-MISALIGNED-> */ ");
      out.write(aLine);
      curLine++;
   }
   else if(align == curLine)
   {
      out.write(aLine);
   }
   else
   {
      for(; align > curLine; curLine++)
      {
          out.write(10);
      }
      out.write(aLine);
   }

}

基本上它试图使输出与 jad.

所以根本原因是 jad 产生不一定按阅读顺序的输出。不幸的是,我不能阐明为什么 jad 这样做。根据 jad 帮助无法控制订单。

我注意到了 jadclipse 如果您设置 jadclipse->格式 - >在打开支架之前请勿插入newline - 它会 减少 的数量 /* <-MISALIGNED-> */ 由于其工作原理的性质而引起的细分市场。

另外,如果您检查了 方法之前的输出字段 选项可以增加数量 /* <-MISALIGNED-> */ 细分市场,所以避免它。

其他提示

JD-Eclipse 是一个非常好的分解器,还可以处理Java 7功能。

它还没有“调试的对齐代码”功能,但我自己添加了一个功能。去年我一直在使用它。

我还处理必须向后移动行的情况;我仍然将其标记为未对准特殊情况,但至少它放置在正确的行上。

如果有人想尝试一下,可以从中下载 这里. 。 readme.txt中的更多详细信息

我将JAD使用尽可能少的格式使用,然后使用Eclipse的格式命令,因为我可以从首选项中匹配我的首选样式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top