Java 重新混淆混淆的代码是错误的吗?

Java 重新混淆混淆的代码是错误的吗?,java,obfuscation,Java,Obfuscation,我过去使用过java模糊器,其中一些很容易进行反向工程。我想可能还不够模糊 应用两阶段模糊处理是错误的还是有问题的 混淆 用商业产品来结束它 -- 或者这是一个糟糕的方法?应该只使用一个模糊器吗?只要代码仍然正确运行,那么无论使用多少个模糊器,都应该可以。请记住,使用模糊处理程序的主要问题是在保持代码正确性的同时尽量使代码不可读。重新模糊处理模糊代码是一种众所周知的模糊处理代码的方法。 e、 g.您可以混淆类,使其名称不构成有效的windows文件名,如 class COM1 { ... }

我过去使用过java模糊器,其中一些很容易进行反向工程。我想可能还不够模糊

应用两阶段模糊处理是错误的还是有问题的

  • 混淆
  • 用商业产品来结束它
  • --


    或者这是一个糟糕的方法?应该只使用一个模糊器吗?

    只要代码仍然正确运行,那么无论使用多少个模糊器,都应该可以。请记住,使用模糊处理程序的主要问题是在保持代码正确性的同时尽量使代码不可读。

    重新模糊处理模糊代码是一种众所周知的模糊处理代码的方法。 e、 g.您可以混淆类,使其名称不构成有效的windows文件名,如

    class COM1 { ... }
    
    反编译将导致名为COM1.java的文件,该文件不是有效的windows文件名,因此会中断许多反编译器

    解决方案是首先使用诸如class1、class2、method1、method2、field1、field2之类的名称字典重新混淆,然后进行反编译。反编译的代码现在不仅对反编译更有效,而且可读性也更高

    在串行中使用模糊控制器通常会导致模糊代码与上次使用的模糊控制器一样强大。(即链条与最后一个链环一样坚固)


    我建议您坚持使用一个模糊处理程序,但要确保您了解模糊处理过程中的每一个选项以及撤销它的容易程度。

    从不会发生任何不好的事情的意义上说,这是“好的”。我认为这是一个好问题。不知道为什么会有“接近”的投票。也许应该换一种说法。我投票结束是因为不清楚“好”和“坏”在客观意义上是什么意思。@奥利,你可以让凯尔换一种说法,而不是投票结束。@奥利,我已经改写了我的问题。想象一下,上一次的混乱只是复制了代码。这怎么会降低之前的模糊处理步骤的效率?我认为它和最强链接一样强大。@IraBaxter我理解你的意思,但许多模糊处理技术都可以通过重新模糊处理来撤销。“在串行中使用模糊处理程序通常会产生与上次使用的模糊处理程序一样强的模糊处理代码。(即链条与最后一个链接一样牢固)“为什么?一些混淆器通过添加不必要和误导性代码来混淆。其他模糊处理程序删除不必要的代码(不是作为模糊处理的一部分,而是作为优化的一部分)。很明显,将这两个序列放在一起不会产生一个更强大的链。类似地,通过使类名无效的windows文件名进行模糊处理,然后通过使类名尽可能小的方式进行模糊处理,也会撤消已完成的操作。如果模糊处理程序的结果(“添加不必要的代码”)可以通过机械方法(“简单的死代码分析”)轻松删除,则该模糊处理程序不是很强。所以我同意连续两次并不能让它变得更强。但这不是我的观点。举个例子,用机械方法对文件名进行加扰是不可逆的,即使你用另一种不同的方法实现相同的效果。