除了混淆之外,还可以做些什么来保护jar文件?

rai*_*wer 5 java obfuscation decompiling protection classloader

我担心Java可执行文件的安全性.它们几乎不提供反编译保护.使用像Java Decompiler这样的工具,即使是小孩也可以反编译类文件以获取原始代码.

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

Rid*_*del 9

在以前的公司,我们有这样的问题,主要是由管理偏执驱动.

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

关于混淆:它可以被认为是第一级保护,因为它使Java代码完全不可读.像ProGuard这样的优秀混淆器在变量/方法名称中使用禁用字符,从而阻止执行反编译代码.现在,人们可以认为这是一个足够好的安全措施,因为反编译代码并不像运行Jad或其他反编译器那样简单,并且具有完美的Java代码.但是,可以理解在这种代码中暴露的大多数算法(因为可读代码与可编译代码非常不同).

其他安全措施包括:

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

从这两个安全措施,我会诚实地选择第一个.实际上,第二种可能会被典型的HTTPS攻击(中间人,日志记录代理等等)破坏,并且将代码放在不受信任的硬件上会带来很大的不便,这使得它可能从那里借用.


sse*_*ano 0

您可以使用 in 编写所有代码native。无论如何,逆向工程是可以完成的。但比较难。

好吧,这不是一个严格的 java 解决方案。

正如 nfechner 在评论中所说,编写开源应用程序。