【问题标题】:What can done to secure jar files besides obfuscation?除了混淆之外,还能做些什么来保护 jar 文件?
【发布时间】:2011-11-11 14:06:59
【问题描述】:

我担心 Java 可执行文件的安全性。它们几乎没有提供反编译保护。使用 Java Decompiler 之类的工具,即使是孩子也可以反编译类文件以获取原始代码。

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

【问题讨论】:

  • 编写开源软件,你不会有这个问题。 :-D
  • 编写值得付费的代码,愿意付费的人会付费,无论如何不付费的人都不是问题。

标签: java obfuscation classloader protection decompiling


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    在以前的公司中,我们遇到过这样的问题,主要是由于管理偏执。

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

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

    其他安全措施包括:

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

    从这两个安全措施中,老实说,我会选择第一个。事实上,第二个可以被典型的 HTTPS 攻击(中间人、日志代理等)破坏,并且将代码放在不受信任的硬件上会带来主要不便,这使它可能从那里借来。

    【讨论】:

    • 偏执狂的管理层也有这样的要求。建议的解决方案是使用完整的网络应用程序而不是桌面。如果绝对需要,可以使用 java 制作瘦客户端,但我个人将精力花在 web 2.0 界面上。
    • @Pierre 在我们的例子中,它是一个高级交易应用程序,需要大量的显示,即使使用最好的 HTML5 子技术(至少从我的 Java/Swing 开发者历史来看)完全不可想象(我的意思是,即使是最好的 SVG 也无法完成这项工作,甚至不考虑浏览器生态系统的地狱)
    【解决方案3】:

    基本上,您可以对字节码做四件事来保护它免受 Java 反编译器的攻击:

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

    所有内容都在我的文章Protect Your Java Code - Through Obfuscators And Beyond

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 1970-01-01
      • 2012-08-03
      • 2017-04-20
      • 1970-01-01
      • 2011-07-18
      • 2012-10-14
      • 2016-05-07
      • 1970-01-01
      相关资源
      最近更新 更多