我关注Java可执行文件的安全性。它们几乎不提供反编译保护。使用像Java Decompiler这样的工具,即使是小孩也可以反编译类文件以获取原始代码。
除了代码混淆,可以采取哪些措施来保护类文件?加密类加载器仍然是一个神话吗?
答案 0 :(得分:9)
在之前的公司,我们遇到过这样的问题,主要是由管理偏执狂引起的。
首先,您必须了解绝对安全只是一个神话:只要您的程序在不受信任的硬件上运行,无论您使用何种语言,都可以进行反编译。您唯一可以改变的是攻击者了解您的软件/算法/数据的成本。
关于混淆:它可以被认为是第一级保护,因为它使Java代码完全不可读。像ProGuard这样的好混淆器在变量/方法名称中使用禁用字符,从而阻止执行反编译代码。现在,人们可以认为这是一个足够好的安全措施,因为反编译代码不就像运行Jad或其他反编译器并拥有完美的Java代码一样简单。但是,可以理解在此类代码中公开的大多数算法(因为可读代码与可编译的代码非常不同)。
其他安全措施包括:
从这两项安全措施中,我会诚实地选择第一项。实际上,第二种可以通过典型的HTTPS攻击(中间人,日志记录代理等等)来破坏,并且主要将代码置于不受信任的硬件上的不便之处,使它可以从那里借来。
答案 1 :(得分:1)
基本上,你可以用字节码做四件事来保护它免受Java反编译器的侵害:
答案 2 :(得分:0)
您可以在native
中编写所有代码。无论如何都可以进行逆向工程。但是更难。
好的,这不是严格的java解决方案。
正如nfechner在评论中所说的那样写开源应用程序。