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

问题描述 投票:0回答:3

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

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

java classloader obfuscation decompiling copy-protection
3个回答
10
投票

在以前的公司我们有这样的问题,主要是管理偏执所致。

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

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

额外的安全措施包括:

    通过使用某种网络服务发送结果和获取结果(使用 REST/SOAP/YouNameIt)在服务器上运行敏感代码
  • 使用 HTTPS 和(可能)额外的安全层从远程服务器加载敏感代码。
从这两个安全措施中,老实说,我会选择第一个。事实上,第二个可以被典型的 HTTPS 攻击(中间人、日志代理等,...)破坏,并且具有将代码放在不受信任的硬件上的

major不便,这使得它可以借用那里。


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

    混淆
  • 软件加密
  • 硬件加密
  • 原生编译
我的文章

Protect Your Java Code - Through Obfuscators And Beyond


0
投票
您可以在

native

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.