调试java模糊代码

调试java模糊代码,java,debugging,obfuscation,remote-debugging,jvm-hotspot,Java,Debugging,Obfuscation,Remote Debugging,Jvm Hotspot,我们将混淆我们的项目,但不想失去远程调试和热交换的能力 可能吗?哪些工具可以处理此问题?我很乐意使用简单的模糊处理——只是重命名类/方法/变量 [编辑]我们正在使用Intellij IDEA,但无法找到任何用于此任务的插件。我们也有同样的需求(简单的模糊处理,需要稍后调试) 而且我们使用。这是一个Java应用程序,可以集成到Ant任务中 它可以做很多事情,但它也是完全可调的。所以你可以保持你的混淆简单。其中一个选项是生成“符号对应表”,它允许您从模糊代码中检索未模糊代码。(它跟踪qksdnqd类

我们将混淆我们的项目,但不想失去远程调试和热交换的能力

可能吗?哪些工具可以处理此问题?我很乐意使用简单的模糊处理——只是重命名类/方法/变量


[编辑]我们正在使用Intellij IDEA,但无法找到任何用于此任务的插件。

我们也有同样的需求(简单的模糊处理,需要稍后调试) 而且我们使用。这是一个Java应用程序,可以集成到Ant任务中

它可以做很多事情,但它也是完全可调的。所以你可以保持你的混淆简单。其中一个选项是生成“符号对应表”,它允许您从模糊代码中检索未模糊代码。(它跟踪qksdnqd类中的变量xyz实际上是MeaningfulClassName类中的myCuteVarName)

编辑:混淆可能很棘手。一些例子:

  • 无法更改主方法的名称
  • 你使用类加载器吗?在混淆之后,它还能检索类吗
  • 你的ORM映射呢?你的春天背景?(如有的话)
编辑2: 您还可以看到:

    • 请参阅。它去除注释和空白,并重命名所有非公共的成员/方法/类名


      它还为您提供了代码模糊处理方式的映射,例如,对于每个符号FOO模糊处理为XYZ,映射FOO->XYZ。这意味着,如果您得到一个关于XYZ的回溯跟踪,您可以很容易地确定原始符号FOO。当然,因为只有您(进行模糊处理的人)拥有此映射,所以只有您可以这样做。

      是的,我知道SC表。但我和我的团队并不是那种即使使用表也能轻松调试和更改模糊代码的专家:),所以我只是在寻找一种工具,它可以让我透明地调试代码。你不必是专家,你可以向应用程序提供表和模糊jar,然后它们又变得可读了(除去注释)。啊。。。但是我不认为你可以用这个过程来“热交换”(就像移除和替换所有的罐子一样)可能是我不明白什么。我是否能够“一步一步”远程调试模糊代码,并在某种调试器中同时查看“正常”代码(无需查看表格、启动其他应用程序等任何附加操作)?在完成一些严肃的配置工作后,您将有两个ant任务。使编译后的代码不可读,并创建一个文件作为输出的人。第二个ant任务将文件和不可读的编译代码作为输入,并输出可读的编译代码。如果你的应用程序正在服务器上运行,你必须停止它。