代码之家  ›  专栏  ›  技术社区  ›  Vitaly

Java模糊代码调试

  •  5
  • Vitaly  · 技术社区  · 16 年前

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

    有可能吗?哪些工具可以处理这个问题?我很乐意使用简单的模糊处理-只需重命名类/方法/变量。

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

    2 回复  |  直到 15 年前
        1
  •  5
  •   Community CDub    8 年前

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

    它可以做很多事情,但它也完全可调。所以你可以保持你的混淆简单。其中一个选项是生成一个“symbol correspondance table”,它允许您从被混淆的代码中检索未被混淆的代码。(它跟踪类qksdnqd中的变量xyz实际上是类meaningfulclassname中的mycutevarname)

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

    • 不能更改主方法的名称。
    • 你使用类加载器吗?混淆后它还能检索类吗?
    • 你的orm映射呢?你的春天背景?(如果有的话)

    编辑2: 您还可以看到:

        2
  •  0
  •   Ira Baxter    15 年前

    SD Java Obfuscator . 它去掉注释和空白,并重命名所有不公开的成员/方法/类名。

    它还为您提供了代码如何被模糊化的映射,例如,对于每个被模糊化为xyz的符号foo,一个映射foo->xyz。这意味着如果您得到提到xyz的回溯,您可以很容易地确定原始符号foo。当然,因为只有你(做模糊处理的人)有这个地图,所以只有你能做这个。