您是否混淆了您的商业Java代码?[已关闭]

2022-08-31 20:23:18

我想知道是否有人在自己的商业产品上使用商业/免费的java混淆器。我只知道一个项目实际上在发布版本的蚂蚁构建步骤中有一个混淆步骤。

你混淆了吗?如果是这样,你为什么要混淆呢?

这真的是一种保护代码的方法,还是只是开发人员/经理的更好感觉?

编辑:好吧,确切地说,我的观点是:你是否为了保护你的IP(你的算法,你投入到你的产品中的工作)而混淆视听?出于安全原因,我不会混淆,这感觉不对。因此,我只是在谈论保护您的应用程序代码免受竞争对手的侵害。

@staffan有一个很好的观点:

远离链接代码流的原因是,其中一些更改使得JVM无法有效地优化代码。实际上,它实际上会降低应用程序的性能。


答案 1

如果执行模糊处理,请远离通过更改代码流和/或添加异常块等方式修改代码的混淆器,以使其难以反汇编。要使代码不可读,通常只需更改方法,字段和类的所有名称就足够了。

远离更改代码流的原因是,其中一些更改使 JVM 无法有效地优化代码。实际上,它实际上会降低应用程序的性能。


答案 2

我认为旧的(经典的)混淆方式正在逐渐失去其相关性。因为在大多数情况下,经典的混淆器会破坏堆栈跟踪(这对支持您的客户不利)

如今,主要不是保护某些算法,而是保护敏感数据:API登录名/密码/密钥,负责许可的代码(盗版仍然存在,特别是西欧,俄罗斯,亚洲,恕我直言),广告帐户ID等。

有趣的事实:我们在字符串中拥有所有这些敏感数据。实际上,字符串大约占我们应用程序逻辑的50-80%。在我看来,混淆的未来是“字符串加密工具”。

但现在“字符串加密”功能仅在商业混淆器中可用,例如:AllatoriZelix KlassMasterSmokescreenStringer Java Obfuscation ToolkitDashO

注意:贝我是Licel LLC的首席执行官,Stringer Java Obfuscator的开发人员。


推荐