Java代码混淆实际上对反编译器有效吗?

Zom*_*ies 9 java obfuscation decompiling

我很好奇,因为反编译是多么容易,所以不要考虑晚上用Java编写某些代码.有没有办法用Java编写而不必担心反编译器?我知道任何东西都可以在有足够时间的情况下进行逆向工程,所以我要问的是:Java类混淆器是否足以有效地阻止分解?

Joh*_*lla 12

Java类混淆器是否足以有效地阻止分解?

我会说"不".当我反编译源代码的目的是试图弄清楚某人是怎么做的时候,我已经知道我在寻找什么了.所以我不必理解整个程序 - 只是我当时感兴趣的那一件.由于对方法有足够的困惑并且回调了调用链,所以通常可以在没有过多努力的情况下确定引擎盖下的内容.


Sre*_*esh 6

如果您的问题是我可以确保没有人可以破解我的代码,答案就是NO ..无论是JAVA还是Visual C++.只要由黑客直接访问由byes或bits组成的软件即可.

原因很简单.

但是你编码了,可以解码.

最好的策略可能是制作Web服务并在那里部署您的秘密逻辑.让其他人使用您的服务,而无需访问您的写作方式.


Jim*_*ush 5

用Java和其他语言进行混淆只是一种威慑.它只是提高了攻击者的标准.这并不意味着混淆没有价值,它只是不保证.

您想要保护什么以及您定位的市场类型是什么?

在一个充满盗版的市场中保护许可算法的混淆并不意味着那么多.但是,对于中小企业来说,它可能足以削减大多数偶然的海盗.

如果你试图保护知识产权免受竞争,我会看到两个答案.这个想法很难保护.一位能干的工程师在查看代码时会找出逻辑的宝石,并能够重新实现.混淆将使人们更难以获取代码并将其包含在他们自己的产品中.当他们尝试进行更改时,维护成本将继续增长(我认为对于干净反编译的代码也是如此).

我为我公司开发的java产品是混淆的.他们是否保护我们免遭盗窃......我对此表示怀疑.但是,在我们的开发成本的背景下,混淆并不那么昂贵.对于小额价格的一点点保护并不是一个糟糕的权衡.

  • 混淆的成本超出了混淆器本身的价格。混淆还会降低性能和可移植性。 (2认同)

rev*_*nix 3

根据反编译 Java 的个人经验,我想说,混淆会使某人的反编译尝试变得非常非常烦人和困难。最让我恼火的是,最终构建的类文件都被命名为“a.class,b.class,c.class”等等,并且抛出了大量的假值。在代码混淆方面,尝试/catches 在为反编译器搞乱方面做得很好。

一般来说,您反编译的任何内容都将无法编译,但会给您有关程序一般工作原理的提示。