最好的Java混淆器?

Xin*_*nus 100 java obfuscation

我正在开发一个安全软件,并希望模糊我的java代码,因此无法进行逆向工程.什么是最可靠的java混淆器?

Bal*_*usC 97

首先,你真的需要记住,这是永远不可能逆向工程的东西.一切都是可以破解的.使用智能IDE的智能开发人员已经足够了.

好吧,你可以在这里找到一个清单.ProGuard非常好.我自己使用它,但只是为了"缩小"Java代码.

  • @Thinhbk Proguard生成一个映射,将被篡改的堆栈跟踪转换回原始代码.否则,正如你所说,堆栈跟踪将变得无用(但无论如何谁得到未被捕获的异常...... ;-)) (2认同)

Tho*_*sen 32

如果一台计算机可以运行它,那么一个有动力的人可以对它进行逆向工程.

  • @kodmanyagha如果他们有足够的动力,他们就会学习它.这并不难. (5认同)
  • 有多少人可以阅读混淆的代码并理解逻辑?我有很多工程师朋友,他们做不到。只有John Nash可以做到这一点;) (3认同)
  • 从数学意义上来说,无需逆向工程就可以运行。这就是同态加密的意义所在,但要使其在计算机软件(而不是 SaaS)上实际可用,还需要解决很多障碍。我们正在慢慢地向那里移动。Gentry 关于完全同态加密和 Amit Sahai 等人的“数学拼图”的开创性著作。朝这个方向迈出了巨大的一步。只有一个缺失的元素(我称之为“障碍函数”)可以使整个方案变得可行。现在不可能的事,未来将成为可能。 (2认同)

Dmi*_*kov 30

查看我的文章保护您的Java代码 - 通过Obfuscators And Beyond,讨论混淆与其他三种方法,使您的应用程序的逆向工程更加昂贵,以及一系列工具和进一步阅读材料的链接.


and*_*007 15

我认为Proguard是最好的.也可以将它与IDE集成(例如NetBeans).但是,请注意,如果您对代码进行模糊处理,则可能很难跟踪日志中的问题.

  • 更改名称和行号信息的好混淆器应生成一个日志,用于反转该过程.这样,至少堆栈跟踪对于混淆的二进制文件仍然有用. (7认同)
  • +1表示"考虑到如果您对代码进行模糊处理,则可能很难跟踪日志中的问题".就在你认为调试足够困难的时候...... (6认同)
  • ProGuard会为调试创建此类反向文件.:-) (3认同)

Jam*_*s B 11

正如其他地方所述,proguard很好,但可能不知道的是,这里还有第三方maven插件http://pyx4me.com/pyx4me-maven-plugins/proguard-maven-plugin/ ......我把它们放在一起使用它们非常好.


the*_*ost 10

我使用了Allatori,它的工作做得很好.


Dan*_*olz 7

确实,总是可以对某些代码进行逆向工程,就像不可能保护房屋一样,所以没有人能够从中窃取它.但这并不能阻止我锁门.实际上,我不是在java世界,我使用BitHelmet作为.net.

  • +1会让你回到网络0.这个答案并没有帮助. (7认同)

Ano*_*oop 6

我曾经在我以前的公司与Klassmaster合作,它工作得非常好,可以很好地与构建系统集成(maven支持非常好).但它不是免费的.


小智 6

我们有更好的运气加密罐而不是混淆.我们使用Classguard.

  • 如果您还没有阅读Vladimir Roubtsov的"破解Java字节码加密"(http://www.javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.html),您可能希望现在就这样做. (7认同)

Ren*_*ato 6

我不确定解决方案是否安全,但关于ClassGuard解决方案,阅读文章和评论很有意思:http://www.javaworld.com/community/?q = node/1604 #comment -12296