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

时间:2011-09-06 18:55:16

标签: java obfuscation classloader protection decompiling

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

除了代码混淆,可以采取哪些措施来保护类文件?加密类加载器仍然是一个神话吗?

3 个答案:

答案 0 :(得分:9)

在之前的公司,我们遇到过这样的问题,主要是由管理偏执狂引起的。

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

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

其他安全措施包括:

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

从这两项安全措施中,我会诚实地选择第一项。实际上,第二种可以通过典型的HTTPS攻击(中间人,日志记录代理等等)来破坏,并且主要将代码置于不受信任的硬件上的不便之处,使它可以从那里借来。

答案 1 :(得分:1)

基本上,你可以用字节码做四件事来保护它免受Java反编译器的侵害:

  • 混淆
  • 软件加密
  • 硬件加密
  • 原生编译

我的文章Protect Your Java Code - Through Obfuscators And Beyond

中涵盖了所有内容

答案 2 :(得分:0)

您可以在native中编写所有代码。无论如何都可以进行逆向工程。但是更难。

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

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