Java 除了混淆之外,我们还能做些什么来保护jar文件?

Java 除了混淆之外,我们还能做些什么来保护jar文件?,java,obfuscation,classloader,protection,decompiling,Java,Obfuscation,Classloader,Protection,Decompiling,我担心Java可执行文件的安全性。它们提供的反编译保护很少。使用Java Decompiler之类的工具,甚至连小孩都可以反编译类文件以获得原始代码 除了代码混淆,还可以做些什么来保护类文件?加密的类加载器仍然是一个神话吗?您可以在本机中编写所有代码。逆向工程无论如何都可以完成。但这更难 好的,这不是一个严格意义上的java解决方案 正如nfechner在一个评论写开源应用程序中所说的那样。在以前的一家公司,我们有这样的问题,主要是因为管理层的偏执 首先,您必须了解绝对安全性只是一个神话:只要您

我担心Java可执行文件的安全性。它们提供的反编译保护很少。使用Java Decompiler之类的工具,甚至连小孩都可以反编译类文件以获得原始代码


除了代码混淆,还可以做些什么来保护类文件?加密的类加载器仍然是一个神话吗?

您可以在
本机中编写所有代码。逆向工程无论如何都可以完成。但这更难

好的,这不是一个严格意义上的java解决方案


正如nfechner在一个评论写开源应用程序中所说的那样。

在以前的一家公司,我们有这样的问题,主要是因为管理层的偏执

首先,您必须了解绝对安全性只是一个神话:只要您的程序在不受信任的硬件上运行,它就可以被反编译,无论您使用何种语言。您唯一可以更改的是攻击者了解您的软件/算法/数据的成本

关于混淆:它可以被视为第一级保护,因为它使Java代码完全不可读。好的混淆器,如在变量/方法名称中使用禁用字符,防止反编译代码的执行。现在,人们可以认为它是一个很好的安全措施,因为反编译代码不像JAD或其他反编译器那样简单,并且具有完美的java代码。但是,可以理解这些代码中公开的大多数算法(因为可读代码与可编译代码非常不同)

其他安全措施包括:

  • 通过使用某种web服务在服务器上运行敏感代码来发送结果和获取结果(使用REST/SOAP/YouNameIt)
  • 使用HTTPS和(可能)其他安全层从远程服务器加载敏感代码

从这两个安全措施中,我会诚实地选择第一个。事实上,第二个可以被典型的HTTPS攻击(中间人、日志代理等)所颠覆,并且将代码放在不可信硬件上的主要不便,这使得它可能从那里借用。

< P>基本上,有四件事可以用字节码来保护它不受java反编译程序的影响:

  • 混淆
  • 软件加密
  • 硬件加密
  • 本地编译

我的文章涵盖了所有内容

编写开源软件,您就不会有这个问题了:-D可能重复的写代码值得付费,那些愿意付费的人会付费,那些无论如何都不愿意付费的人不需要担心。我们也有这样一个由偏执狂管理的要求。建议的解决方案是使用完整的web应用程序,而不是桌面应用程序。如果绝对需要,可以用java制作瘦客户机,但我个人将精力花在web 2.0界面上。@Pierre在我们的例子中,这是一个高级交易应用程序,需要大量的显示,使用最好的HTML5子技术是完全不可想象的(至少从我的java/Swing开发历史来看)(我的意思是,即使SVG处于最佳状态,如果不考虑浏览器生态系统地狱,也无法完成这项工作)