调试java混淆代码

时间:2009-09-03 06:57:10

标签: java debugging obfuscation remote-debugging jvm-hotspot

我们将模糊我们的项目,但不想失去远程调试和热插拔的能力。

有可能吗?哪些工具可以处理这个?我对简单的混淆感到满意 - 只需重命名类/方法/变量。

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

2 个答案:

答案 0 :(得分:5)

我们有同样的需求(简单的混淆,需要稍后调试) 我们使用ProGuard。它是一个Java应用程序,可以集成到Ant任务中。

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

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

  • 您无法更改主方法的名称。
  • 您使用的是类加载器吗?在混淆之后它仍可以检索类吗?
  • 您的ORM映射怎么样?你的春天背景? (如果有的话)

EDIT2: 您还可以看到:

答案 1 :(得分:0)

SD Java Obfuscator。它会删除注释和空格,并重命名非公开的所有成员/方法/类名。

它还为您提供了代码如何被混淆的映射,例如,对于每个符号FOO被混淆为XYZ,地图FOO-> XYZ。这意味着如果您获得提及XYZ的回溯,您可以轻松确定原始符号FOO。当然,因为只有你(做混淆的人)有这张地图,所以只有你可以这样做。