Jakarta ee 如何防止JavaEE6.war文件的反向工程?

Jakarta ee 如何防止JavaEE6.war文件的反向工程?,jakarta-ee,obfuscation,reverse-engineering,Jakarta Ee,Obfuscation,Reverse Engineering,我们有几个JavaEE6应用程序(.war文件),我们需要保护它们免受逆向工程的影响,但似乎没有太多可用的选项 我喜欢在产品中使用加密的.jar文件(SJAR)的想法,但不清楚JarCrypt/JInstaller是否能在JavaEE6应用程序中工作。类似Glassfish3.1的服务器。加密的SJAR文件必须由本机库使用自定义类加载器解密,因此显然我必须向Glassfish添加自定义类加载器 有人使用过JInstaller/JarCrypt技术吗?它们在应用服务器中工作吗 我还研究了模糊处理,

我们有几个JavaEE6应用程序(.war文件),我们需要保护它们免受逆向工程的影响,但似乎没有太多可用的选项

我喜欢在产品中使用加密的.jar文件(SJAR)的想法,但不清楚JarCrypt/JInstaller是否能在JavaEE6应用程序中工作。类似Glassfish3.1的服务器。加密的SJAR文件必须由本机库使用自定义类加载器解密,因此显然我必须向Glassfish添加自定义类加载器

有人使用过JInstaller/JarCrypt技术吗?它们在应用服务器中工作吗

我还研究了模糊处理,但是对于JavaEE应用程序来说,存在很多问题。我将不得不让所有的web服务和JNDI查找单独进行。使用像a.b.c.MyClass.class这样的东西(即创建log4j记录器)是有问题的。读取日志文件变得很困难。对于所有这些问题,模糊处理几乎无法保护我们的代码

我试过Proguard,但显然是它

还有其他选择吗?或者这些是我所有的选择吗


谢谢。

您是否将这些应用程序发送给将在其基础设施上运行它的第三方?那么加密根本帮不了你,因为JVM不能执行加密的字节码,而且

看看——到目前为止,我还没有使用它的经验,但至少供应商声称它是专门为保护Java Web应用而设计的


如果您的应用程序在Tomcat上运行,您可以将它们编译成本机代码。或者他们需要一个完整的Java EE应用服务器吗?

预防实际上是不可能的。你所能期望的最好的方法是稍微提高障碍物,这将在很大程度上导致一个感觉良好的因素。声称这样做的产品实际上是在兜售

我在过去两年一直致力于软件保护,我已经评估了市场上的大多数欧洲解决方案(对不起,我们避免使用美国解决方案…)

我们将四种技术视为保护解决方案: -混淆 -加密 -编译为本机代码 -转码

除了转码,您可能知道这些技术中的大多数

模糊处理需要做大量的工作,最终保护效果很差。但是,您可以将模糊处理与所有其他技术结合起来

加密很容易被破坏(没有将密钥存储在安全区域的解决方案;即使有加密狗,也很容易检索)。此外,还有一种从内存(或者更直接地说,从加密密钥)窃取解密类的方法

大多数Java开发人员认为编译到本机代码可以提供很好的保护。。。但是,它根本不提供保护;20多年来,反转本机代码已经成为可能,有一些非常熟练的反转工程师可以做到这一点。还有一些很好的C语言反向编译器可以帮助

最后,还有转码(互联网上的信息很少)。这是针对熟练逆向工程师的唯一有效保护。打破它是一种痛苦,因为它需要多年的工作。这不是不可能的,但需要很长很长的时间。。此外,每次发布新补丁时,都必须重新启动反向工程,因为每次发布时,代码都完全不同。有缺点吗?是的,表演。但它可以与所有其他技术结合使用,并且没有部署限制(应用服务器、动态类生成等)或Java限制(反射等)

没有银弹。根据您的目标,可以使用每种解决方案。保护自己不受政府或脚本小孩的伤害是不一样的。。。选择一个与优缺点相关的解决方案,更重要的是,选择一个与相对限制相关的解决方案(比如Jarcryp和web应用程序上的模糊处理)

要回答关于Jarcryp(以及其他加密解决方案)的问题,有可能:您只需要请求Componio(提供JInstaller/Jarcryp)为您提供一个从您使用的应用程序服务器类加载器继承的类加载器


代码转换适用于所有应用服务器。

使用ProGuard对WAR文件进行模糊处理将在很大程度上帮助您加密WAR文件。有关更多详细信息,请访问链接

您是否得到问题的答案?这将是gr8,如果你可以张贴在这里,而这个链接可能会回答这个问题,最好包括在这里的答案的基本部分,并提供参考链接。如果链接页面发生更改,则仅链接的答案可能无效。